Codierbeispiel: Dateihandling
Autor: Peter Hinsberg

Situation:
In eine Datei (sequentiell oder indiziert) soll etwas hineingeschrieben werden (hier: eine sequentielle Datei, aber auf indizierte Dateien übertragbar).
Die einmal hineingeschriebenen Datensätze sollen weiterhin bestehenden bleiben, nachfolgende Datensätze sollen an die Datei angehängt werden.
Die Datei ist "ordnungsgemäß" in der INPUT-OUTPUT SECTION und der DATA DIVISION definiert.
"Übliche Vorgensweise" in der PROCEDURE DIVISION wäre:

*-------------------------------------------*
OPEN EXTEND SCHREIBEN
*-------------------------------------------*


Dies setzt aber voraus, daß die betreffende Datei bereits vorhanden ist.
Wird der Befehl ausgeführt und die Datei ist nicht vorhanden, so bricht das Programm zwar nicht zur Laufzeit ab, aber alle weiteren READ- und WRITE- Anweisungen wären erfolglos bzw. ohne Ergebnis oder das Programm "verrennt" sie an einem Punkt und kommt dadurch nicht mehr zum Ende.
Es empfiehlt sich also, ganz zu Anfang des Programms eine Art "Vorlauf" zu schreiben:

*-------------------------------------------*
OPEN EXTEND SCHREIBEN
IF FILE-STATUS NOT "00"
   OPEN OUTPUT SCHREIBEN
   CLOSE SCHREIBEN
   OPEN EXTEND SCHREIBEN
END-IF
*-------------------------------------------*
Erklärung:

1. Zeile: In der ersten Zeile versucht das Programm die Datei zum beschreiben (mit "anhängen") zu öffnen.
Mit "anhängen" bedeutet, daß bestehende Daten in der Datei nicht überschrieben werden, sondern nachfolgend hineingeschriebene Datensätze am Ende der Datei hinzugefügt werden (wie oben gefordert).
Zu dieser Operation liefert das System einen Filestatus. Ist die Datei vorhanden, so ist dieser "00", und die Anweisung ist damit beendet.

2. Zeile: Ist die Datei nicht vorhanden, so ist der zurückglieferte Filestatus NICHT "00" und das Programm geht in die IF-Bedingung hinein.

3. Zeile: Ist das Programm in der IF-Bedingung, so führt es einen "OPEN OUTPUT" durch. Dieser Befehl erzeugt die anschließend genannte Datei und öffnet sie zum schreiben (OHNE "ANHÄNGEN"!).
Führt man einen "OPEN OUTPUT" auf eine bestehende Datei aus, so überschreiben die nachfolgend in diese Datei geschriebenen Datensätze die bereits vorhandenen. - Sämtliche Inhalte werden gelöscht!

4. Zeile: Die soeben erzeugte Datei wird wieder geschlossen, und ihre Größe beträgt nun 0 Bytes. Hätte die Datei vorher schon bestanden, so würde ihre Länge nun ebenfalls 0 Bytes betragen.

5. Zeile: Die Datei wird nun im gewünschten Modus ("EXTEND" - also mit "anhängen") geöffnet.
Das Programm schließt die IF-Anweisungen ab und geht wieder zum normalen Programmverlauf über.

Die entsprechenden Befehle für eine indizierte Datei lauten:

*-------------------------------------------*
OPEN I-O SCHREIBEN
IF FILE-STATUS NOT "00"
   OPEN OUTPUT SCHREIBEN
   CLOSE SCHREIBEN
   OPEN I-O SCHREIBEN
END-IF
*-------------------------------------------*


...