2016-10-14 2 views
0

インデックスを使用して、毎回データセットが更新され、その失敗と成功に応じてメールを送信するたびに、重複を避けるために使用します。以下はコードです。更新を確認してメールを送信

data lib.new(index =(dual=(name date)/ unique)); 
set lib.old; 
run; 

options emailsys=smtp; 
%macro sendmail; 
%if &syserr ne 0 %then %do; 
data _null_; 
filename mailbox EMAIL '[email protected]' subject ='Failed'; 
file mailbox; 
put "Data already avaialable. Please submit for different"; 
run; %end; 
%else %do; data _null_; 
filename mailbox EMAIL '[email protected]' subject ='Success'; 
file mailbox; 
put "Data created"; run; %end; 
%mend sendmail; 
%sendmail; 

上記のコードを実行すると、データの更新が成功するたびにメールを受け取ることができます。しかし、私が失敗したときにメールを受け取っていないときには、

これ以外の方法はありますか?

成功するために。メールの詳細とメールがログに記録されています。

SYMBOLGEN: Macro variable SYSERR resolves to 0 
MACROGEN(SENDMAIL): data _null_; 
MACROGEN(SENDMAIL): filename mailbox EMAIL '[email protected]' subject 'Success'; 
MACROGEN(SENDMAIL): file mailbox; 
MACROGEN(SENDMAIL): put "Data created"; 
MACROGEN(SENDMAIL): run; 

NOTE: The file MAILBOX is: 
    E-Mail Access Device 

Message sent 
    To:   "[email protected]" 
    The SAS System 

    Cc:   
    Bcc:   
    Subject:  Job Success 
    Attachments: 
    NOTE: 1 record was written to the file MAILBOX. 

故障の場合。私はログの下になり、メールはトリガーされません。

SYMBOLGEN: Macro variable SYSERR resolves to 1012 
MACROGEN(SENDMAIL): data _null_; 
MACROGEN(SENDMAIL): filename mailbox EMAIL '[email protected]' subject ='Job Failed'; 
MACROGEN(SENDMAIL): file mailbox; 
The SAS System 

MACROGEN(SENDMAIL): put "Data already available. Please submit for different"; 

MACROGEN(SENDMAIL):実行します。

+0

私にとってはうまくいったので、両方のイベントでメールが届きました。最初のインスタンスに入れている電子メールIDを確認します。コードは – NEOmen

+0

を失敗したつまり私は同じログを得たが、 と次のようにログの詳細 – 987456

+0

で質問を更新しました「SYMBOLGEN:マクロ変数SYSERRは1012 MLOGIC(SENDMAIL)に解決:条件&SYSERR NE 0がTRUE%のIF」 mprint mlogic symbolgenのオプションを指定してコードを実行できますか? – NEOmen

答えて

0

filenameの文は、data stepより前である必要があります。これを試して。

options emailsys=smtp; 
%macro sendmail; 
    filename mailbox EMAIL '[email protected]'; 
    data _null_; 
     file mailbox; 
%if &syserr ne 0 %then %do; 
     put '!em_subject! "Failed"'; 
     put "Data already avaialable. Please submit for different"; 
%end; 
%else %do; 
     put '!em_subject! "Success"'; 
     put "Data created"; 
%end; 
    run; 
%mend sendmail; 
%sendmail 
関連する問題