Проблема, которую вы указали в комментариях, заключается в том, что вы вообще не хотите генерировать код SAS.Вот для чего предназначен макроязыковой процессор.Поэтому используйте %IF
для условного генерирования кода.
Итак, если вы хотите создать переменную newvar
только тогда, когда макропеременная log_flag
равна единице, вы можете кодировать ее следующим образом.
data want ;
set have ;
%if &log_flag. = 1 %then %do;
newvar= x*y ;
%end;
run;
Так что, когда &log_flag. = 1
вызапустите этот код:
data want ;
set have ;
newvar= x*y ;
run;
И если это не так, вы запустите этот код:
data want ;
set have ;
run;
Начиная с выпуска SAS 9.4 M5, вы можете использовать его в открытом коде, в противном случае поместите еговнутри определения макроса и выполните макрос.