/*just for reference*/
data a;
length x $20. y$20.;
input x$ y$;
cards;
a b
aaa bbbbbbbbbbbbbbbbbb
;
run;
%macro maxlen(lib=,mem=,out=);
proc sql noprint;
select name into: varlist separated by ' '
from dictionary.columns
where libname=%upcase("&lib.") and memname=%upcase("&mem.");
quit;
%let nvar=%sysfunc(countw(&varList));
%let varlast=%scan(&varList, &nvar.);
proc sql;
create table &out. as
select
%do i =1 %to %eval(&nvar.-1);
%let var =%scan(&varList, &i);
max(length(&var.)) as &var.len,
%end;
max(length(&varlast.)) as &varlast.len
from a;
quit;
%mend maxlen;
%maxlen(lib=work,mem=a,out=test)


雷达卡




京公网安备 11010802022788号







