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嗯,我想我错了-更正。谢谢