SYSTEM(MVS) オプションで MAIN プログラムをコンパイルする場合は、TSO CALL コマンドを使用するか、または TSO コマンド・プロセッサーとしてプログラムを呼び出すことができます。 ランタイム・オプションとパラメーターの両方を、MVS バッチ配下と同じ方法で渡すことができます。
例えば、TSOARG1 という MAIN プログラムが userid.TEST.load というデータ・セットのメンバーとしてリンク・エディットされた場合は、次のものによってこのプログラムを呼び出すことができます。
CALL TEST(TSOARG1) 'RPTSTG(ON),TRAP(ON)/THIS IS MY ARGUMENT'
または
CALL TEST(TSOARG1) '/THIS IS MY ARGMENT'
または
TSOARG1 TRAP(ON)/THIS IS MY ARGUMENT
または
TSOARG1 /THIS IS MY ARGUMENT
注: CALL ステートメントを使用しないでプログラムを実行するためには、TSOARG1 を含むデータ・セット (userid.TEST.load) が標準 TSO プログラム検索リストになければなりません。 これは、TSO コマンドを発行することによって達成できます。
TSOLIB ACTIVATE DSN('userid.TEST.load')
ただし、MAIN プログラムを SYSTEM(TSO) オプションでコンパイルすると、コマンド・プロセッサー・パラメーター・リスト (CPPL) を指すポインターがプログラムに渡されます。 この場合は、NOEXECOPS が有効です。 プログラムを TSO コマンドとして呼び出せますが、TSO CALL ステートメントによって呼び出すことはできません。 次に例を示します。
TSOARG2 This is my argument
図 17 のプログラムは、SYSTEM(TSO) インターフェースを使用して、CPPL からプログラム実引数を指定して表示します。
*process system(tso);
tsoarg2: proc (cppl_ptr) options(main);
dcl cppl_ptr pointer;
dcl 1 cppl based(cppl_ptr),
2 cpplcbuf pointer,
2 cpplupt pointer,
2 cpplpscb pointer,
2 cpplect pointer;
dcl 1 cpplbuf based(cpplcbuf),
2 len fixed bin(15),
2 offset fixed bin(15),
2 argstr char(1000);
dcl my_argument char(1000) varying;
dcl my_argument_len fixed bin(31);
dcl length builtin;
my_argument_len = len - offset - 4;
if my_argument_len = 0 then
my_argument = '';
else
my_argument = substr(argstr,offset + 1, my_argument_len);
display('Program args: ' || my_argument);
end tsoarg2;MAIN プログラムをコマンドとして呼び出すか、CALL を介して呼び出すかに関係なく、PLIXOPT ストリングによって常にランタイム・オプションを指定できます。