Strukturierte Datensätze
Verwenden Sie eine strukturierte Datensatzdefinition, wenn Sie das genaue Layout eines externen Dateidatensatzes abgleichen müssen oder ein externes Programm aufrufen müssen, für das Datenfelder an einer genauen Position in einem Parameterpuffer sein müssen.
- Der Datensatz hat ein festgelegtes Layout im Speicher.
- Der Datensatz belegt einen festgelegten Speicherplatz.
- Die Variablenwerte werden im Speicherbereich an einer festgelegten relativen Position (Offset) und Länge angezeigt.
Verwenden Sie beim Erstellen eines strukturierten Datensatzes Ebenennummern, um das genaue Layout der Datensatzfelder im Speicher anzugeben.
- Basiselementtypen (primitive Typen) und Datenelemente mit einer festen oder angegebenen Länge (beispielsweise INT oder CHAR(10), aber nicht STRING)
- Andere strukturierte Datensätze, wenngleich das Feld als Typ CHAR behandelt wird
- Feldgruppen eines beliebigen vorstehenden Typs mit festen Dimensionen
Ein Sonderfall eines strukturierten Datensatzes ist ein Datensatz variabler Länge, in dem EGL durch Suchen in einer Variablen die Informationen vorfindet, die erforderlich sind, um die Datensatzgröße zu bestimmen. Weitere Informationen finden Sie unter Datensätze variabler Länge.
Datensätze mit Unterstrukturen
Record CustomerRecord type BasicRecord
10 phoneNumber CHAR(10);
20 areaCode CHAR(3);
20 localNumber CHAR(7);
end
Nach dem Deklarieren einer Variablen auf Basis dieses Datensatzabschnitts (beispielsweise myCustomer) und nach dem Lesen von Informationen in die Variable können Sie auf die gesamte Telefonnummer als myCustomer.phoneNumber zugreifen. Alternativ können Sie auch auf Teile der Telefonnummer zugreifen, indem Sie die Punktsyntax verwenden (beispielsweise myCustomer.phoneNumber.localNumber oder - einfacher - myCustomer.localNumber).
Strukturierte Datensätze als Felder
record Outer
5 a INT;
5 b Inner; // sieht wie ein Datensatz aus, ist jedoch eigentlich 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
Strukturierte Datensätze in Ein-/Ausgabe
- IndexedRecord
- RelativeRecord
- SerialRecord
- MQRecord
Es hat sich bewährt, bei diesen Datensätzen Ebenennummern zu verwenden, um deutlich zu machen, dass es sich um strukturierte Datensätze handelt. Weitere Informationen finden Sie in den zugehörigen Referenzen am Ende dieses Themas.