CALL (プログラム呼び出し) 命令を使ってプログラム呼び出しを行い、CALLB (バインド・プロシージャーの 呼び出し) 命令を使って、プロトタイプされていないプログラムまたはプロシージャーに対するプロシージャー呼び出し を行います。 この 2 つの呼び出し命令は、構文と使用法がよく似て います。 プログラムまたはプロシージャーを呼び出すためには、次の概略ステップに従 ってください。
呼び出されたオブジェクトがエラーで終了した場合には、指定されれば エラー標識がオンに設定されます。 同様に、呼び出されたオブジェクトが LR で戻った場合には、指定されれば LR 標識がオンに設定されます。
どちらの命令も呼び出し元のオブジェクトから呼び出されたオブジェクトに 制御権を転送します。呼び出されたオブジェクトの実行が終了すると制御権は、呼び出し元のプログラムまたはプ ロシージャー内の、呼び出し命令の後にある最初の実行可能な命令に 戻されます。
次の考慮事項は、どちらの呼び出し命令にも適用されます。
CALL の場合のみ: 演算項目 2 はライブラリー名/プログラム名、 例えば、MYLIB/PGM1 になります。 ライブラリー名が指定されなかった場合には、プログラムを検索するために ライブラリー・リストが使用されます。 呼び出されるプログラムの名前は、実行時に演算項目 2 で文字変数を指定する ことによって提供することができます。
CALLB の場合のみ: プロシージャー・ポインター呼び出しを行う ためには、呼び出されるプロシージャーのアドレスを含むプロシージャー・ポイン ターの名前を指定します。
変数を使用してプログラムを呼び出す場合には、 *VARIABLE という名前 (ライブラリー名ではない) の項目を参照します。
モジュールでは、DSPMOD DETAIL(*IMPORT) を使用して呼び出された プロシージャーの名前を参照することができます。 このリストの一部のプロシージャーはシステム・プロシージャーです。 すなわち、これらの名前は通常、 下線で始まるかまたはブランクが入っており、 あまりこれらを気にかける必要はありません。
CALLB 命令で (D) 命令拡張が使用された場合には、コンパイラーは、 各文字フィールド、図形フィールド、およびサブフィールドについても 操作記述子を作成します。
操作記述子の詳細については、操作記述子の使用を参照してください。
(C) Copyright IBM Corporation 1992, 2006. All Rights Reserved.