BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
pchen002
Obsidian | Level 7

Given the raw data file EMPLOYEE:

----I----1 0---I----20---I----30
Ruth 39 11
Jose 32 22
Sue 30 33
John 40 44
The following SAS program is submitted:
data test;
infile ‘employee’;
input employee_name $ 1-4;
if employee_name = ‘Ruth’ then input idnum 10-11;
else input age 7-8;
run;
What value does the variable IDNUM contain when the name of the employee is “Ruth”?

 

Ans is 22? I do not understand why. Thanks

1 ACCEPTED SOLUTION

Accepted Solutions
Shmuel
Garnet | Level 18

Having the code: "INPUT IDNUM 10-11;" means get idnum from positions 10-11.

 

Having "INPUT NAME 1-4 @";   you stay on current row with name=RUTH.

Without the @ character, sas skips to the next row where name=JOSE then

reads positions 10-11 with idnum=22;

View solution in original post

7 REPLIES 7
Reeza
Super User

 No trailing @. 

Each INPUT statement reads from a new line by default. To keep it on the same line you need the trailing @. 

pchen002
Obsidian | Level 7

Sorry I still don't quite get it, still a noobie for SAS!!

Shmuel
Garnet | Level 18

Compare next code to the one you used:

 

data test;
infile ‘employee’;
input employee_name $ 1-4  @;    /* <<<< @ added <<< */
if employee_name = ‘Ruth’ then input idnum 10-11;
else input age 7-8;
run;

You got 22 taken from next row.

The @ character makes sas stay on current row up to next INPUT ...; staement (without @).

pchen002
Obsidian | Level 7
I understand the @ part already, but where do they start reading the data for idnum 10-11(not sure which column they read to result the observation=22)?
Shmuel
Garnet | Level 18

Having the code: "INPUT IDNUM 10-11;" means get idnum from positions 10-11.

 

Having "INPUT NAME 1-4 @";   you stay on current row with name=RUTH.

Without the @ character, sas skips to the next row where name=JOSE then

reads positions 10-11 with idnum=22;

pchen002
Obsidian | Level 7
Understood!thanks!!
error_prone
Barite | Level 11
SAS reads from the columns you specified in
"then input idnum 10-11;"

hackathon24-white-horiz.png

2025 SAS Hackathon: There is still time!

Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!

Register Now

How to Concatenate Values

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.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 7 replies
  • 2627 views
  • 1 like
  • 4 in conversation