Chapter Contents

Previous

Next
$VARYINGw.

$VARYINGw.


Reads character data of varying length

Valid: in a DATA step
Category: Character


Syntax
Syntax Description
Details
Examples
Example 1: Obtaining a Current Record Length Directly
Example 2: Obtaining a Record Length Indirectly

Syntax

$VARYINGw. length-variable

Syntax Description

w
specifies the maximum width of a character field for all the records in an input file.
Default: 8 if the length of the variable is undefined; otherwise, the length of the variable
Range: 1-32767

length-variable
specifies a numeric variable that contains the width of the character field in the current record. SAS obtains the value of length-variable by reading it directly from a field that is described in an INPUT statement or by calculating its value in the DATA step.

Requirement: You must specify length-variable immediately after $VARYINGw. in an INPUT statement.
Restriction: Length-variable cannot be an array reference.
Tip: If length-variable is less than 1 or is missing, SAS reads no data from the corresponding record. This enables you to read both zero-length records and fields. If length-variable is greater than 0 but less than w, SAS reads the number of columns that are specified by length-variable. Then SAS pads the value with trailing blanks up to the maximum width that is assigned to the variable. If length-variable is greater than or equal to w, SAS reads w columns.


Details

Use $VARYINGw. when the length of a character value differs from record to record. After reading a data value with $VARYINGw., the pointer's position is set to the first column after the value.


Examples

Example 1: Obtaining a Current Record Length Directly


input fwidth 1. name $varying9. fwidth;

Data Lines* Results

----+----1


5shark

shark

3sunfish

sun

8bluefish

bluefish 
*Notice the result of reading the second data line.


Example 2: Obtaining a Record Length Indirectly

Use the LENGTH= option in the INFILE statement to obtain a record length indirectly. The input data lines and results follow the explanation of the SAS statements.


data one;
   infile file-specification length=reclen;
   input @;
   fwidth=reclen-9;
   input name $ 1-9
         @10 class $varying20. fwidth;
run;

The LENGTH= option in the INFILE statement assigns the internally stored record length to RECLEN when the first INPUT statement executes. The trailing @ holds the record for another INPUT statement. Next, the assignment statement calculates the value of the varying-length field by subtracting the fixed-length portion of the record from the total record length. The variable FWIDTH contains the length of the last field and becomes the length-variable argument to the $VARYING20. informat.

Data Lines Results

----+----1----+----2

PATEL    CHEMISTRY

PATEL    CHEMISTRY

JOHNSON  GEOLOGY

JOHNSON  GEOLOGY

WILCOX   ART

WILCOX   ART


Chapter Contents

Previous

Next

Top of Page

Copyright © 1999 by SAS Institute Inc., Cary, NC, USA. All rights reserved.