2012-02-27 38 views
5

エラーでSASプログラムを停止するためにマクロを使用していますが、常にサーバーから切断され、一時データセットをもう戻すことができません。私が試してみましたエラー時にSASプログラムを停止する

%macro errchk; 
%if &syserr >0 and &syserr ne 4 %then %abort; 
%mend errchk; 

この1つはエラーに到達した後、次のデータ処理手順を保持します:

OPTIONS ERRORABEND; 

をここでは、私がしようとしているマクロです。

他のプログラムの実行を停止する方法を理解することはできませんが、SASサーバーから切断することはできません。何か案は?

+0

だから、リモートプログラムを実行するためにサーバーに接続していますか? –

+0

私は仕事中で接続していると思いますので –

+0

エラーを検出した後に処理の最後に到達するようにいくつかのgotoスイッチを設定すると役立つでしょうか? –

答えて

1

%gotoを使用してみましたか?アボートをトリガーするのではなく、マクロを出口ポイントにリダイレクトし、何かをログに出力して、コードのどの部分が失敗したかを示すことができます。

構文の例がここに与えられます。

http://support.sas.com/documentation/cdl/en/mcrolref/61885/HTML/default/viewer.htm#a000209058.htm

私は上記%のerrchkに問題が%アボート文が唯一%のerrchk自体に適用されることだろうと思います。別のマクロでラップすることなくマクロコードの途中に%abort呼び出しを置くと、そのアプローチでもっと成功する可能性があります。あるいは、%errchkがすでに完了している(おそらく%nrstr()に囲むことによって)%abortの実行を遅らせる何かをすることができますか?これが動作すれば私に教えてください - 私は明日それをテストすることができるでしょう。

1

私はリモートで接続しないのでテストできませんが、%ABORTにはいくつかのオプションのパラメータがあります。通常私はそれを使用するとき%ABORT cancel;を使用します。追加の各パラメータを試してみて、それらの作業があるかどうかを確認してください。 %ABORTドキュメントへ

リンク:

http://support.sas.com/documentation/cdl/en/mcrolref/61885/HTML/default/viewer.htm#a002475061.htm

関連する問題