【SAS】Enterprise Guideを止めるコマンドは存在しない!

該当する人は多くないかもしれませんが、SAS Enterprise Guide(以下EG)での作業が定常化してきて、EGのスケジュールを用いてWindowsのタスクスケジューラに登録してバッチ化しています。(残念ながら、Base SASは現環境にありません)
そうすると、データが存在するかどうかを確認して、存在しなかったらEGを止める必要が出てきました。

EGはコマンドでは止まりません

結論から言うと、EGはコマンドでは止まりません。
同じようなことを考える人はいるようで、"SAS Enterprise Guide vs. Batch"という、タイトルを見ただけで軽く笑いがこみ上げてくる論文を見てみたところ

  • OPTIONS SYNTAXCHECK
  • ENDSAS
  • OPTIONS ERRORABEND
  • ABORT statement
  • %ABORT statement
  • 自動マクロ変数 &SYSERROR

とか、全部試してみたけど、プロセスフローの上流にあるプログラムは止まっても、下流のプログラムは止まらない。
下手すると、下流でサーバに再接続して実行するから有害、とのことでした。

[PDF] EG vs. Batch

どうしてもバッチを止めたい

止める方法は全くないということはありません。

  • SAS Data Integration Studioを買う
  • EG内で一つのプログラムにすべてのコードを記述する(EGをBase SASのように使う)
  • エラー発生フラグをマクロ変数に格納し、EG内の全てのプログラムの先頭にフラグを確認して実行制御するマクロを書く(クエリビルダとか大変)
  • EGがはき出したVBSに小細工をして、条件でスクリプト停止させる

VBSで頑張ることになりそうです。