Sas 宏中的冒号修饰符

Sas 宏中的冒号修饰符,sas,sas-macro,Sas,Sas Macro,我试图在宏中使用冒号修饰符功能,但它的工作方式似乎与在数据步骤中不同。下面是我尝试做的一个例子 data _null_; str = "hello"; if str =: "h" then put "y"; else put "n"; run; if语句在数据步骤中计算TRUE,但当我在宏语言中应用类似逻辑时,这似乎不再起作用 %let str = hello; %put %eval(&str =: h); 上面的代码现在计算为FALSE。这里是否缺少一些东西,或者这个修饰符在宏语言

我试图在宏中使用冒号修饰符功能,但它的工作方式似乎与在数据步骤中不同。下面是我尝试做的一个例子

data _null_;
str = "hello";
if str =: "h" then put "y";
else put "n";
run;
if语句
在数据步骤中计算
TRUE
,但当我在宏语言中应用类似逻辑时,这似乎不再起作用

%let str = hello;
%put %eval(&str =: h);

上面的代码现在计算为
FALSE
。这里是否缺少一些东西,或者这个修饰符在宏语言中不可用?我知道我可以使用
%eval(%substr(&str,1,1)=h)
,但我更想知道
是否有效。

否,
不在宏运算符列表中;有关更多详细信息,请参阅


请注意,
=:
在其他地方也无效,例如在
PROC SQL
中。在这些上下文中,
eqt
是等效的运算符,但在宏语言中也不起作用。

感谢您的帮助。我不确定这是否与SAS版本有关,但我可以在
WHERE
语句中使用
=:
。示例:
proc print data=sashelp.class;其中name=:'Al'@J_Lard嗯,我想我错了-更正。谢谢