27%macro mf_getfmtlist(libds
30%local out dsid nvars x rc fmt;
33%let dsid=%sysfunc(open(&libds));
38 %let nvars=%sysfunc(attrn(&dsid,NVARS));
41 %let fmt=%sysfunc(varfmt(&dsid,&x));
42 %
if %quote(&fmt) ne %quote() %then %let fmt=%mf_getfmtname(&fmt);
45 %
if %sysfunc(vartype(&dsid, &x))=C %then %let fmt=$CHAR;
49 %
if %sysfunc(indexw(&out,&fmt,%str( )))=0 %then %let out=&out &fmt;
51 %let rc=%sysfunc(close(&dsid));
54 %put &sysmacroname: Unable to open &libds (rc=&dsid);
55 %put &sysmacroname: SYSMSG= %sysfunc(sysmsg());
56 %let rc=%sysfunc(close(&dsid));
59%
do;%unquote(&out)%end;