UNIX上でのバッチプログラムに引数を渡す方法

[OS] UNIX
[リリース] ALL
[キーワード] UNIX, BATCH, PARAMETER, SET, SYSGET

[質問]

バッチプログラムに複数の引数を渡す必要があります。良い方法はありますか?

[回答]

通常、プログラムに引数を解釈させるためにはSYSPARMオプションを利用します。
ただし、SYSPARAMオプションは一連の文字列をマクロ変数SYSPARM に渡すため、引数が複数必要な場合、利用方法に工夫が必要です。SYSPARMオプション以外には、環境変数を利用する方法や引数を記述した専用ファイルの利用などが考えられます。
パラメータが大量にある場合は専用ファイルなどの利用が効率的と思われますが、数個程度の引数の利用では環境変数の利用が手軽です。たとえば、環境変数を利用する場合、SETオプションと、SYSGET関数を利用し、次のような連携が可能です。

実行コマンド
$ sas -set p1 This -set p2 is -set p3 TEST. program.sas
処理プログラム
data _null_ ;
  A = sysget('p1') ;
  B = sysget('p2') ;
  C = sysget('p3') ;
  put A B C ;
run ;
実行ログ
1 data _null_ ;
2   a = sysget('p1') ;
3   b = sysget('p2') ;
4   c = sysget('p3') ;
5   put a b c ;
6 run ;

This is TEST.