プログラム作成 (CRTPGM) コマンドの使用

プログラム作成 (CRTPGM) コマンドは、以前に作成された 1 つまたは複数のモジュール・オブジェクト、 および要求がある場合には 1 つまたは複数のサービス・プログラムから、 プログラム・オブジェクトを作成します。 ILE モジュール作成コマンドの CRTCBLMOD、CRTCMOD、CRTRPGMOD、または CRTCLMOD のいずれかで作成されたモジュール・オブジェクトをバインドすることができます。

注:
CRTPGM コマンドを使用するには、このコマンドを使用する権限がなければならず、 必要なモジュールは、最初に CRTCBLMOD、CRTCMOD、 CRTRPGMOD、または CRTCLMOD コマンドを使用して作成されていなければなりません。

CRTPGM コマンドを使用してプログラム・オブジェクトを作成する前に、以下のことを行ってください。

  1. プログラム名を設定する。
  2. バインドしてプログラム・オブジェクトにしたいモジュール・オブジェクト、 および必要であればサービス・プログラムを指定する。
  3. 使用する予定のバインディング・ディレクトリーを指定する。 ILE COBOL 実行時サービス・プログラムおよび ILE バインド可能 API の場合、CRTCBLMOD および CRTBNDCBL によって作成されたモジュール・オブジェクトからバインディング・ディレクトリーへの暗黙の参照が行われます。
  4. どのモジュール・オブジェクトの PEP が作成中のプログラム・オブジェクト用の PEP として使用されるかを指定する。 このモジュール・オブジェクトは、CRTPGM の ENTMOD パラメーターで指定します。

    ENTMOD パラメーターでモジュール・オブジェクトを明示的に指定する代わりに ENTMOD(*FIRST) を指定した場合は、 作成中のプログラム・オブジェクトの PEP としてどのモジュール・オブジェクトのものを使用するかを決定する際に、 バインディングが行われる順序が重要になります。 1 つの PEP しか使用できない場合でも、MODULE パラメーターに指定するモジュール・オブジェクト、 またはバインディング・ディレクトリーによって見つかるモジュール・オブジェクトに、1 つまたは複数の PEP が含まれていることがあります。 バインディングの順序は、記号解決などの他の理由からも重要です。 バインディングの詳細については、「ILE 概念」を参照してください。

  5. コマンドにおいて、プロシージャー名または変数名 (あるいはその両方) の重複が可能かどうかを設定する。

    複数の異なる方法で同じ変数名およびプロシージャー名をそれぞれ定義している複数のモジュール・オブジェクトを、1 つのプログラム・オブジェクトにバインドすることがあります。

  6. プログラムが実行される活動化グループを指定する。 活動化グループの説明については 活動化および活動化グループを参照してください。

CRTPGM コマンドを使用してプログラム・オブジェクトを作成するには、次のステップを実行してください。

  1. CRTPGM コマンドを入力する。
  2. コマンド・パラメーターに適切な値を入力する。

表 1 に、CRTPGM コマンド・パラメーターとそのデフォルト値を示します。 CRTPGM コマンドおよびそのパラメーターの詳細については、Web サイト http://www.ibm.com/eserver/iseries/infocenter にある iSeries Information Center の「プログラミング」カテゴリーの中の 『CL および API』セクションを参照してください。

表 1. CRTPGM コマンドのパラメーターとそのデフォルト値
パラメーター・グループ パラメーター (デフォルト値)
識別 PGM(ライブラリー名/プログラム名) MODULE(*PGM)
プログラム・アクセス ENTMOD(*FIRST)
バインディング BNDSRVPGM(*NONE) BNDDIR(*NONE)
実行時 ACTGRP(*NEW)
その他
OPTION(*GEN *NODUPPROC *NODUPVAR *WARN *RSLVREF)
DETAIL(*NONE)
ALWUPD(*YES)
ALWRINZ(*NO)
REPLACE(*YES)
AUT(*LIBCRTAUT)
TEXT(*ENTMODTXT)
TGTRLS(*CURRENT)
USRPRF(*USER)
ALWLIBUPD(*NO)

CRTPGM コマンドを入力すると、プログラム・オブジェクトは次のように作成されます。

  1. リストに示されたモジュール・オブジェクトが、プログラム・オブジェクトになるものの中にコピーされる。
  2. PEP を含むモジュール・オブジェクトが識別され、このモジュール内への最初のインポートが検索される。
  3. モジュール・オブジェクトをリストの順序で調べていき、最初のインポートとモジュール・エクスポートとを突き合わせる。
  4. 最初のモジュール・オブジェクトが返され、次のインポートが検索される。
  5. 最初のモジュール・オブジェクトへのすべてのインポートが解決される。
  6. 次のモジュール・オブジェクトが継続され、すべてのインポートが解決される。
  7. すべてのインポートが解決されるまで、以降の各モジュール・オブジェクト内へのすべてのインポートが解決される。
  8. OPTION(*RSLVREF) が指定されていて、インポートがエクスポートで解決できない場合、 バインディング・プロセスは、プログラム・オブジェクトを作成せずに終了する。 OPTION(*UNRSLVREF) が指定される場合、 すべてのインポートは必ずしも作成されるプログラム・オブジェクトのエクスポートに解決される必要はありません。 プログラム・オブジェクトが実行時にこれらの未解決のインポートの 1 つを使用する場合、MCH4439 例外メッセージが出されます。
  9. すべてのインポートが解決されると、バインディング・プロセスは完了し、プログラム・オブジェクトが作成されます。