Dear Sas experts,
I am trying to create a simple dataset with 2 char variables, one of each is actually a long string with unpredicted length.
data myLine;
infile datalines delimiter='|';
input myLine $75. lineType $20.;
datalines;
L1. This is my very long line of unpredicted length. | line_one
L2. This is my second very long line of unpredicted length.| line_simple
L3. This is my third, third, third very long line of unpredicted length.| line_another
;
run;
However, the dataset looks weird, e.g.
myLine lineType
This is my very long line of unpredicted length. | line one
The results really depends on the length of the first column (myLine). The numbers .75 and .20 are arbitrary. When I put no numbers (just $) the lines are cut after 8 symbols, I believe.
What is the right way to allow unlimited length (or at least limited by 200 symbols) for the line and to create reliable column values.
Thank you
input myLine $75. lineType $20.;
This is called formatted input. SAS will read exactly the number of characters into a column that are specified, regardless of delimiters.
If you want to specify maximum lengths for strings, but have variable lengths in the data (and want to honor the delimiters), do this:
informat myLine $75. lineType $20.;
input myLine lineType;
Use informats to specify the maximum length possible. Yes, the default length for a SAS character variable is 8.
data myLine;
informat myline $200. lineTYpe $20.;
infile datalines delimiter='|';
input myLine lineType ;
datalines;
L1. This is my very long line of unpredicted length. | line_one
L2. This is my second very long line of unpredicted length.| line_simple
L3. This is my third, third, third very long line of unpredicted length.| line_another
;
run;
input myLine $75. lineType $20.;
This is called formatted input. SAS will read exactly the number of characters into a column that are specified, regardless of delimiters.
If you want to specify maximum lengths for strings, but have variable lengths in the data (and want to honor the delimiters), do this:
informat myLine $75. lineType $20.;
input myLine lineType;
SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.