This is probably a question that has been asked many times and answered, but I'm not finding the info I want. I want to do something like the following and would love some advice (or even links to the question being answered). I basically want to be able to do something like this while being able to just list multiple variables at the top (like %let variable = x, y, z, etc.). So I want it to be able to loop through multiple variables and perform the same procedures and give the different outputs.
%let variable = x;
/*then do data manipulations, etc*/
proc export data = xyz outfile = "C:\Users\person\Desktop\'&variable'.dta" replace;
run;
You can do something along these lines
data callstack;
length string $500;
do var='x', 'y', 'z';
string=compbl(cats(
"
proc export data = xyz outfile = 'C:\Users\person\Desktop\", var, ".dta' replace;
run;
"
));
output;
call execute(string);
end;
run;
Thanks for the response. However, there are hundreds of lines of data manipulations that I perform on each variable, so using call execute gets very messy very quickly. Do you have any other suggestions?
Then you need a macro with nested %DO loops for the multiple variables. Since you have not provided any more details, there's really not much detail I can provide back to you.
Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9. Sign up by March 14 for just $795.
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.