CALLB (バインド・プロシージャーの呼び出し)

自由形式構文 (許可されていない - CALLP 命令コードを使用)
コード 演算項目 1 演算項目 2 結果フィールド 標識
CALLB (D E)   プロシージャー名またはプロシージャー・ポインター PLIST 名 _ ER LR

CALLB 命令は、ILE 言語で書かれたバインド・プロシージャーの呼び出しに使 用されます。

操作記述子を組み込むために命令拡張 D を使用することができます。これは、キーワード OPDESC でパラメーターが指定済みである場合に CALLP でプロトタイプ・プロシージャー を呼び出すのに似ています (操作記述子は、 プログラマーに、渡された文字ストリングまたはグラフィック・ストリングの正確な 属性 (つまり、ストリングの長さとタイプ) の実行時解決を提供します)。 詳細については、「Rational Development Studio for i ILE RPG プログラマーの手引き」のプログラムおよび プロシージャーの呼び出しに関する章を参照してください。

演算項目 2 は必須で、呼び出されるプロシージャーの名前が入っているリテラ ルまたは定数、あるいは呼び出されるプロシージャーのアドレスが入って いるプロシージャー・ポインターでなければなりません。 すべての参照は、バインド時に解析できるものでなければなりません。 指定するプロシージャー名は大文字と小文字が区別され、10 桁より多くの文字を含むことができますが、255 桁を超えることはできません。 名前が 255 桁を超えた場合には、255 桁で切り捨て られます。 結果フィールドは任意指定で、PLIST 名を入れることができます。

CALLB 例外 (プログラム状況コードが 202、211、 または 231) を処理するために、命令コード拡張 'E' またはエラー標識 ER を指定 できますが、両方を指定することはできません。 エラー処理の詳細については、プログラム例外/エラーを 参照してください。

75-76 桁目に指定された標識は、呼び出しが LR をオンに設定して終わった時 にオンに設定されます。
注: スレッド・セーフ環境内では、LR 標識は使用できません。

呼び出し命令の詳細については、呼び出し命令を参照してください。

図 1. CALLB 命令
DName+++++++++++ETDsFrom+++To/L+++IDc.Keywords+++++++++++++++++++++++++++++
 * Define a procedure pointer
D
D ProcPtr         S               *   PROCPTR INZ(%PADDR('Create_Space'))
D Extern          S             10
D
CL0N01Factor1+++++++Opcode(E)+Factor2+++++++Result++++++++Len++D+HiLoEq....
 * The following call linkage would be STATIC
C                   CALLB     'BOUNDPROC'
 * The following call linkage would be DYNAMIC
C                   CALL      Extern
 * The following call linkage would be STATIC, using a procedure pointer
C                   CALLB     ProcPtr