可変長フィールド

CRTCBLMOD コマンドまたは CRTBNDCBL コマンドの CVTOPT パラメーターに *VARCHAR、または PROCESS ステートメントに VARCHAR オプションを指定すると、 可変長フィールドをプログラムで使用することができます。 *VARCHAR を指定すると、ILE COBOL プログラムは外部記述ファイルの可変長フィールドを ILE COBOL グループ項目に変換します。

そのようなグループ項目の例を次に示します。

      06  ITEM1.
          49  ITEM1-LENGTH     PIC S9(4) COMP-4.
          49  ITEM1-DATA       PIC X(n).

n は可変長フィールドの最大長です。 プログラムの中で、PIC S9(4) COMP-4 はこのタイプの他の宣言と同様に扱われ、PIC X(n) は標準的な英数字として扱われます。

*VARCHAR を指定しないと、可変長フィールドは無視され、ILE COBOL プログラム中の FILLER フィールドとして宣言されます。 *NOVARCHAR を指定しない場合、項目は次のように宣言されます。

  06  FILLER     PIC x(n+2).

構文については CVTOPT パラメーターにある CVTOPT パラメーターを参照してください。

プログラムでは、生成されたデータ部分に対して有効な、あらゆる文字操作を実行できます。 ただし、フィールドの構造上、長さ部分は有効な 2 進データでなければなりません。 それが負の場合または最大フィールド長より大きい場合、このデータは無効です。

フィールドの最初の 2 バイトに有効な 2 進数が入っていない場合に、 そのフィールドを含むレコードに WRITE や REWRITE を実行しようとするとエラーになり、ファイル状況 90 が戻されます。

可変長フィールドを指定する場合、次の条件が適用されます。

可変長フィールドを使用するプログラムの例については 可変長 DBCS グラフィック・フィールドの使用例を参照してください。