Im Kontext der Datei-Ein-/Ausgabe ohne Datenbankbezug wird mit der EGL-Anweisung 'add' ein Datensatz in eine Datei gestellt.
Das genaue Verhalten des Befehls und die Position des neu eingestellten Datensatzes hängen vom Stereotyp des mit dem Befehl verwendeten Datensatzes ab. Weitere Informationen finden Sie in den einzelnen Abschnitten in diesem Thema.

Wenn Sie einen Datensatz mit dem Stereotyp 'CSVRecord' hinzufügen, wird der Datensatz am Ende der Datei eingefügt.
Wenn der aktuelle Datensatz der erste Datensatz ist, der in die Datei geschrieben wird, prüft EGL die Eigenschaft 'labels' für den Datensatz. Ist die Eigenschaft ungleich null, schreibt EGL die Header für die Spalten, wobei das in der Eigenschaft 'delimiter' angegebene Begrenzungszeichen verwendet wird, um die einzelnen Header voneinander zu trennen.
Für jede Datenzeile verwendet EGL die vorhandenen Konvertierungsregeln zum Konvertieren der Werte in Zeichenfolgen. Die einzige Ausnahme sind boolesche Werte (Typ BOOLEAN), die EGL entweder in die Zeichenfolge 'true' (wahr) oder 'false' (falsch) konvertiert. Anschließend verkettet EGL die Zeichenfolgen zu einer Datenzeile, wobei die einzelnen Zeichenfolgen durch Begrenzungszeichen voneinander getrennt sind. Abschließend schreibt EGL die Zeile an das Ende der Datei, gefolgt vom entsprechenden Zeilenendezeichen für das System ("\n", "\r" oder "\r\n").
Sie können eine Feldgruppe aus Datensätzen mit der Anweisung 'add' angeben. Eine Nullfeldgruppe löst eine Ausnahmebedingung vom Typ 'NullValueException' aus. Andernfalls durchläuft EGL die Feldgruppe in einer Schleife und führt für jedes Member der Feldgruppe eine Anweisung 'add' aus. Die Datei bleibt für weitere Schreibvorgänge geöffnet. Mit CSV-Datensätzen kann die Anweisung 'close' verwendet werden.
Wenn Sie einen Datensatz mit dem Stereotyp 'IndexedRecord' hinzufügen, wird anhand des Schlüssels im Datensatz die logische Position des Datensatzes in der Datei bestimmt. Wird ein Datensatz zu einer Dateiposition hinzugefügt, die bereits belegt ist, führt dies zum permanenten E/A-Fehler 'unique' bzw. zum sporadischen E/A-Fehler 'duplicate' (wenn doppelte Einträge zulässig sind).
Wenn Sie einen Datensatz mit dem Stereotyp 'RelativeRecord' hinzufügen, wird anhand des Werts im Datensatznummernfeld (in der Eigenschaft 'recordNumberItem') die Position des Datensatzes in der Datei bestimmt. Wird ein Datensatz zu einer Dateiposition hinzugefügt, die bereits belegt ist, führt dies zum permanenten E/A-Fehler 'unique'.
Wenn Sie einen Datensatz mit dem Stereotyp 'SerialRecord' hinzufügen, wird der Datensatz am Ende der Datei eingefügt.
Sobald das Programm den Operationsmodus für die Datei ändert (von Schreiben in Lesen bzw. von Lesen in Schreiben), wird die Datei von EGL geschlossen und erneut geöffnet. So schließt EGL beispielsweise die Datei, wenn Sie eine Anweisung 'add' verwenden, um Daten in einen seriellen Datensatz zu schreiben, und anschließend eine Anweisung 'get next' ausgeben, um Daten aus derselben Datei zu lesen. Eine Anweisung 'add', die auf eine Anweisung 'get next' folgt, fügt einen Datensatz am Anfang der Datei hinzu. Eine Anweisung 'get next', die auf eine Anweisung 'add' folgt, liest den ersten Datensatz in der Datei. Zu diesem Verhalten kommt es auch, wenn sich die Anweisungen 'get next' und 'add' in unterschiedlichen Programmen befinden und eines dieser Programme das andere aufruft.
Öffnen Sie ein und dieselbe Datei nicht in mehreren Programmen gleichzeitig.
if (userRequest == "A")
try
add record1;
onException(fileErr FileIOException)
myErrorHandler(fileErr);
end
end
| Plattform | Problem |
|---|---|
| VSAM | Wenn Ihr Programm eine Anweisung 'add' verwendet, um eine Zugangsfolgedatei (Entry Sequence Data Set) zu schreiben, und eine Anweisung 'get next' ausgibt, um Daten aus derselben Datei zu lesen, wird die Datei von EGL geschlossen und erneut geöffnet, sobald das Programm den Operationsmodus für die Datei ändert (von Schreiben in Lesen bzw. von Lesen in Schreiben). Daher gilt: Eine Anweisung 'get next', die auf eine Anweisung 'add' folgt, liest den ersten Datensatz in der Datei. Ebenso gilt: Eine Anweisung 'add', die auf eine Anweisung 'get next' folgt, fügt einen Datensatz am Anfang der Datei hinzu. Zu diesem Verhalten kommt es auch, wenn sich die Anweisungen 'get next' und 'add' in unterschiedlichen Programmen befinden und eines dieser Programme das andere aufruft. |