ILE CL プログラムまたはプロシージャーへのデータの引き渡し

CALL...BY REFERENCE または CALL...BY CONTENT を使用することにより、 呼び出し先の ILE CL プログラムまたはプロシージャーにデータを渡すことができます。 CALL...BY REFERENCE または CALL...BY CONTENT の使用の詳細については CALL...BY REFERENCE、BY VALUE、または BY CONTENT を使用したデータの受け渡しを参照してください。

CALL...BY REFERENCE を使用してデータを ILE CL プログラムに渡すと、ILE CL プログラムに受け入れられた引き数リストの中にデータ項目へのポインターが入れられます。 CALL...BY CONTENT を使用してデータを ILE CL プログラムに渡すと、データ項目の値が一時ロケーションにコピーされ、コピーの一時ロケーションのアドレスを含むポインターは、ILE CL プログラムに受け入れられた引き数リストに置かれます。

ILE COBOL プログラムにおいて、ILE CL プログラムまたはプロシージャーに渡したい引き数をデータ部に記述する方法は、 他のデータ項目をデータ部に記述するときの方法と同じです。 渡したい引き数の記述方法の詳細については プログラム間でのデータの受け渡しと共用を参照してください。

呼び出し先 ILE CL プログラムにおいて、ILE COBOL プログラムから受け取るパラメーターは、PGM ステートメントの PARM パラメーターに記述します。 受け取るパラメーターの PARM パラメーターに指定する順序は、ILE COBOL プログラムの CALL ステートメントでの順序と同じでなければなりません。 パラメーターの位置のほかに、パラメーターの長さとタイプにも注意してください。 呼び出し先 ILE CL プログラムで指定されているパラメーターの長さとタイプは、 呼び出し側 ILE COBOL プログラムで指定されているパラメーターの長さとタイプと同じに宣言されていなければなりません。

受け取るパラメーターを呼び出し先 ILE CL プログラムに記述するには、DCL ステートメントを使用します。 DCL ステートメントの順序は重要ではありません。 どの変数を受け取るかを決定するのは、PGM ステートメントにパラメーターを指定する際の順序だけです。 次の例は、ILE CL プログラムでパラメーターを記述する方法を示すものです。

     PGM PARM(&P1 &P2);
     DCL VAR(&P1); TYPE(*CHAR) LEN(32)
     DCL VAR(&P2); TYPE(*DEC) LEN(15 5)
     .
     .
     .
     RETURN
     ENDPGM

ILE CL プログラムにおけるパラメーターの記述方法については、「CL プログラミング」を参照してください。

ILE CL と ILE COBOL との間のデータ・タイプの互換性

ILE CL と ILE COBOL のデータ・タイプは異なります。 ILE CL で作成されたプログラムと ILE COBOL で作成されたプログラムとの間でデータを渡したい場合には、 このデータ・タイプの違いに注意する必要があります。 ILE CL と ILE COBOL のデータ・タイプによっては、相手の言語に直接対応するものがない場合があります。

表 20 に ILE COBOL データ・タイプと ILE CL データ・タイプの互換性を示します。

表 20. ILE COBOL と ILE CL との間のデータ・タイプの互換性
ILE COBOL ILE CL 長さ 説明
PIC X(n). TYPE(*CHAR) LEN(n) n n=1〜32,766 の文字フィールド。
01 flag PIC 1.
  88 flag-on  VALUE B'1'.
  88 flag-off VALUE B'0'.
TYPE(*LGL) 1 '1' または '0' を入れる。
PIC S9(n-p)V9(p) COMP-3. TYPE(*DEC) LEN(n p) n/2+1 パック 10 進数。 n の最大値 =15。 p の最大値 =9。
PIC S9(n-p)V9(p) PACKED-DECIMAL. TYPE(*DEC) LEN(n p) n/2+1 パック 10 進数。 n の最大値 =15。 p の最大値 =9。
USAGE IS COMP-1 サポートなし。 4 4 バイトの内部浮動小数点数。
USAGE IS COMP-2 サポートなし。 8 4 バイトの内部浮動小数点数。