Макрос-код оценивается ДО запуска SAS-кода, который он генерирует. Итак, вы сказали SAS запустить этот код:
%let exc_st_day = '30APR2019'd;
%let exc_en_day = '30APR2019'd;
%let exc_st_day = '01MAY2019'd;
%let exc_en_day = '01MAY2019'd;
%let exc_st_day = '02MAY2019'd;
%let exc_en_day = '02MAY2019'd;
%let exc_st_day = '03MAY2019'd;
%let exc_en_day = '03MAY2019'd;
%let exc_st_day = '04MAY2019'd;
%let exc_en_day = '06MAY2019'd;
%put &exc_st_day &exc_en_day;
data _null_;
if weekday(today()) = 5 then do;
end;
else if weekday(today()) = 6 then do;
end;
else if weekday(today()) = 2 then do;
end;
else if weekday(today()) = 3 then do;
end;
else if weekday(today()) = 4 then do;
end;
run;
Если вы хотите создать значения макропеременных из шага данных, используйте функцию CALL SYMPUTX()
. Или, если вам действительно нужно вставить начальные и / или завершающие пробелы в значение макропеременной, используйте более старую функцию CALL SYMPUT()
.