2012-03-29 87 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; 

宏日期運行代碼時沒有得到inputed到電子郵件。由此產生的電子郵件應爲:

尊敬的各位 今天是29年12月。

相反,它讀取:

親愛的 今天是& TodayDate

有一些一段代碼我很想念?

回答

2

您在本地創建了宏...但之後您登錄到遠程主機。您的SAS遠程會話不知道本地主機上的宏。使用%SYSLPUT是解決此問題的一種方法(Another link)

放置SIGNON和RSUBMIT之間這段代碼

%SYSLPUT TODAYDATE = &todayDate; 

如果你有大量的,你想使用遠程主機上的宏觀瓦爾的。您可以將它們寫入數據集並使用PROC UPLOAD將數據集移動到遠程主機。

+1

中或者將宏變量聲明移動到遠程代碼中,它們將在單引號內解析。 – 2012-03-30 08:01:15

5

在datastep中嘗試雙引號。宏變量不會用單引號解析。

+3

確實,您需要雙引號來強制宏var才能解決。 – 2012-03-29 19:25:00

+1

如果將它包裝在'%BQUOTE('&VAR')' – 2012-04-04 10:17:56