I have macro which creates multiple datasets and not always the same datasets are created. How can I keep only existing datasets names into a SAS variable and SET all of them together?
For example:
Data A;
A=1;
Run;
Data C;
C=1;
Run;
/*Here we will have an error as the dataset B does not exist*/
DATA All_Data;
Set a b c;
run;
/*My idea was storage all the existing datasets (A and C) and do something like this*/
DATA All_Data;
Set &existing_datasets.;
run;
How do I read the existing datasets and store their names into a variable?
Thanks in advance.
Or use a naming convention. Name all your temporary datasets with _CombinedA, _CombinedB etc
Then when you’re trying to combine the data you can use the wildcard : to set the data.
data want;
set _combined: ;
run;
query dictionary tables into maco var and call the macrovar in set statements- your safe bet
proc sql;
select memname into :dsnlist separated by ' '
from sashelp.vtable /*or dictionary.tables*/
where libname='YOUR_LIBNAME';/*your lib where the datasets are stored */
quit;
data want;
set &dsnlist;
run;
Or use a naming convention. Name all your temporary datasets with _CombinedA, _CombinedB etc
Then when you’re trying to combine the data you can use the wildcard : to set the data.
data want;
set _combined: ;
run;
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!
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.