Выполнение локально в чистой сессии:
%let x = %str(put(age, best.));
proc sql;
select &x from sashelp.class;
quit;
Это вызывает следующую ошибку:
1 put(age, best.)
----
22
----
76
ERROR 22-322: Syntax error, expecting one of the following: a format name, ?.
ERROR 76-322: Syntax error, statement will be ignored.
Но эта версия с «ручным разрешением» работает без примечаний, предупреждений или ошибок:
proc sql;
select put(age, best.) from sashelp.class;
quit;
Может ли кто-нибудь объяснить, что именно делает %str() в этой программе, что вызывает проблему во время выполнения? Извиняюсь за расплывчатый вопрос, но я не уверен, каковы соответствующие взаимодействия; Я не могу воспроизвести с использованием эквивалентного синтаксиса шага данных, поэтому, возможно, задействованы особенности proc SQL?