Create input/output data table list generated by a macro program

Reply
Contributor
Posts: 44

Create input/output data table list generated by a macro program

inHey People,

I hope all is well. I am not expert in SAS; but strive to definitely learn more of this program.

MY SITUATION:

I am currently undertaking a project with deals with a lot a datasets placed under different libraries. I have created multiple %macro definitions which in turn has generated many output tables and utilised many input tables. These tables are saved under different libraries.

MY ISSUE:

My computer slows down when these datafiles are created. Clearing unwanted tables in every macro program session speedens up computational response.

My QUERY:

Is there a way to generate a list of input and output tables created either using PROC SQL or DATA steps by EACH MACRO PROGRAM? Each MACRO PROGRAM has multiple %macros, once again from code readability purposes. Prefixing/suffixing the datafiles with 'IN' or 'OUT' statements does not help. This would help me in data management. All help is appreciated. thanks. seb

Esteemed Advisor
Esteemed Advisor
Posts: 7,203

Re: Create input/output data table list generated by a macro program

Have a look at SASHELP.VCOLUMNS/VTABLES.  You can create lists from there.

Esteemed Advisor
Esteemed Advisor
Posts: 7,203

Re: Create input/output data table list generated by a macro program

Just to quantify myself, sorry for the brief post, am in meetings.  What I would suggest is that you have some kind of logical assignment, so either have a set of libraries which hold you datasets, or have a fixed pre-fix you could search for.  Then its just a matter of querying the SAS metadata tables - SASHELP, or as Kurt has mentioned DICTIONARY in SQL.  Pull these out as a list of datasets to evaluate.  To remove them something like:

data _null_;

     set sashelp.vtable (where=(libaname="STORE")) end=last;

     if _n_=1 then call execute('proc datasets library=store; delete ');

     call execute(strip(NAME));

     if last then call execute(';quit;');

run;

Esteemed Advisor
Posts: 6,646

Re: Create input/output data table list generated by a macro program

Or, in proc sql, use DICTIONARY.TABLES.

---------------------------------------------------------------------------------------------
Maxims of Maximally Efficient SAS Programmers
Grand Advisor
Posts: 9,576

Re: Create input/output data table list generated by a macro program

DICTIONARY.MEMBERS would be faster .

Ask a Question
Discussion stats
  • 4 replies
  • 293 views
  • 0 likes
  • 4 in conversation