Something similar to this code may work:
proc sql noprint; select count(distinct memname) into :cnt from dictionary.columns where libname = "WORK" and substr(upcase(memname),1,2) = "_O";
select distinct catx(".",libname,memname), catx(".",libname,trim(memname)||'_out') into :dsnames1 - :dsnames%trim(%left(&cnt)),:dsout1 - :dsout%trim(%left(&cnt)) from dictionary.columns where libname = "WORK" and substr(upcase(memname),1,2) = "_O"; quit;
%macro split; %do i=1 %to &cnt; data &&dsout&i; set &&dsnames&i; where ID=12345; run; %end;
%mend;
%split;
... View more