我有一個關於解決SAS中宏變量的問題。我有以下代碼,這是一個更大塊的簡化版本。出於實際原因,我無法更改代碼的結構。解決SAS中的宏變量問題
%let a = x1 x2 x3;
%let b = y1 y2 y3;
%let c = a b;
%macro test (input);
%local i;
%let string_c = %str(&input);
%do i=1 %to 2;
%put &%qscan(&string_c, &i); /* ? */
%end;
%mend test;
%test(&c);
在步驟?以上,我想解決A和B作爲宏觀變量和有系統打印出
x1 x2 x3
然後
y1 y2 y3
然而,上面的代碼不reslove A和B作爲宏觀變量和系統打印出來
&a
&b
我想知道是否有解決這個問題的辦法。
非常感謝!
有趣的答案。你可以添加一些解釋爲什麼這會起作用,特別是爲什麼%unquote()在這裏很有用,即使你用%str()和%qscan()刪除了引用。例如,它有助於這個簡單的測試案例: %macro x; x%修補; %let x = 1; %put%unquote(&&%x); – Quentin
謝謝Shenglin。它的工作原理!後續問題類似於Quentin的原因:) – frostman
沒有%unquote,SAS將a/b解釋爲文本加上&,而不是宏變量&a/&b,使用%unquote,強制將&和a/b粘合在一起並恢復值的正常標記。 –