2012-03-29 82 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