Hello
Lets say that I want to find all data sets in library R_R that start with name "ALERTSNEG_"
For example: ALERTSNEG_202401 , ALERTSNEG_202402, ALERTSNEG_202403 and so on
Lets say that I want to create a macro var that concatenated these data sets names.
My question:
what is the target of writing the code : %let memlist=_null_;
The code can also run without it.
Can anyone explain what is the benefit of this code?
proc sql noprint ;
%let memlist=_null_;
select catx('.',libname,memname)
into :memlist separated by ' '
from dictionary.members
where libname='R_R'
and (memname like 'ALERTSNEG_%')
;
quit;
%put &memlist;
If there's no dataset satisfying the WHERE requirement, PROC SQL would not create the macro variable, causing ERRORs later on when you use it. The %LET avoids this.
Probably just to ensure that memlist does not contain anything from the previous run of the code. It works perfectly fine without it though.
If there's no dataset satisfying the WHERE requirement, PROC SQL would not create the macro variable, causing ERRORs later on when you use it. The %LET avoids this.
Is it equivalent to write
%let memlist=_null_;
before the proc sql?
%let memlist=_null_;
proc sql noprint ;
select catx('.',libname,memname)
into :memlist separated by ' '
from dictionary.members
where libname='R_R'
and (memname like 'ALERTSNEG_%')
;
quit;
%put &memlist;
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.