如何使用从另一个宏中的宏变量返回的值

时间:2015-02-16 01:41:17

标签: sas sas-macro

我已经简化了很多,所以可以重复

%macro macro_one(dt2);
  %let var1 = &dt2;
%mend;

然后我有另一个宏,我想在宏2中使用宏一的输出

%macro macro_print(dt2);
  /*call macro 1*/
  %macro_one(&dt2);
  %put &var1;
%mend;

/ 调用宏 /

%macro_print('purple');

它应该在日志中打印紫色但我收到错误 我得到一个错误 - 我怀疑当我调用宏二时,我需要从宏中分配宏变量。

1 个答案:

答案 0 :(得分:2)

首先,我怀疑你的代码和这里有拼写错误。定义宏的正确方法是:

%macro blah(x);
<do stuff>
%mend;

%macro_blah(x);
<do stuff>
%mend;

宏在%macro_one中创建,默认为本地范围。您可以通过声明%global来解决此问题。

%macro macro_one(dt2);
   %global var1;
   %let var1=&dt2;
%mend;

另外,在%put中使用put而不是%macro_two