%let workpath=%sysfunc(pathname(work));
libname y01 "&workpath";
libname y02 "&workpath";
libname y03 "&workpath";
data y01.m01;
x=1;y=2; output;
stop;
run;
data y02.m02;
x=3;y=4;
run;
data y03.m03 ;
x=5; y=6;
run;
proc sql;
create table vars as
select distinct libname,memname,name
from dictionary.columns
where upcase(libname) eqt "Y" and upcase(memname) eqt "M"
order by libname,memname,name;
quit;
data tmp;
set vars end=last;
by libname memname;
length merge_code $2000 rename_var $100;
retain merge_code;
rename_var=cats(name,"=",name,"_",libname,"_",memname);
if first.memname then merge_code=strip(merge_code)||" "||strip(libname)||"."||strip(memname)||"(rename=("||strip(rename_var);
else if not last.memname then merge_code=strip(merge_code)||" "||strip(rename_var);
else if last.memname then merge_code=strip(merge_code)||" "||strip(rename_var)||")) ";
if last then call symputx("merge_code",merge_code);
keep libname memname name rename_var merge_code;
run;
%put &merge_code;
data wanted;
merge &merge_code;
run;
|