如何在另一个宏中使用从宏变量返回的值
How do I use a value that is returned from a Macro Variable in another macro
我已经简化了很多所以可以重复
%macro macro_one(dt2);
%let var1 = &dt2;
%mend;
然后我有另一个宏,我想在宏 2 中使用宏 1 的输出
%macro macro_print(dt2);
/*call macro 1*/
%macro_one(&dt2);
%put &var1;
%mend;
/调用宏/
%macro_print('purple');
它应该在日志中打印紫色,但我收到错误
但是我收到一个错误 - 我怀疑我需要在调用宏二时从宏一分配宏变量。
首先,我怀疑您的代码与此处有错别字。定义宏的正确方法是:
%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;
此外,在 %macro_two
中使用 %put
而不是 put
。
我已经简化了很多所以可以重复
%macro macro_one(dt2);
%let var1 = &dt2;
%mend;
然后我有另一个宏,我想在宏 2 中使用宏 1 的输出
%macro macro_print(dt2);
/*call macro 1*/
%macro_one(&dt2);
%put &var1;
%mend;
/调用宏/
%macro_print('purple');
它应该在日志中打印紫色,但我收到错误 但是我收到一个错误 - 我怀疑我需要在调用宏二时从宏一分配宏变量。
首先,我怀疑您的代码与此处有错别字。定义宏的正确方法是:
%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;
此外,在 %macro_two
中使用 %put
而不是 put
。