SASプログラムの実行前後で、別のSASプログラム、または任意のステートメントを動かしたい - システムオプション autoexec, initstmt, termstmt

SASプログラムの実行前や実行後に必ず実行したいプログラムとかってあるかと思います。すべてのプログラムまたは一部のプログラムにおいて、WORK領域の場所を統一したい、オプション LOG を使ってデフォルトのパスを統一したい、options msglevel=i ; は全てのプログラムで実行させたい、などなど。それを実現するためのシステムオプションのお話です。



SASプログラム実行前に実行するSASプログラムを指定する システムオプション autoexec

システムオプション autoexec は、SASプログラムを指定します。指定されたSASプログラムは、SASプログラムを実行する前に、毎度実行されます。

SASプログラムの実行前に、SASプログラム /TEST/BEFORE.sas を実行するには、例えば以下のように書きます。


SASバッチモード autoexecの指定例

sas /TEST/SAMPLE.sas -autoexec /TEST/BEFORE.sas

SAS環境設定ファイル autoexecの指定例

環境設定ファイルに下記の内容を追記/修正してください。

-autoexec /TEST/BEFORE.sas

SAS雲丹(SAS University Edition) autoexecの指定例

SAS雲丹(SAS University Edition)では、autoexecは、以下のように設定します。画面右上のアイコンのメニューから、「Autoexecファイルの編集」を押します。

表示されたウィンドウの中に実行したいコードを入力して保存します。

これで、記載したコードが、SASプログラム実行される前に実行されるようになります。書いたコードは、フォルダの直下に autoexec.sas として保存され、直接編集することも出来ます。




SASプログラムの実行前後で、ステートメントを実行する システムオプション initstmt, termstmt

※システムオプション initstmt, termstmt は、SASの環境によっては使用できないようなので、ご注意ください。

autoexecは、SASプログラムを実行するものでしたが、これらのオプションは、任意のステートメントを実行します。例をSASバッチで書いてみます。

sas /TEST/SAMPLE.sas -initstmt '%put START ; data TEST ; A=1 ; run ;' -termstmt '%put END ;'

こんな感じで、%putマクロステートメントや、dataステートメントを記載することが出来ます。initstmt の実行タイミングは、autoexec の後、実行するSASプログラムの前です。



参考サイト

  1. SASを使いやすくカスタマイズしよう SAS環境変数,AUTOEXECなど | うずまき(4th Gen) | Jun-Systems
  2. AUTOEXEC System Option: UNIX | SAS(R) 9.4 Companion for UNIX Environments, Fourth Edition (英語)
  3. AUTOEXEC System Option: Windows | SAS(R) 9.4 Companion for Windows, Third Edition (英語)
  4. INITSTMT= System Option | SAS(R) 9.4 System Options: Reference, Third Edition (英語)
  5. TERMSTMT= System Option | SAS(R) 9.4 System Options: Reference, Third Edition (英語)
  6. Problem Note 35326: The -INITSTMT and -TERMSTMT system options are ignored by the SAS® Stored Process Server and Workspace Server (英語)

コメント

このブログの人気の投稿

マクロの引数にカンマ、クォートなどを渡す : %bquote, %str, %superq - SAS

Linuxコマンド: date で◯か月前 / ◯か月後を取得するときの注意

missingオプション - 数値欠損値の出力結果を . ドットから変更する - SAS