我试图在宏中使用冒号修饰符功能,但它似乎与数据步骤中的工作方式不同。我试图做的一个例子如下所示。
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)
,但我更好奇的是找出:
是否有效。
答案 0 :(得分:2)
不,:
不在宏运算符列表中;有关详细信息,请参阅macro language reference。
请注意,=:
在其他地方也无效,例如PROC SQL
。在这些上下文中,eqt
是等效的运算符,但在宏语言中也不起作用。