宏中的冒号修饰符
Colon modifier in macro
我正在尝试在宏中使用冒号修饰符功能,但它的工作方式似乎与在数据步骤中的工作方式不同。下面显示了我正在尝试做的一个示例。
data _null_;
str = "hello";
if str =: "h" then put "y";
else put "n";
run;
if-statement
在数据步骤中计算 TRUE
但当我在宏语言中应用类似的逻辑时,这似乎不再起作用。
%let str = hello;
%put %eval(&str =: h);
上面的代码现在计算为 FALSE
。我在这里遗漏了什么或者这个修饰符在宏语言中不可用吗?我知道我可以使用 %eval(%substr(&str,1,1)=h)
,但我更想知道 :
是否有效。
不,:
不在宏操作符列表中;有关详细信息,请参阅 macro language reference。
注意=:
在其他地方也是无效的,比如在PROC SQL
。在这些上下文中,eqt
是等效的运算符,但这在宏语言中也不起作用。
我正在尝试在宏中使用冒号修饰符功能,但它的工作方式似乎与在数据步骤中的工作方式不同。下面显示了我正在尝试做的一个示例。
data _null_;
str = "hello";
if str =: "h" then put "y";
else put "n";
run;
if-statement
在数据步骤中计算 TRUE
但当我在宏语言中应用类似的逻辑时,这似乎不再起作用。
%let str = hello;
%put %eval(&str =: h);
上面的代码现在计算为 FALSE
。我在这里遗漏了什么或者这个修饰符在宏语言中不可用吗?我知道我可以使用 %eval(%substr(&str,1,1)=h)
,但我更想知道 :
是否有效。
不,:
不在宏操作符列表中;有关详细信息,请参阅 macro language reference。
注意=:
在其他地方也是无效的,比如在PROC SQL
。在这些上下文中,eqt
是等效的运算符,但这在宏语言中也不起作用。