Rational Developer for System z
Enterprise PL/I for z/OS, Version 3.9, プログラミング・ガイド

TSO/E のもとでの MAIN の呼び出し

SYSTEM(MVS) オプションで MAIN プログラムをコンパイルする場合は、TSO CALL コマンドを使用するか、または TSO コマンド・プロセッサーとしてプログラムを呼び出すことができます。 ランタイム・オプションとパラメーターの両方を、MVS バッチ配下と同じ方法で渡すことができます。

例えば、TSOARG1 という MAIN プログラムが userid.TEST.load というデータ・セットのメンバーとしてリンク・エディットされた場合は、次のものによってこのプログラムを呼び出すことができます。

    CALL TEST(TSOARG1) 'RPTSTG(ON),TRAP(ON)/THIS IS MY ARGUMENT'
  or
    CALL TEST(TSOARG1) '/THIS IS MY ARGMENT'
  or
    TSOARG1 TRAP(ON)/THIS IS MY ARGUMENT
  or
    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 からプログラム実引数を指定して表示します。

図 17. SYSTEM(STD) オプションを使用したときに 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 ストリングによって常にランタイム・オプションを指定できます。


Terms of use | Feedback

This information center is powered by Eclipse technology. (http://www.eclipse.org)