DATA Step, Macro, Functions and more

Create a dataset with long strings

Accepted Solution Solved
Reply
Contributor
Posts: 30
Accepted Solution

Create a dataset with long strings

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


Accepted Solutions
Solution
‎01-31-2016 10:18 AM
Super User
Posts: 7,761

Re: Create a dataset with long strings

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;
---------------------------------------------------------------------------------------------
Maxims of Maximally Efficient SAS Programmers

View solution in original post


All Replies
Super User
Posts: 19,770

Re: Create a dataset with long strings

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;
Solution
‎01-31-2016 10:18 AM
Super User
Posts: 7,761

Re: Create a dataset with long strings

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;
---------------------------------------------------------------------------------------------
Maxims of Maximally Efficient SAS Programmers
Contributor
Posts: 30

Re: Create a dataset with long strings

Posted in reply to KurtBremser
Thank you! Got it now. Smiley Happy
☑ This topic is solved.

Need further help from the community? Please ask a new question.

Discussion stats
  • 3 replies
  • 372 views
  • 2 likes
  • 3 in conversation