@Ron_MacroMaven - correct, as usual! I edited to add a LENGTH= option for insurance.
proc sql;
select distinct country into :list separated by ','
from have;
quit;
%macro op_wants_datasets_split;
%let num=1;
%let dsname=%scan(%bquote(&list),&num,',');
%do %while(&dsname ne);
data %sysfunc(compress(&dsname));
set have;
where country="&dsname";
run;
%let num=%eval(&num+1);
%let dsname=%scan(%bquote(&list),&num,',');
%end;
%mend op_wants_datasets_split;
%op_wants_datasets_split
Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!
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.