Reads character data of varying length.
Valid: |
in a DATA step
|
Category: |
Character
|
$VARYINGw. length-variable
|
-
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. |
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.
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. |
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
|
Copyright © 2011 by SAS Institute Inc., Cary, NC, USA. All rights reserved.