バッチプログラムにパラメータを引き渡す
[OS]ALL
[リリース] 6.07以降
[キーワード] base, batch, parameter, sysparm=, system, option, macro, variable, sysparm, separator, datastep, call, symput
[質問]プログラムをバッチ形式で実行する場合、起動時にパラメータを渡すことはできますか。
[回答]SASシステムオプションのSYSPARM=を使用します。SYSPARM=オプションで渡された値はマクロ変数 &SYSPARM の値として格納され、マクロを通じて自由に使用することができます。 次の例は、パラメータとして1を与えるとPRINTプロシジャを実行し、それ以外の値を与えると、CONTENTSプロシジャを実行します。 [起動コマンド] sas mypgm.sas -sysparm 1 [プログラム] %macro a; %if &sysparm=1 %then %do; proc print data=sasuser.class; run; %end; %else %do; proc contents data=sasuser.class; run; %end; %mend a; %a また、複数のパラメータを与えるには、複数パラメータを1つにまとめて引き渡し、 次のようなDATAステップで別々のマクロ変数に格納して使用します (次の例では、パラメータの区切りにコロンを使用しています)。 [起動コマンド] sas mypgm2.sas -sysparm parameter1:parameter2 [プログラム] data _null_; temp=symget("sysparm"); index=index(temp,':'); length=length(temp); parm1=substr(temp,1,index-1); parm2=substr(temp,index+1,length-index); call symput("sysparm1",parm1); call symput("sysparm2",parm2); run;
|