lengthItem

lengthItem プロパティーは、EGL が可変長レコードを読み取る際、または書き込む際に使用するフィールドを識別します。

lengthItem プロパティーは、 次のいずれかのステレオタイプでのみ使用してください。

EGL は、ファイルからレコードへの読み取りを実行する際にこのフィールドを設定し、このフィールドによって、ファイルに書き込むバイト数を決定します。 レコードの最大長は、そのレコードに定義されているフィールドに基づきます。 可変長レコードがファイルに書き込まれる際、lengthItem によって指定されているフィールドの値は、最大長以下である必要があります。

長さフィールドには、次のいずれかの変数を使用できます。

長さフィールドは、最大 9 桁の整数です。

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

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

myOtherField NUM(4);
レコードを書き込む際、最後のフィールドが文字フィールドでない限り、長さフィールドの値はフィールドの境界と一致していなければなりません。 例えば、SerialRecordPart1 タイプのレコードでは、長さフィールド myOtherField を以下のどの値にも設定できます。
2
書き込まれるレコードに、myField01 のみが含まれます。
5
書き込まれるレコードに、myField01 および myField02 が含まれます。
6-25
書き込まれるレコードに、myField01myField02、および myField03 の一部分が含まれます。

互換性

表 1. lengthItem の互換性に関する考慮事項
プラットフォーム 問題
DL/I lengthItem 変数は、そのフィールド自体を含む、セグメント全体の長さを含む、DL/I セグメント内のフィールドの名前を含みます。セグメントが可変長 である場合は、lengthItem を指定する 必要があります。このフィールドは SMALLINT であり、DL/I データベース記述内のセグメントの長さフィールドと同じ長さとオフセットを持つ必要があります。

lengthItem が指すフィールドは、 通常は、セグメントの最初のフィールドです。ただし、論理データベース内の連結セグメント が、可変長セグメントの続く固定長セグメントから作成されている場合は、これに該当しません。

WebSphere® MQ プログラムがレコードをメッセージ・キューに追加する際、 メッセージ長が lengthItem プロパティーで指定する変数内の値に等しく設定されます。 プログラムがメッセージをキューから読み取る際は、 メッセージ長が lengthItem プロパティーで指定された変数に戻されます。 lengthItem プロパティーと numElementsItem プロパティーの両方に変数名を指定した場合、lengthItem 変数は、 メッセージがキューに追加される前のレコード内のエレメントの数から計算された長さに設定されます。

他のプラットフォームとリソース関連の問題については、numElementsItem の『互換性』セクションを参照してください。


フィードバック