|
Not macro.
proc format;
value yf 1="m"
2="f";
run;
data aaa;
input x z$ y b$ a;
label y="sex";
format y yf.;
attrib a format=MMDDYY10.;
cards;
1 b 1 c 1
2 e 2 d 2
;
run;
proc sql;
select name into:varslist separated by ' ' from sashelp.vcolumn where libname='WORK' and memname='AAA';
data _null_;
set sashelp.vcolumn;
where libname='WORK' and memname='AAA';
if type='num' then do;
if not missing(format) then call symput("fmt",trim(left(format)));
else call symput("fmt",'8.');
call symput("lab",trim(left(label)));
call execute(
'data aaa;
retain &varslist;
set aaa ;
_'||name||'=put( '||strip(name)||',&fmt);
drop '||name||';
label _'||strip(name)||'="&lab ";
rename _'||strip(name)||'='||strip(name)||';
run;');
end;
run;
|