Hello
Data set QQQ doesn't exist.
Why the following 2 codes give different results.
In way1 nothing happened (It is correct because data set QQQ doesnt exists)
In way2 a data set wanted is created with following information
/****Way1***/
%MACRO if_exists_a;
%if %sysfunc(exist(QQQ)) %then %do;
Data wanted;
SET QQQ;
Run;
%end;
%MEND;
%if_exists_a;
/***Way2***/
%MACRO if_exists_b;
%if %sysfunc(exist(QQQ)) %then %do;
QQQ;
%end;
%MEND;
Data wanted;
set %if_exists_b;
Run;
In way 2, the data step will always run and create an empty dataset if QQQ is not there.
At @ChrisNZ wrote, see the log. And probably, the best way to see the reason why it "works as coded" would be to run it in a new fresh SAS session:
1 2 3 /***Way2***/ 4 %MACRO if_exists_b; 5 %if %sysfunc(exist(QQQ)) %then %do; 6 QQQ; 7 %end; 8 %MEND; 9 Data wanted; 10 set %if_exists_b; ERROR: There is not a default input data set (_LAST_ is _NULL_). 11 Run;
Bart
Catch the best of SAS Innovate 2025 — anytime, anywhere. Stream powerful keynotes, real-world demos, and game-changing insights from the world’s leading data and AI minds.
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.