这些宏参数有什么问题?

What's wrong with these macro parameters?

我正在处理的一段代码有以下简化版本:

%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'。谁能告诉我我做错了什么?

谢谢

宏变量不使用引号。

%macro test(var);

%if &var = %str(Sub Prime) %then %do;
  %let var2 = Sub_Prime;
  %put &=var2;
%end;
%mend;

%test(Sub%str( )Prime);

你最好在整个事情中使用 %str,而不是只在 space.

中插入 %str
%test(%str(Sub Prime));