レコード・パーツは、他のデータ・パーツの集合です。レコード・パーツ内のデータ・パーツは、フィールドと呼ばれます。レコード・パーツには、任意の数のフィールドを含めることができます。フィールドは、プリミティブ、データ項目、またはその他のレコードのいずれでもかまいません。
Record primitiveRec type BasicRecord
integerField INT;
stringField STRING;
charField CHAR(30);
end
このレコード・パーツに基づいて変数を作成する作業は、Dataitem パーツやプリミティブに基づいて変数を作成する作業と似ています。myRecVar primitiveRec;
myRecVar.integerField = 6;
myRecVar.stringField = "Hello";
myRecVar.charField = "Character field";
myFunction(myRecVar);
Record myCustomerRecord type BasicRecord
customerNumber INT;
customerFirstName STRING;
customerLastName STRING;
customerBalance FLOAT;
end
BasicRecord ステレオタイプは、 汎用レコード・パーツを示しています。1 つ以上の変数をグループ化して簡単にする場合、このステレオタイプを使用できます。
Record myCustomerRecordSQL type SQLRecord
{ tableNames = [["Customer"]], keyItems = [customerNumber] }
customerNumber int {column = "CustomerID"};
customerFirstName string {column = "FirstName"};
customerLastName string {column = "LastName"};
end
この場合、CustomerID、FirstName、および LastName という列を持つ Customer というデータベース表に、レコードがリンクされます。
このようなデータベース表にレコードをリンクさせると、EGL はこの情報を使用して、ユーザーとレコードとの対話に基づいてデータベースにアクセスします。
つまり、まるでデータベース内の行を扱うかのように、レコードを使用できることになります。myRecordVar myCustomerRecordSQL;
myRecordVar.customerNumber = 5;
get myRecordVar;
SysLib.writeStderr("Name: " +
myRecordVar.customerFirstName + " " +
myRecordVar.customerLastName);
レコード・パーツに追加できるその他のステレオタイプには、IndexedRecord、SerialRecord、RelativeRecord、および CSVRecord があります。これらは、さまざまなタイプのファイルへのアクセスに使用されます。
レコード・パーツのフィールドのレイアウトと編成に関する詳細を提供するために、レコード・パーツを構造化 できます。構造化レコードの各フィールドには、レベル番号 (そのフィールドと他のフィールドとの関係を示す任意の番号) が割り当てられます。
record structRec1 type BasicRecord
10 field1 int;
10 field2 int;
10 field3 int;
end
Record CustomerRecord type BasicRecord
10 phoneNumber CHAR(10);
20 areaCode CHAR(3);
20 localNumber CHAR(7);
end
この場合、フィールド areaCode および localNumber が、
フィールド phoneNumber のサブフィールドになります。
phoneNumber フィールドにアクセスすると、フィールドの値全体を取得することができます。areaCode フィールドまたは localNumber フィールドにアクセスすると、phoneNumber フィールドに保存されている値の一部を取得できます。構造化レコードは、固定長のフィールドに制限されます。構造化レコードの制限と使用法の詳細については、レコードを参照してください。