外部ファイル・レコードのレイアウトを適切に設定したり、データ・フィールドがパラメーター・バッファー内で適切な位置にあることを要求する外部プログラムを呼び出す場合に、構造化レコード定義を使用します。
構造化レコードを作成するときは、レベル番号を使用してストレージ内のレコード・フィールドのレイアウトを適切に指定します。
構造化レコードの特殊なケースとして、可変長レコードがあります。この場合、EGL は変数を確認することによって、レコードのサイズを判別するために必要な情報を見つけます。詳しくは、可変長レコードを参照してください。
Record CustomerRecord type BasicRecord
10 phoneNumber CHAR(10);
20 areaCode CHAR(3);
20 localNumber CHAR(7);
end
このレコード・パーツ (myCustomer など) に基づいて変数を宣言し、 変数に情報を読み込むと、myCustomer.phoneNumber として電話番号全体にアクセスできます。 また、ドット構文 (例えば、myCustomer.phoneNumber.localNumber、またはもっと単純に、myCustomer.localNumber) を使用して、部分的な電話番号にアクセスすることができます。
record Outer
5 a INT;
5 b Inner; // looks like a record, but is actually CHAR
end
record Inner
10 c CHAR(10);
15 c2 CHAR(10);
10 d CHAR(10);
end
record Outer
5 a INT;
5 b CHAR(20);
10 c CHAR(10);
15 c2 CHAR(10);
10 d CHAR(10);
end
ここでのベスト・プラクティスは、これらのレコードでレベル番号を使用して、構造化されていることを明確にすることです。詳しくは、このトピックの最後にある『関連参照』を参照してください。