Say in my main code I have this code block:
%macros hi5;
%put hi five;
%mend;
%macros helloworld;
%put hello world;
%mend;
How do I, in SAS Enterprise Guide, display something like this? (via log or via a SAS table)
These are the user defined user macros:
hi5
hello world
(the aim is so that user is able to know what macros are already available to them).
Note: the %put _ALL_
only list all macros variables, not macros (e.g. built with %macros and %mend
.)
You can get there via PROC CATALOG
, or via dictionary.catalogs
. The latter will work even if you don't know where they're stored.
proc sql;
select *
from dictionary.catalogs
where objtype='MACRO';
quit;
That will include the predefined macros in SASHELP
, which you can exclude using where libname ne 'SASHELP'
.
When you are running SAS using Enterprise Guide, SAS/Studio or other new fangled access methods the compiled macros that would previously appear in WORK.SASMACR
catalog now end up in WORK.SASMAC1
. At least in the environments I have explored.
I'm using proc catalogs
proc catalog cat=xxxxx.sasmacr;contents;run;
来源:https://stackoverflow.com/questions/37143108/how-to-list-all-available-user-defined-macros-in-sas-enterprise-guide