sas 将带引号的字符串传递给宏

sas passing quoted strings to a macro

所以我有一个数据集,其元素是引号中的电子邮件字符串。单个数据元素可能如下所示: "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;

但我不断收到 "ERROR: Macro parameter contains syntax error."

是否因为我的数据元素有空格和/或引号?

提前致谢。

测试它的一种方法是直接传递参数,而不是使用数据步骤。正如评论者指出的那样,首先我将重新安排陈述的顺序。

%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)

弄清楚哪种形式有效后,剩下的就很容易了。