numElementsItem

numElementsItem プロパティーは、コードで可変長レコードを処理する際に使用されるフィールドを識別します。

numElementsItem プロパティーは、以下の Record ステレオタイプとともに使用されます。

可変長レコードには、最終の最上位構造体フィールドとして構造化フィールド配列がある必要があります。 numElementsItem で参照するフィールドは、書き込まれる実際の配列要素数を含む 9 桁以下の整数です。 値の範囲は、0 から最大値 (構造化フィールド配列の宣言で指定された要素の数が最大値) です。

書き出されたバイト数は、以下の値の合計と等しくなります。

numElementsItem フィールドは、可変長レコードの固定長部分にあるフィールドでなければなりません。 非修飾参照を使用して、要素フィールド数に名前を付けます。例えば、myRecord.myField02 ではなく myField02 を使用します。

numElementsItem プロパティーは、ファイルからレコードを読み取っているときには無効です。

可変長レコードを使用する場合は、lengthItem プロパティーまたは numElementsItem プロパティー、あるいはその両方を指定しなければなりません。 この両方のプロパティーがある場合、EGL ではレコードをファイルに書き込みます。EGL では、numElementsItem フィールドを使用してレコードの合計長を計算し、lengthItem が指定する変数にその長さを配置してからレコードを書き込みます。 詳しくは、可変長レコードを参照してください。

次の例は、numElementsItem プロパティーを持つ可変長レコード・パーツを示します。
  Record SerialRecordPart2 type serialRecord
    {
      fileName = "myFile",
      numElementsItem = myField02
    }
    10 myField01 BIN(4);   // 2 バイト長
    10 myField02 NUM(3);   // 3 バイト長
    10 myField03 CHAR(20)[3]; // 60 バイト長
       20 mySubField01 CHAR(10);
       20 mySubField02 CHAR(10);
  end

numElementsItem フィールド myField02 が 2 に設定されている SerialRecordPart2 に基づいてレコードの書き込みを行っているとします。 EGL は、myField01myField02、および myField03 の最初の 2 つの要素を含んだ可変長レコードを書き込みます。

互換性

表 1. numElementsItem の互換性に関する考慮事項
プラットフォーム 問題
CICS® 一時ストレージ・キューと一時データ・キューでは、可変長レコードはサポートされていません。
IMS/VS numElementsItem および lengthItem は、IMS™ メッセージ・キューと関連付けられたシリアル・ファイルでのみサポートされています。 EGL は、キューに書き込むレコードに IMS メッセージ・ヘッダー (長さ、ZZ フィールド、 およびトランザクション・コード) を追加します。EGL は、キューから読み取るレコードからこのヘッダーを削除します。レコードの定義をヘッダーに含めないでください。
IMS BMP IMS メッセージ・キューと関連付けられたファイルの場合は、IMS/VS に関する考慮事項が IMS BMP に当てはまります。それ以外の場合は、z/OS® バッチに関する考慮事項が当てはまります。
iSeriesC サポートされていません。

Java 生成
デバッグ

Java™ とデバッグでは、ファイル・タイプ seqwsmq、および ibmcobol で可変長レコードをサポートします。
z/OS バッチ

可変長レコードは、VSAM ファイルおよび z/OS 順次ファイルで サポートされます。

VSAM でない順次ファイルの可変長レコードは、4 バイトのヘッダーを持ちます (長さフィールド 2 バイトとフィラー・フィールド 2 バイト)。EGL では、可変レコード・フォーマットの非 VSAM 順次ファイルに書き込む際、4 バイトの可変長ヘッダーを追加します。 EGL では、このレコードを読み取るときに、そのヘッダーを削除します。 レコードの定義をヘッダーに含めないでください。

そのファイルが GSAM ファイルの場合、EGL では、ファイルにレコードを書き込むときに 2 バイトの先行長さフィールドをレコードに追加します。EGL は、ファイルから読み取るレコードからこのヘッダーを削除します。レコードの定義をヘッダーに含めないでください。


フィードバック