我正在使用以下简化版本的代码:
%macro test(var);
%if &var = 'Sub Prime' %then %do;
%let var2 = 'Sub_Prime';
%put &var2;
%end;
%mend;
%test(Sub%str( )Prime);
基本上这一点是,如果var ='Sub Prime',那么var2应该='Sub_Prime'。虽然var不等于'Sub Prime'。谁能告诉我我做错了什么?
由于
答案 0 :(得分:3)
宏变量不使用引号。
%macro test(var);
%if &var = %str(Sub Prime) %then %do;
%let var2 = Sub_Prime;
%put &=var2;
%end;
%mend;
%test(Sub%str( )Prime);
最好不要在整个事情中使用%str
,而不是仅在空格中插入%str。
%test(%str(Sub Prime));