lengthItem プロパティーは、EGL が可変長レコードを読み取る際、または書き込む際に使用するフィールドを識別します。
EGL は、ファイルからレコードへの読み取りを実行する際にこのフィールドを設定し、このフィールドによって、ファイルに書き込むバイト数を決定します。 レコードの最大長は、そのレコードに定義されているフィールドに基づきます。 可変長レコードがファイルに書き込まれる際、lengthItem によって指定されているフィールドの値は、最大長以下である必要があります。
長さフィールドは、最大 9 桁の整数です。
可変長レコードを使用する場合は、lengthItem プロパティーまたは numElementsItem プロパティー、あるいはその両方を指定しなければなりません。 この両方のプロパティーがある場合、EGL ではレコードをファイルに書き込みます。EGL では、numElementsItem フィールドを使用してレコードの合計長を計算し、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);
| プラットフォーム | 問題 |
|---|---|
| DL/I | lengthItem 変数は、そのフィールド自体を含む、セグメント全体の長さを含む、DL/I セグメント内のフィールドの名前を含みます。セグメントが可変長
である場合は、lengthItem を指定する
必要があります。このフィールドは SMALLINT であり、DL/I データベース記述内のセグメントの長さフィールドと同じ長さとオフセットを持つ必要があります。
lengthItem が指すフィールドは、 通常は、セグメントの最初のフィールドです。ただし、論理データベース内の連結セグメント が、可変長セグメントの続く固定長セグメントから作成されている場合は、これに該当しません。 |
| WebSphere® MQ | プログラムがレコードをメッセージ・キューに追加する際、 メッセージ長が lengthItem プロパティーで指定する変数内の値に等しく設定されます。 プログラムがメッセージをキューから読み取る際は、 メッセージ長が lengthItem プロパティーで指定された変数に戻されます。 lengthItem プロパティーと numElementsItem プロパティーの両方に変数名を指定した場合、lengthItem 変数は、 メッセージがキューに追加される前のレコード内のエレメントの数から計算された長さに設定されます。 |
他のプラットフォームとリソース関連の問題については、numElementsItem の『互換性』セクションを参照してください。