|
|
バッチプログラムにパラメータを引き渡す
[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;
|
|||||