2
我有一段代碼的下面簡化版本,我的工作:這些宏參數有什麼問題?
%macro test(var);
%if &var = 'Sub Prime' %then %do;
%let var2 = 'Sub_Prime';
%put &var2;
%end;
%mend;
%test(Sub%str()Prime);
基本上這樣做的問題是,如果VAR =「次貸」是VAR2應該=「Sub_Prime」。看起來雖然這個var不等於'Sub Prime'。誰能告訴我我做錯了什麼?
謝謝
工作很好,謝謝。我不能接受你的答案,但是,謝謝。 – gdogg371
@ gdogg371當您沒有得到預期的結果時,測試宏的一個好方法是將表達式打印到日誌中。 IE瀏覽器。從原始問題'&var ='Sub Prime''中取出一些代碼,然後在它前面做一個'%put'。 '%put&var ='子總理';'。很快你會意識到沒有引號的字符串不等於帶引號的字符串。 –
它在我看來應該不需要在這裏使用%str()。是嗎?唯一可以屏蔽的字符是空白的,但爲什麼需要屏蔽? (我遠離SAS,所以不能嘗試。) – Quentin