2012-03-29 3 views
0

У меня есть следующий код:Переменные макроса в шаблоне электронной почты в SAS?

%let host = HostThatSendsEmail; 
%let todayDate = &SYSDATE9; 
signon host; 
rsubmit; 


filename mail email to = ("PersonGettingEmail") 
     from= "PersonSendingEmail" 
     SUBJECT="Today is &todayDate"; 

data _null_; 
    file mail; 
    put 'Dear All'; 
    put 'Today is &todayDate'; 
run; 

endrsubmit; 

макросъемки дата не получает занесены в электронную почту, когда код выполняется. Полученное электронное письмо должно быть заполнено следующим образом:

Дорогой все Сегодня 29Mar12.

Вместо этого он читает:

Уважаемые Сегодня & TodayDate

Есть ли какой кусок кода мне не хватает?

ответ

2

Вы создали макрос локально ... но затем вы вошли на удаленный хост. Ваш удаленный сеанс SAS не знает о макросе на локальном хосте.

Использование %SYSLPUT является одним из способов решения этой проблемы (Another link).

Поместите этот код между SIGNON и RSUBMIT

%SYSLPUT TODAYDATE = &todayDate; 

Если у вас есть большое количество макро Варс, что вы хотели доступны на удаленном хосте. Вы можете записать их в набор данных и использовать PROC UPLOAD для перемещения набора данных на удаленный хост.

+1

Или переместите объявление макропеременной в удаленный код. –

5

Попробуйте двойные кавычки в datastep. Макропеременные не будут разрешаться в одинарных кавычках.

+3

Это правда, что вам нужны двойные кавычки, чтобы заставить макрос var решить. –

+1

Они будут разрешать внутри одиночных кавычек, если вы завернете их в '% BQUOTE ('& VAR')' –

Смежные вопросы