2016-06-15 6 views
0

に渡します。したがって、要素が引用符で囲まれた電子メールの文字列であるデータセットがあります。 1つのデータ要素は次のようになります。 "[email protected]" "[email protected]" "[email protected]" "[email protected]"sasは引用された文字列をマクロ

私は以下のマクロコマンドとデータを持っていますステップ:

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

「エラー:マクロパラメータに構文エラーがあります。」

データ要素にスペースや引用符があるか、その両方ですか?

ありがとうございます。

+0

マクロは逆さまに見えます。 FILENAMEステートメントで定義する前に、TMPファイルに書き込んでいます。 – Tom

+0

FILENAMEステートメントの直後にデータステップを呼び出すことはできますか? – Prototank

+0

FILENAMEステートメントで定義されたfilerefは、定義された後であればいつでも参照できます。あなたは、EMAILLISTSの入力データセットに何が含まれているかを明確にするべきです。複数のレコードまたは単一のレコードを持っていますか? – Tom

答えて

1

これをテストする方法の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; 

そして、それらの作業のいずれかを作ってみてください(私の32ビットと私の64ビットSASの仕事は、Outlookので、私は、このいずれかをテストすることはできませんすることはできません):

%Emailer(RCP="[email protected]" "[email protected]" "[email protected]") 
%Emailer(RCP="[email protected] [email protected] [email protected]") 
%Emailer([email protected] [email protected] [email protected]) 
%Emailer([email protected] ; [email protected] ; [email protected]) 

後どのフォームが機能しているかを把握し、残りは簡単にする必要があります。

+0

すばらしい答え!あなた自身の目的のために、正しい形式は次のとおりです。 %Emailer(RCP = "[email protected]" "ja[email protected]" "[email protected]") スペースなし。 – Prototank

+0

興味深い...好奇心だけで、このようなことを試してみましたか? '%Emailer(RCP =" [email protected]; [email protected]; [email protected] ")? –

関連する問題