固定形式の呼び出し命令の使用

CALL (プログラム呼び出し) 命令を使ってプログラム呼び出しを行い、CALLB (バインド・プロシージャーの 呼び出し) 命令を使って、プロトタイプされていないプログラムまたはプロシージャーに対するプロシージャー呼び出し を行います。 この 2 つの呼び出し命令は、構文と使用法がよく似て います。 プログラムまたはプロシージャーを呼び出すためには、次の概略ステップに従 ってください。
  1. 呼び出すオブジェクトを演算項目 2 で識別する。
  2. オプションで、エラー標識 (73 ~ 74 桁目) または LR 標識 (75 ~ 76 桁目)、 あるいはその両方をコーディングする。

    呼び出されたオブジェクトがエラーで終了した場合には、指定されれば エラー標識がオンに設定されます。 同様に、呼び出されたオブジェクトが LR で戻った場合には、指定されれば LR 標識がオンに設定されます。

  3. 呼び出されたオブジェクトにパラメーターを渡すために、呼び出し命令の 結果フィールドに PLIST を指定するか、あるいは呼び出し命令の直後に PARM 命令を 置く。

どちらの命令も呼び出し元のオブジェクトから呼び出されたオブジェクトに 制御権を転送します。呼び出されたオブジェクトの実行が終了すると制御権は、呼び出し元のプログラムまたはプ ロシージャー内の、呼び出し命令の後にある最初の実行可能な命令に 戻されます。

次の考慮事項は、どちらの呼び出し命令にも適用されます。
  • 演算項目 2 は、変数、リテラルまたは名前付き固定情報とすることができます。 この項目は 大文字小文字の区別があることに注意してください。

    CALL の場合のみ: 演算項目 2 はライブラリー名/プログラム名、例えば、MYLIB/PGM1 になります。ライブラリー名が指定されなかった場合には、プログラムを検索するために ライブラリー・リストが使用されます。 呼び出されるプログラムの名前は、実行時に演算項目 2 で文字変数を指定する ことによって提供することができます。

    CALLB の場合のみ: プロシージャー・ポインター呼び出しを行う ためには、呼び出されるプロシージャーのアドレスを含むプロシージャー・ポイン ターの名前を指定します。

  • 1 つのプロシージャーに、同じオブジェクトの呼び出しを複数入れるこ とができます。その際、PLIST は同じものを指定しても異なるものを指定して もかまいません。
  • ILE RPG プロシージャー (プログラム入力プロシージャーを含む) が最初に呼び出されると、 そのフィールドが初期化され、そのプロシージャーに制御が与えられます。前の呼び出しで終了しなかった場合、同じプロシージャーの後続の呼び出しでは、 呼び出されるプロシージャーのすべてのフィールド、標識、およびファイル が、前の呼び出しで戻されたものと同じです。
  • システムは RPG プロシージャー内で呼び出されるすべてのプログラムの名 前を記録します。 RPG プロシージャーがプログラム (*PGM) の中にバインドされる場合には、 どのプロシージャーまたはモジュールが呼び出しを行っているのか分からなくても、DSPPGMREF を 使用してこれらの名前を照会することができます。

    変数を使用してプログラムを呼び出す場合には、 *VARIABLE という名前 (ライブラリー名ではない) の項目を参照します。

    モジュールでは、DSPMOD DETAIL(*IMPORT) を使用して呼び出された プロシージャーの名前を参照することができます。 このリストの一部のプロシージャーはシステム・プロシージャーです。 すなわち、これらの名前は通常、 下線で始まるかまたはブランクが入っており、 あまりこれらを気にかける必要はありません。

  • CALLB の場合のみ: コンパイラーは、CALLB 命令で渡された パラメーターの数を示す操作記述子を作成し、この値を、呼び出されたプロシージャーの プログラム状況データ構造の *PARMS フィールドに入れます。 この数には、省略パラメーターとして 指定された (PARM 命令の *OMIT) パラメーターも含まれます。

    CALLB 命令で (D) 命令拡張が使用された場合には、コンパイラーは、 各文字フィールド、図形フィールド、およびサブフィールドについても 操作記述子を作成します。

    操作記述子の詳細については、操作記述子の使用を参照してください。

  • CALL または CALLB 命令コードを使用する時に適用される制約事項がさら にあります。 これらの制約事項の詳細な説明については、「IBM® Rational® Development Studio for i: ILE RPG 解説書」を参照してください。