【发布时间】:2018-02-08 21:04:13
【问题描述】:
我想将一个宏调用到另一个宏中,这会创建一个我想在另一个宏中使用的宏变量。但输出是“警告:明显的符号引用 TEST33 未解析。”
data Base1;
input v1 v2 v3;
datalines;
1 7 8
;
run;
%let number = 6;
%Macro test1;
proc sql noprint;
select
case when (
case when &number eq 3 then v1
when &number eq 6 then v2
when &number eq 12 then v3
end ) ge 6 then 1 else 0 end into: Test22 from _last_; quit;
%let Test33 = &Test22;
%Mend test1;
options mlogic mprint symbolgen;
%Macro test2;
%test1
%put &= &Test33;
%Mend;
%test2;
【问题讨论】:
-
您是否考虑过使用 CALL EXECUTE 代替?这可能是动态多次执行宏的更好方法。
-
试图找到这个问题的一个像样的重复链接,但我的搜索技巧让我失望了。
-
这是一个范围问题,因此是本地与全局,尽管总体而言更好的实现可能是使用 CALL EXECUTE 或 PROC FCMP。