所以我有一个数据集,其元素是引号中的电子邮件串。单个数据元素可能如下所示: " john@cool.com" " jacob@cool.com" " jingleheimer@cool.com" " smith@cool.com"
我有以下宏命令和数据步骤:
%macro Emailer(RCP=);
/* body of the e-mail*/
data _null_;
file tmp;
put "Hello, World! <BR>";
run;
/*to-from*/
Filename tmp Email
Subject="Hello World Test"
To= (&RCP)
CT= "text/html";
%mend Emailer;
data _null_;
set EmailLists;
call execute('%Emailer(RCP='||ListOfEmails||')');
run;
但我一直得到&#34;错误:宏参数包含语法错误。&#34;
是因为我的数据元素有空格或引号,还是两者都有?
提前致谢。
答案 0 :(得分:1)
测试它的一种方法是直接传递参数,而不是数据步骤。首先,我将重新排列声明的顺序,正如评论者指出的那样。
%macro Emailer(RCP=);
filename myEmail Email;
data _null_;
file myEmail Subject = "Hello World Test"
To = (&RCP)
CT = "text/html";
put "Hello, World! <BR>";
run;
filename myEmail clear;
%mend Emailer;
尝试完成其中任何一项工作(不能让我的64位SAS与我的32位Outlook一起工作,这样我就无法测试其中任何一项):
%Emailer(RCP="john@cool.com" "jacob@cool.com" "jingleheimer@cool.com")
%Emailer(RCP="john@cool.com jacob@cool.com jingleheimer@cool.com")
%Emailer(RCP=john@cool.com jacob@cool.com jingleheimer@cool.com)
%Emailer(RCP=john@cool.com ; jacob@cool.com ; jingleheimer@cool.com)
在你弄清楚哪种形式有效之后,剩下的就应该很容易了。