Macros 解析SAS宏参数
我正在寻找一种方法来解析已定义SAS宏的参数。我知道在哪里可以找到会话定义的宏(WORK.SASMACR/WORK.SASMAC1),但现在我想进一步了解并确定它的参数。例如:Macros 解析SAS宏参数,macros,sas,Macros,Sas,我正在寻找一种方法来解析已定义SAS宏的参数。我知道在哪里可以找到会话定义的宏(WORK.SASMACR/WORK.SASMAC1),但现在我想进一步了解并确定它的参数。例如: %macro test(val1, val2); %put &val1 &val2; %mend test; /* With proc catalog I can find the defined macro... */ proc catalog cat=work.SASMAC1; con
%macro test(val1, val2);
%put &val1 &val2;
%mend test;
/* With proc catalog I can find the defined macro... */
proc catalog cat=work.SASMAC1;
contents out=macros;
run;
/* How to create function/macro which takes the macro name and returns its arguments, eg:*/
%resolveMacroParams(test);
/* ...returns: */
val1 val2
任何帮助都将不胜感激
亲切问候,,
Herman您希望在函数最后一次调用时将类似值作为参数提供给函数吗 宏的定义不存储其值。宏参数位于该宏的本地范围内,其值不在宏结束后的任何位置 在执行过程中,您可以在dictionary.macros中找到它: 因此,要保留它,您必须更改宏,如下所示:
%macro test(val1, val2);
proc sql;
create table TEST_VALS as
select * from dictionary.macros
where scope='TEST'
;
quit;
%mend test;
%test(11, 22);
或者将这些值放入一些全局宏变量。如果宏是使用源选项编译的,则可以执行此操作。以下内容为您提供了一个包含宏文本的数据集,您可以从中轻松获取参数:
libname dummy 'c:\temp\';
options mstored sasmstore=dummy;
%macro test(val1, val2)/store source;
%put &val1 &val2;
%mend test;
filename mymacr temp;
%copy TEST/lib=dummy source out=mymacr;
data test;
infile mymacr truncover;
input @1 line $100.;
run;