как перечислить все доступные пользовательские макросы в SAS Enterprise Guide?

Скажем, в моем основном коде у меня есть этот блок кода:

%macros hi5;
 %put hi five;
%mend;

%macros helloworld;
  %put hello world;
%mend;

Как мне в SAS Enterprise Guide отобразить что-то подобное? (через журнал или через таблицу SAS)

These are the user defined user macros:

hi5
hello world

(цель состоит в том, чтобы пользователь мог узнать, какие макросы уже доступны ему).

Примечание: %put _ALL_ перечисляет только все переменные макросов, а не макросы (например, созданные с помощью %macros and %mend.)


person Atlas7    schedule 10.05.2016    source источник
comment
Все скомпилированные макросы SAS хранятся в каталоге с именами SASMACR, который сохраняется в WORK с типом записи МАКРО. Я бы попробовал PROC CATALOG , никогда не пробовал использовать это. Надеюсь, поможет!   -  person Gaurav Taneja    schedule 10.05.2016
comment
Привет, Гаурав (спасибо за предложение!), я пробовал proc catalog cat=work.sasmacr; contents out=_temp; quit; - на SAS EG написано, что work.sasmacr не существует. (На моем старом рабочем месте это работало на базе SAS. На новом рабочем месте я использую Enterprise Guide без базового SAS).   -  person Atlas7    schedule 10.05.2016
comment
Вместо work.sasmacr попробуйте SASHELP.VCATALG (явно скопировано из communities.sas.com/t5/Base-SAS-Programming/ )   -  person Gaurav Taneja    schedule 10.05.2016


Ответы (3)


Вы можете добраться туда через PROC CATALOG или через dictionary.catalogs. Последние будут работать, даже если вы не знаете, где они хранятся.

proc sql;
  select * 
    from dictionary.catalogs
    where objtype='MACRO';
quit;

Это будет включать предопределенные макросы в SASHELP, которые вы можете исключить с помощью where libname ne 'SASHELP'.

person Joe    schedule 10.05.2016
comment
Потрясающий!!! Я запускаю SQL-запрос с добавленным where ... AND libname ne "SASHELP" - теперь он показывает мне определенный пользователем макрос. (Раньше я не знал об этом dictionary table! Сегодня узнал кое-что новое, спасибо!) - person Atlas7; 10.05.2016

Когда вы запускаете SAS с помощью Enterprise Guide, SAS/Studio или других новых запутанных методов доступа, скомпилированные макросы, которые ранее отображались в каталоге WORK.SASMACR, теперь заканчиваются в WORK.SASMAC1. По крайней мере, в среде, которую я исследовал.

person Tom    schedule 10.05.2016

Я использую каталоги proc

proc catalog cat=xxxxx.sasmacr;contents;run;
person stallingOne    schedule 20.06.2018