Hinweise zur Anweisung 'set' für Datei-Ein-/Ausgabe

Im Kontext der Datei-Ein-/Ausgabe ohne Datenbankbezug können mit der EGL-Anweisung 'set' alle Felder in einer Datensatzvariablen zurückgesetzt werden und im Falle des Stereotyps 'IndexedRecord' die Positionen der Dateizeiger geändert werden.

Wenn Sie diese Anweisung mit dem Stereotyp 'CSVRecord' verwenden, ist nur das folgende Format zulässig: set empty.

Syntax

Syntax der Anweisung 'set' für Datei-Ein-/Ausgabe
Datensatzvariable
Der Name einer indexierten, relativen oder seriellen Datensatzvariablen, für die die Anweisung set ausgeführt wird.
Wert
Dies ist der Typ der set-Operation, die ausgeführt werden soll. Mögliche Werte:
empty
In diesem Fall erfolgt die Verarbeitung der Anweisung 'set' rekursiv durch alle im Datensatz enthaltenen Datensatzvariablen oder, im Fall eines strukturierten Datensatzes, bis zur untersten Ebene der Struktur. Einzelne Felder werden entsprechend ihren Typen gesetzt. Details zu diesen Werten finden Sie unter Dateninitialisierung.
initial
In einer Datensatzvariablen kann für jedes ihrer Felder ein Anfangswert angegeben werden. Der Änderungswert 'initial' setzt die Werte dieser Felder auf die in der Datensatzdefinition angegebenen Werte zurück. Werden in der Datensatzdefinition keine Anfangswerte angegeben, hat der Änderungswert 'initial' denselben Effekt wie der Änderungswert 'empty'.
position
Dieses Schlüsselwort ist nur für den Stereotyp 'IndexedRecord' verfügbar.
Beim Stereotyp 'IndexedRecord' wird durch den Wert des in der Eigenschaft 'keyItem' angegebenen Felds festgelegt, wo der Datensatzzeiger positioniert wird. Anschließend können Sie mithilfe der Anweisung 'get next' oder 'get previous' auf die Datei zugreifen. Wenn das Schlüsselfeld auf null gesetzt ist, wird der Dateizeiger vor dem ersten Datensatz positioniert. Wenn das Schlüsselfeld mit dem hexadezimalen Wert FF gefüllt ist, wird der Dateizeiger nach dem letzten Datensatz positioniert.

Beispiel

Das folgende Beispiel zeigt die Verwendung der Anweisung 'set' mit einem indexierten Datensatz:
package com.companyb.customer;

Record IndexedRecordExample type IndexedRecord {
    fileName = "C:\\temp\\indexfile.txt",
    keyItem = indKey
    }
  10 indKey INT;
    15 indKeyAsHex HEX(8);
  10 indTitle CHAR(30);
  10 indAuthor CHAR(30);
end

program readall
  myIndexedRecord IndexedRecordExample;

  Function main()
    // 'indKey' wird auf 0 gesetzt, alle anderen Felder sind leer
    set myIndexedRecord empty;

    myIndexedRecord.indKeyAsHex = x"FFFFFFFF";
    // Positionierung am Ende der Datei
    set myIndexedRecord position;

    ...
  end  // Ende von 'main()'
end  // Ende von 'program'

Feedback