言語間呼び出しに関する考慮事項

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