Модификатор двоеточия в макросе
Я пытаюсь использовать функциональность модификатора двоеточия в макросе, но, похоже, он работает не так, как на шаге данных. Пример того, что я пытаюсь сделать, показан ниже.
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)
но мне более интересно узнать, если :
буду работать.
1 ответ
Нет, :
отсутствует в списке макрооператоров; см. справочник по языку макросов для более подробной информации.
Обратите внимание, что =:
также не действует в других местах, таких как в PROC SQL
, В этих контекстах eqt
является эквивалентным оператором, но это также не работает на макроязыке.