Hello,
The following program :
data empty_class;
set sashelp.class;
stop;
run;
data _NULL_;
put "1";
eof=0;
do until (eof);
set sashelp.class end=eof;
put name;
end;
put "2";
eof=0;
do until (eof);
set empty_class end=eof;
put name;
end;
put "3";
run;
gives the following output in the log :
1
Alfred
Alice
Barbara
Carol
Henry
James
Jane
Janet
Jeffrey
John
Joyce
Judy
Louise
Mary
Philip
Robert
Ronald
Thomas
William
2
NOTE: There were 19 observations read from the data set SASHELP.CLASS.
NOTE: There were 0 observations read from the data set WORK.EMPTY_CLASS.
NOTE: DATA statement used (Total process time):
real time 0.00 seconds
cpu time 0.00 seconds
Why is "3" not displayed and how can it be fixed ?
Thanks !
Trying to read from an empty dataset immediately throws you to the end of the data step, bypassing all remaining statements.
Compare this:
data _null_;
put 'before';
set empty_class;
put 'after';
run;
Trying to read from an empty dataset immediately throws you to the end of the data step, bypassing all remaining statements.
Compare this:
data _null_;
put 'before';
set empty_class;
put 'after';
run;
Because the SET statement ends the DATA step because there are no observations to read in your second do until loop
Thank you @Kurt_Bremser and @PeterClemmensen.
I thought the set on sashelp.class would avoid early termination.
April 27 – 30 | Gaylord Texan | Grapevine, Texas
Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss.
Register now and lock in 2025 pricing—just $495!
Still thinking about your presentation idea? The submission deadline has been extended to Friday, Nov. 14, at 11:59 p.m. ET.
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.