@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
April 27 – 30 | Gaylord Texan | Grapevine, Texas
Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss.
Register now and lock in 2025 pricing—just $495!
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.