这是一个玩具示例,以帮助我解决更大的问题。它主要涉及在引用更大的宏变量名称时使用%eval()宏。解决包含宏变量名称%eval的宏,SAS
我已经创建了一个宏变量x_2,它使用循环'&它'的值,该变量已成功创建,可以通过最终输出看到,但是我只能将它放到日志中而不进行评估它使用+ 1,当使用大于1的循环时,我需要这样做。
它似乎先解析x_先给出警告,然后再评估x_2作为整体并给出输出。
我知道这只是一个关于如何正确引用宏的问题,但我找不到任何使用评估作为宏变量名称一部分的示例。
谢谢。
%macro testing;
%DO it = 1 %TO 1;
data dataset;
s=100;
t=99;
run;
data _null_;
set dataset;
if s = 100 then do;
call symput("x_%eval(&it+1)",t);
end;
run;
%put "&x_%eval(&it+1)";
%put &x_2;
%END;
%mend testing;
%testing;
日志输出
MLOGIC(TESTING): %PUT "&x_%eval(&it+1)"
WARNING: Apparent symbolic reference X_ not resolved.
SYMBOLGEN: Macro variable IT resolves to 1
SYMBOLGEN: Macro variable X_2 resolves to 99
" 99"
MLOGIC(TESTING): %PUT &x_2
SYMBOLGEN: Macro variable X_2 resolves to 99
99
MLOGIC(TESTING): %DO loop index variable IT is now 2; loop will not iterate again.
MLOGIC(TESTING): Ending execution.
谢谢你们,我一直在尝试各种各样的组合方式(类似于昆汀和盛林,他们实际上很成功),但我并没有想过把它分开! – AP30