2017-09-26 80 views
2

這應該很簡單,但我無法弄清楚:有些情況下我需要從表格的內容創建一個宏變量,並且它們有時包含&符號&)作爲文本的一部分。當我調用宏變量時,如何讓SAS忽略&符號?例如,下面的代碼...SAS:在&的宏變量中留下「&」符號

data _null_; 
test="Amos&Andy"; 
call symputx("testvar",test); 
run; 
%put testvar=&testvar; 

...這個寫入日誌:

28 data _null_; 
29 test="Amos&Andy"; 
WARNING: Apparent symbolic reference ANDY not resolved. 
30 call symputx("testvar",test); 
31 run; 

NOTE: DATA statement used (Total process time): 
    real time   0.00 seconds 
    cpu time   0.00 seconds 


WARNING: Apparent symbolic reference ANDY not resolved. 
32 %put testvar=&testvar; 
testvar=Amos&Andy 

我怎樣才能得到SAS忽略符號,而不是寫警告的日誌?非常感謝!

+0

嘗試使用像nrstr或superq這樣的變量的引用功能,或將變量的值放在單引號中 –

+0

這很好。謝謝! – Eric

回答

5

第一個警告很容易避免。宏變量引用不單引號內解決,所以你可以使用:

data _null_; 
test='Amos&Andy'; 
call symputx("testvar",test); 
run; 

當你想解決&的testvar,你需要一種方法來告訴宏處理器不是解決所發現的任何宏觀觸發器通過解析& testvar。這是宏引用的目的:

%put testvar=%superq(testvar); 

%supe叭告訴宏處理器來解析宏變量的testvar和引用(即掩模),其通過解析的testvar透露任何宏觸發器。這可以防止宏處理器尋找名爲Andy的宏變量。

+0

非常完美!非常感謝! – Eric