filename outfile '{ob external-file}';
%macro delim(lib,dsn,out);
proc contents data=&lib..&dsn
out=_temp_(keep=name type npos) noprint;
run;
proc sort data=_temp_;
by npos;
run;
data _null_;
set _temp_ end=eof;
call symput('var'||(left(put(_n_,5.))),name);
call symput('typ'||(left(put(_n_,5.))),
left(put(type,8.)));
if eof then
call symput('total',left(put(_n_,8.)));
run;
data _null_;
file &out noprint;
set &lib..&dsn;
format _numeric_ best12.;
put
%do i=1 %to &total;
%if &&typ&i=1 %then %do; /* if numeric variable */
&&var&i +(-1) ','
%end;
%else %do; /* if character variable */
"'" &&var&i +(-1) "',"
%end;
%end;
+(-1) ' '; /* remove the extra comma at the end */
run;
%mend delim;
%delim(sasuser,houses,outfile)