Модификатор двоеточия в макросе

Я пытаюсь использовать функциональность модификатора двоеточия в макросе, но, похоже, он работает не так, как на шаге данных. Пример того, что я пытаюсь сделать, показан ниже.

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 является эквивалентным оператором, но это также не работает на макроязыке.

Другие вопросы по тегам