我遇到SAS问题。更确切地说,调用宏,这是在另一个宏内部。这是一个例子。
data TEST_1;
do i = 1 to 100;
a=i**2;
output;
end;
run;
data TEST_2;
do i = 1 to 100;
b=i**3;
output;
end;
run;
%macro macro_in(file_a);
data result1;
set &file_a;
c=a+1;
run;
%mend;
%macro_in(TEST_1);
%macro macro_out(file_b);
data result2;
set &file_b._2;
d=a-1;
run;
data _null_;
do i = 1 to 2;
call execute(COMPRESS('%macro_in(' || &file_b || '_' || i || ')'));
output;
end;
run;
%mend;
%macro_out(TEST);
第一个宏工作完全正常,但是变量file_b有一个小问题我是第二个宏(代码不能将它用作内部宏的参数)。谢谢你的帮助!
答案 0 :(得分:2)
从macro_in
致电macro_out
您不需要数据步骤时,您可以使用宏语言:
%macro macro_out(file_b);
data result2;
set &file_b._2;
d=a-1;
run;
%do i = 1 %to 2;
%macro_in(&file_b._&i);
%end;
%mend;