バッチ処理の際にパラメータを渡したい

[OS]ALL
[リリース] 6.12, 8.1, 8.2
[キーワード] SYSPARM, BATCH

[質問]

Windows版SASでバッチ処理を行なう際に、ユーザー固有の値をセットし、SASプログラム内で値を受け取って実行することは可能でしょうか。

[回答]

バッチプログラム内にユーザ固有のパラメータを記述し、SASプログラムへ受け渡すには、「SYSPARM」システムオプションを使用します。SYSPARMオプションの引数には、最大200バイトまでの文字列を指定できます。SYSPARM関数を使用すれば、SASのDATAステップ内でこの引数を参照できます。
その他、任意の場所で参照するには、自動マクロ変数「&SYSPARM」を使用します。

以下に、バッチプログラムのサンプルを示します。拡張子「.bat」をつけて、任意のファイル名で保存します(例:test.bat)。
なお、SYSPARMには、"JPNSAS"をセットしています。

"C:\Program Files\SAS Institute\SAS\V8\nls\ja\sas.exe"
 -sysin "C:\temp\test.sas"
 -config "C:\Program Files\SAS Institute\SAS\V8\nls\ja\Sasv8.cfg"
 -log "C:\temp\test.log"
 -nosplash
 -icon
 -sysparm JPNSAS
※ 実際は1行で記述します

以下に、バッチファイル内で参照するSASプログラム"test.sas"の内容を示します。-sysparmで与えたパラメータをログに出力するプログラムとなっています。

/** test.sas **/  
%PUT "UserIDは &sysparm です";

バッチファイルを実行すると、-logで指定した場所にSASのログファイル「test.log」が作成されます。ログファイルの内容は、次のようになります(一部抜粋)。

NOTE: SAS初期化 処理 :
       処理時間            0.67 秒
       CPU 時間            0.42 秒
      
1          %PUT UserIDは &sysparm です;

UserIDは JPNSAS です