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.

Ein strukturierter Datensatz weist folgende Merkmale auf:

Verwenden Sie beim Erstellen eines strukturierten Datensatzes Ebenennummern, um das genaue Layout der Datensatzfelder im Speicher anzugeben.

Die Feldtypen in einem strukturierten Datensatz müssen eine feste Länge haben. EGL unterstützt die folgenden Typen in Strukturfeldern (strukturierten Datensatzfeldern):

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

Jedes Feld in einem strukturierten Datensatz kann Unterstrukturen enthalten, also als Summe kleinerer Felder deklariert werden. Jedem Feld wird eine beliebige Ebenennummer zugeordnet, wobei Zahlen höherer Ebene ein Unterstrukturfeld angeben. Im folgenden Beispiel wird ein Feld definiert, das eine Telefonnummer enthält:
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

Das folgende Beispiel zeigt einen strukturierten Datensatz, der einen weiteren strukturierten Datensatz als Feld enthält:
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
Das Feld Outer.b ist mit dem Typ Inner definiert und verweist auf einen Datensatz. Der eigentliche Typ für Outer.b ist jedoch CHAR(20). Die Länge des Felds CHAR wird durch die Gesamtlänge des Datensatzes bestimmt. Der Datensatz Outer könnte stattdessen wie folgt definiert werden:
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

Strukturierte Datensätze werden vornehmlich für Ein-/Ausgabe mit bestimmten Datenzugriffstechnolgoien verwendet wie beispielsweise hierarchischen Datenbanken, Nachrichtenwarteschlangen und indexierten Dateien. Bei den folgenden Datensatzstereotypen geht EGL von strukturierten Datensätzen aus, selbst wenn die Felder keine Ebenennummern enthalten:

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.


Feedback