2017-10-12 10 views
1

動的テキストの代わりに%マクロを使用して電子メール内にテキストを動的に表示しようとしています。このでしたが、メールに数行のテキストを追加した後、動作を停止しました。だから、私は実際の問題を引き起こしているのか分からない。私が働いていた場所に戻ってもはや機能しません。SAS - %マクロを使って電子メールにテキストを動的に追加する

私のマクロ私が呼んでいる:

%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

データステップでは、 'put'が' outmail'に書き込みます。一方、 '%PUT'はログに書き込みます。私はそれをテストすることはできませんが、 'put'でマクロに'%put'を置き換えようとします。 – Petr

+0

@Petrありがとうございます。それはトリックでした!あなたが先に進み、それを答えとして書いておきたいなら、私はそれを受け入れるでしょう! –

答えて

1

Putあなたのマクロの%putが出力テーブル/ファイル(つまりあなたの例ではoutmail)に書き込むと、ログに書き込まれます。マクロ内のをputに置き換えてください。データ行に5行追加されます。

関連する問題