言語間呼び出しに関する考慮事項
- RPG プロシージャーが ILE CL プロシージャーと正しくやりとりを行なうことを
確認するには、ILE CL プロシージャーのプロトタイプにおいて、または ILE CL プロシージャーによって
呼び出される RPG プロシージャーにおいて、EXTPROC(*CL:'procedurename') と
コーディングします。
- RPG プロシージャーが ILE C
プロシージャーと正しくやりとりを行なうことを確認するには、ILE C
プロシージャーのプロトタイプにおいて、または ILE C プロシージャーによって呼び出される
RPG プロシージャーにおいて、EXTPROC(*CWIDEN:'procedurename') または
EXTPROC(*CNOWIDEN:'procedurename') とコーディングします。ILE C ソースがそのプロシージャーに対して
#pragma argument(procedure-name,nowiden) を含んでいる場合は *CNOWIDEN を使用し、そうでない場合は *CWIDEN を使用します。
- どの ILE 言語からも RPG プロシージャーを正常に使用したいならば、EXTPROC
キーワードに特殊な値を指定してはなりません。
代わりに、値または戻り値によって渡されるパラメーターには以下のタイプは避けます。
- 長さ 1 の文字 (1A または 1N)
- 長さ 1 の UCS-2 (1C)
- 長さ 1 のグラフィック (1G)
- 4 バイトの浮動 (4F)
- 1 バイトまたは 2 バイトの整数または符号なし (3I、3U、5、または 5U)
- RPG プロシージャーは、8 バイト・ポインターを使用している ILE C/C++ プロシージャーと対話することができます。
ただし、ILE C/C++ プロシージャーは 16 バイト・ポインターをパラメーターとして使用する必要があります。
「IBM® Rational® Development Studio for i: ILE C/C++ コンパイラー参照」を参照してください。
- LIKEFILE キーワードでプロトタイプ化された RPG ファイル・パラメーターは、
他の言語からのファイル・パラメーターと交換可能ではありません。例えば、
RPG ファイルを、FILE または RFILE パラメーターを予測している C 関数に渡すことは
できません。同様に、RPG パラメーターが LIKEFILE キーワードでプロトタイプ化されている場合、
C 関数は FILE または RFILE パラメーターを RPG プロシージャーに渡すことはできません。