SAS - 通过%宏动态添加文本到电子邮件

时间:2017-10-12 17:55:30

标签: email macros sas sas-macro

我试图通过在动态文本的位置使用%宏来动态显示电子邮件中的文本。这个 正在运行,但在我的电子邮件中添加了一些额外的文本后,它就停止了工作。所以,我不确定导致实际问题的原因。恢复到工作时的状态不再有效。

我正在呼唤我的宏:

%macro PrintStuff(arrayOfThings);
    %local i next_element;
    %do i=1 %to %sysfunc(countw(&arrayOfThings));
        %let next_element = %scan(&arrayOfThings, &i);
        %DO;
            %PUT "&next_element info is as follows:";
            %PUT "some text here";
            %PUT "some text there";
            %PUT "text all over!!!";
            %PUT "Do you even text?";
        %END;
    %end;
%mend PrintStuff;

电子邮件代码:

DATA _null_;
    File mailFile;
    PUT "This is email text. This shows up fine in the email";
    %PrintStuff(&someArray);
    PUT "This closes the email, and this shows up fine in the email when it is received!"
RUN;

我在这里尝试了一些不同的东西。我已经尝试过只在电子邮件中使用%PrintStuff(& myArrayOrList)。我已经尝试过,有没有关闭; 分号。我不确定这出错了。

代码成功运行后,日志会以这种方式显示:

50         DATA _null_;
51          File outmail;
52          PUT "This is email text. This shows up fine in the email";
53         
54          %PrintStuff(&someArray)
"ResolvedElementName info is as follows:"
"some text here"
"some text there"
"some text all over!!!"
"Do you even text?"
55         
56          PUT "This closes the email, and this shows up fine in the email when it is received!";
57         RUN;

它有效,现在却没有,而且我不确定它之前是如何工作的。任何建议将不胜感激!!!提前谢谢!

1 个答案:

答案 0 :(得分:1)

数据步骤中的

Put写入输出表/文件(即示例中的outmail),宏中的%put写入日志。尝试通过%put替换宏中的put - 它会将这5行添加到您的数据步骤中。