--- %%NOBANNER%% -->
/* Generate SAS files for All the Tables in a library */
%macro libcode (saslib, codefile, codetype);
%if (%index(%sysfunc(pathname(saslib)), %quote(\)) or
%index(%sysfunc(pathname(saslib)), %quote(/))) %then %do;
proc contents data=&saslib.._all_ out = libmem(keep= memname varnum) position noprint; run;
%end;
%else %if (%quote(%sysfunc(pathname(saslib))) ne) %then %do;
proc sql;
create table libmem as
select distinct TABLE_NAME as memname
from dvdbms.all_tables;
data libmem;
set libmem;
format varnum best12.;
dsid=open("%trim(%left(&saslib))."||memname);
if dsid then do;
varnum=attrn(dsid,'NVARS');
rc=close(dsid);
end;
else delete;
drop dsid rc;
run; quit;
%end;
proc sort data=libmem nodupkey; by memname; where memname not in('CORRECT','DIRLIST','ENROLL','INVEST',
'JOURNAL','PAGES','RSLVLOG','STATLOG','TRACK','TRANJRN1','TRANJRN2','_TRACK_');
run;
data _null_;
set libmem end=last;
call symput('d'||left(_N_), memname);
if last then call symput('numrec', _N_);
run;
%do i = 1 %to &numrec;
%codegen(%trim(%left(&saslib)).%trim(%left(&&d&i)), &codefile, &codetype);
%end;
%mend libcode;