我不傾向於將電子郵件參數包含在datastep本身中,而是包含在fileref中。我用我的電子郵件地址測試了下面的代碼,它工作。
正如我在評論中所說的,只需要將您的datastep封裝在宏中,如果您希望它在宏內運行。
您可以有位置或關鍵字參數。詳細信息見source。在這個例子中我使用了關鍵字參數。你通過指定關鍵字來調用宏,然後像我顯示的最後一行那樣的值。如果你沒有放入任何東西,那麼關鍵字會被忽略。
順便說一句,空關鍵字會導致初始化的本地宏變量。讓像(%LET FROM = FROM =「& FROM」)這樣的語句在那裏添加一個字符串「FROM =」到「FROM」宏變量的開頭,這樣文件名語法就完成了。如果像「FROM」這樣的宏變量按原樣傳遞,它將解析爲電子郵件地址,該文件名將不知道該如何處理。
%MACRO send_email (TO=,FROM=,SUBJECT=,ATTACHMENT=,BODY=);
%IF &TO ne %THEN
%LET TO="&TO";
%IF &FROM ne %THEN
%LET FROM=FROM="&FROM";
%IF &SUBJECT ne %THEN
%LET SUBJECT=SUBJECT="&SUBJECT";
%IF &ATTACHMENT ne %THEN
%LET ATTACHMENT=ATTACHMENT="&ATTACHMENT";
%IF &BODY ne %THEN
%LET BODY="&BODY";
FILENAME outbox EMAIL &TO &FROM &SUBJECT &ATTACHMENT;
DATA _NULL_;
FILE outbox;
PUT &BODY;
RUN;
%MEND;
%send_email([email protected]);
請問您的問題是否可以引用?我不確定你想要達到什麼。 –
將發送電子郵件的宏。使用文件名 – Apache11
假設你的數據步驟正在工作,你可以把它包裝到宏中,我會在我的答案中顯示它。 –