Previous Page | Next Page

Informats

$VARYINGw. Informat



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 default is 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 the value of length-variable is 0, negative, or missing, SAS reads no data from the corresponding record. A value of 0 for length-variable enables you to read 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 Line 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 Line Results
----+----1----+----2
 
PATEL    CHEMISTRY
PATEL    CHEMISTRY
JOHNSON  GEOLOGY
JOHNSON  GEOLOGY
WILCOX   ART
WILCOX   ART

Previous Page | Next Page | Top of Page