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;
Registration is now open for SAS Innovate 2025 , our biggest and most exciting global event of the year! Join us in Orlando, FL, May 6-9.
Sign up by Dec. 31 to get the 2024 rate of just $495.
Register now!
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.