Einführung in Datensatzabschnitte

Datensatzabschnitte sind Zusammenstellungen anderer Datenabschnitte. Die Datenabschnitte in einem Datensatzabschnitt werden als Felder bezeichnet. Ein Datensatzabschnitt kann beliebig viele Felder enthalten. Bei den Feldern kann es sich um Basiselemente, Datenelemente oder andere Datensätze handeln.

Ein einfacher Datensatzabschnitt besteht aus einer Gruppe von anderen Datenabschnitten. Im folgenden Beispiel sind drei verschiedene Basiselemente in einem einzigen Datensatzabschnitt zusammengefasst:
Record primitiveRec type BasicRecord
    integerField  INT;
    stringField   STRING;
    charField     CHAR(30);
end
Die Erstellung einer Variablen auf der Grundlage dieses Datensatzabschnitts hat Ähnlichkeit mit der Erstellung einer Variablen, die auf einem Datenelementabschnitt oder einem Basiselement basiert:
myRecVar primitiveRec;
Die Datensatzvariable selbst enthält keinen Wert, aber die Felder im Datensatz enthalten Werte. Sobald eine Variable vorhanden ist, die auf einem Datensatzabschnitt basiert, können Sie auf die Felder im Datensatz so zugreifen, als ob es sich um einzelne Variablen handeln würde:
myRecVar.integerField = 6;
myRecVar.stringField = "Hello";
myRecVar.charField = "Character field";
Der Datensatz verhält sich jedoch weiter als gemeinsame Einheit. Sie können daher mit einem einzelnen Parameter Funktionen an ihn übergeben. Beispiel:
myFunction(myRecVar);

Datensatzstereotypen

Datensatzabschnitte können mit einem Stereotyp spezialisiert werden (siehe Stereotype). Sie legen den Stereotyp für einen Datensatzabschnitt mit dem Schlüsselwort type fest. Dies ist im folgenden Beispiel für einen Datensatzabschnitt mit dem Stereotyp BasicRecord dargestellt:
Record myCustomerRecord type BasicRecord
    customerNumber     INT;
    customerFirstName  STRING;
    customerLastName   STRING;
    customerBalance    FLOAT;
end

Der Stereotyp BasicRecord kennzeichnet einen vielseitig einsetzbaren Datensatzabschnitt. Sie können diesen Stereotyp verwenden, wenn Sie eine oder mehrere Variablen zur Vereinfachung in einer Gruppe zusammenfassen wollen.

Da Datensatzabschnitte normalerweise Datensätze oder andere Gruppen von zusammengehörenden Daten in einer Datenquelle darstellen, spezialisieren die anderen anwendbaren Stereotypen einen Datensatzabschnitt für die Verwendung mit einem bestimmten Datenquellentyp. Der Stereotyp SQLRecord passt den Datensatzabschnitt beispielsweise für die Verwendung mit einer SQL-Datenbank an. Wenn Sie einen Datensatzabschnitt dieses Typs erstellen, verwenden Sie Eigenschaften, um den Datensatz und seine Felder mit der Datenbanktabelle und ihren Spalten zu verknüpfen:
Record myCustomerRecordSQL type SQLRecord
    { tableNames = [["Customer"]], keyItems = [customerNumber] }
    customerNumber     int     {column = "CustomerID"};
    customerFirstName  string  {column = "FirstName"};
    customerLastName   string  {column = "LastName"};
end
In diesem Fall ist der Datensatz mit einer Datenbanktabelle namens Customer verknüpft, die die Spalten CustomerID, FirstName und LastName enthält. Wenn Sie einen Datensatz auf diese Weise mit einer Datenbanktabelle verknüpfen, kann EGL diese Informationen verwenden, um gemäß Ihren Interaktionen mit dem Datensatz auf die Datenbank zuzugreifen. Einfach ausgedrückt können Sie den Datensatz so verwenden, als ob er eine Zeile in der Datenbank wäre.
Der folgende Code verwendet beispielsweise den im obigen Beispiel definierten Datensatzabschnitt, um eine bestimmte Zeile aus der Datenbank abzurufen:
myRecordVar myCustomerRecordSQL;
myRecordVar.customerNumber = 5;
get myRecordVar;
SysLib.writeStderr("Name: " +
    myRecordVar.customerFirstName + " " +
    myRecordVar.customerLastName);

Weitere Stereotypen, die Sie zu Datensatzabschnitten hinzufügen können, sind 'IndexedRecord', 'SerialRecord', 'RelativeRecord' und 'CSVRecord'. Sie werden für den Zugriff auf andere Dateitypen verwendet.

Strukturierte Datensätze

Datensatzabschnitte können strukturiert sein, um weitere Details über das Layout und die Organisation ihrer Felder bereitzustellen. In einem strukturierten Datensatz ist jedem Feld eine Stufennummer zugewiesen. Dies ist eine beliebige Nummer, die die Beziehung des Feldes zu anderen Feldern darstellt.

Die Felder in einem unstrukturierten Datensatz besitzen keine Stufennummern. Für alle Felder wird daher dieselbe Stufe angenommen. Strukturierte Datensätze können ebenfalls dieses Verhalten aufweisen, wenn alle Felder dieselbe Stufennummer besitzen:
record structRec1 type BasicRecord
    10 field1 int;
    10 field2 int;
    10 field3 int;
end
Durch unterschiedliche Stufennummern werden im Datensatz Unterstrukturen erstellt:
Record CustomerRecord type BasicRecord
  10 phoneNumber CHAR(10); 
    20 areaCode CHAR(3); 
    20 localNumber CHAR(7);
end
In diesem Fall sind die Felder areaCode und localNumber Unterfelder des Feldes phoneNumber. Sie können auf das Feld phoneNumber zugreifen, um den gesamten Wert des Feldes abzurufen. Sie können aber auch auf die Felder areaCode oder localNumber zugreifen, um einen Teil des Wertes abzurufen, der im Feld phoneNumber enthalten ist.

Strukturierte Datensätze können nur Felder mit fester Länge enthalten. Weitere Informationen zu den Einschränkungen und den Verwendungszwecken von strukturierten Datensätzen finden Sie unter Datensätze.


Feedback