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)
弄清楚哪种形式有效后,剩下的就很容易了。
所以我有一个数据集,其元素是引号中的电子邮件字符串。单个数据元素可能如下所示: "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)
弄清楚哪种形式有效后,剩下的就很容易了。