這是一個玩具示例,以幫助我解決更大的問題。它主要涉及在引用更大的宏變量名稱時使用%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