我已经简化了很多,所以可以重复
%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');
它应该在日志中打印紫色但我收到错误 我得到一个错误 - 我怀疑当我调用宏二时,我需要从宏中分配宏变量。
答案 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
。