29 %macro mp_getmaxvarlengths(
    31    ,outds=work.mp_getmaxvarlengths 
    34 %local vars x var fmt;
    35 %let vars=%getvars(libds=&libds);
    38 create table &outds (rename=(
    39     %
do x=1 %to %sysfunc(countw(&vars,%str( )));
    44     %do x=1 %to %sysfunc(countw(&vars,%str( )));
    45       %let var=%scan(&vars,&x);
    47       %if %mf_getvartype(&libds,&var)=C %then %do;
    48         max(length(&var)) as _&x
    51         %let fmt=%mf_getvarformat(&libds,&var);
    53         %if %str(&fmt)=%str() %then %do;
    54           max(length(cats(&var))) as _&x
    57           max(length(put(&var,&fmt))) as _&x
    63   proc transpose data=&outds
    64     out=&outds(rename=(_name_=name COL1=ACTMAXLEN));