0
我正在调查由我的高级编写的一个SAS宏代码进程。我无法理解所写的代码。在宏代码的一个它这个说法%macro2
与其他一些计算写入后写成了解SAS宏代码
%macro1(macro2(pm1, pm2, pm3))
。
任何一个可以帮助我理解上述
我正在调查由我的高级编写的一个SAS宏代码进程。我无法理解所写的代码。在宏代码的一个它这个说法%macro2
与其他一些计算写入后写成了解SAS宏代码
%macro1(macro2(pm1, pm2, pm3))
。
任何一个可以帮助我理解上述
首先提到的代码的处理,确保你的语法,您在计算器上提交是正确的 - 你有一个未封闭的括号和代码段应如下像这样:
%macro1(macro2(pm1, pm2, pm3))
你提出的代码很容易实现。
%macro t1(arg);
%put NOTE: t1;
%&arg.;
%mend t1;
%macro t2(arg2);
%put NOTE: t2;
%put NOTE: Arg 2 = &arg2.;
%mend t2;
%t1(t2(test));
输出:
NOTE: t1
NOTE: t2
NOTE: Arg 2 = test
基本上,要传递的字符串来调用的内宏为参数传递给外宏。您可以通过符号&符号来引用内部宏。在上面的代码片段中,我创建了两个宏和T1宏引用这样的说法:
%&arg.;
它解析为:
MLOGIC(T1): Beginning execution.
MLOGIC(T1): Parameter ARG has value t2(test)
MLOGIC(T1): %PUT NOTE: t1
SYMBOLGEN: Macro variable ARG resolves to t2(test)
MLOGIC(T2): Beginning execution.
MLOGIC(T2): Parameter ARG2 has value test
并允许代码正常运行 - 调用宏作为另一个宏的参数。