Direkt zum Hauptinhalt springen
eLearner.app
Modul 5 · Lektion 2 von 210/10 im Kurs~15 min
Lektionen des Moduls (2/2)

Datei-E/A-Operationen

Sobald eine Datei verknüpft und in der DATA DIVISION deklariert ist, können wir sie innerhalb der PROCEDURE DIVISION bearbeiten. In COBOL folgt die Verwaltung des Lebenszyklus einer Datei einem standardmäßigen und imperativen Ablauf: Öffnen, Operation (Lesen oder Schreiben) und Schließen.


1. Öffnen von Dateien: Die OPEN-Anweisung

Bevor Sie eine Datei lesen oder schreiben können, muss diese geöffnet werden, wobei der entsprechende Zugriffsmodus anzugeben ist:

Code
       OPEN INPUT SALES-FILE.

Die Hauptmodi sind:

  • INPUT: Die Datei wird im schreibgeschützten Modus geöffnet. Die Datei muss auf der Festplatte vorhanden sein, andernfalls bricht das Programm mit einem Fehler ab.
  • OUTPUT: Die Datei wird im Schreibmodus geöffnet. Wenn die Datei bereits existiert, wird ihr vorheriger Inhalt gelöscht (Überschreiben). Wenn sie nicht existiert, wird sie erstellt.
  • EXTEND: Die Datei wird zum Hinzufügen von Daten geöffnet (Append). Die neuen Datensätze werden ab dem Ende der vorhandenen Datei geschrieben.
  • I-O: Die Datei wird sowohl zum Lesen als auch zum Schreiben geöffnet (wird hauptsächlich für Dateien mit relativem oder indiziertem Zugriff verwendet, nicht für sequenzielle lineare Dateien).

2. Lesen von Daten: Die READ-Anweisung

Um einen Datensatz aus einer sequenziellen Datei zu lesen, verwenden wir die Anweisung READ. Da wir nicht im Voraus wissen, wie viele Datensätze die Datei enthält, müssen wir die Dateiende-Bedingung (EOF - End Of File) immer mit der Klausel AT END verwalten:

Code
       READ SALES-FILE
           AT END MOVE "Y" TO WS-EOF
       END-READ.
  • READ SALES-FILE: Beachten Sie, dass sich die Anweisung auf den logischen Namen der Datei bezieht (definiert in SELECT und FD), nicht auf den Datensatz.
  • AT END: Gibt die Anweisungen an, die ausgeführt werden sollen, wenn versucht wird, über den letzten verfügbaren Datensatz hinaus zu lesen. Üblicherweise wird eine Flag-Variable (wie WS-EOF) auf "Y" gesetzt.
  • END-READ: Schließt die Leseanweisung explizit ab.

3. Schreiben von Daten: Die WRITE-Anweisung

Um Daten in eine Datei einzufügen, verwenden wir die Anweisung WRITE.

[!WARNING] In COBOL liest man eine Datei (READ SALES-FILE), schreibt aber einen Datensatz (WRITE SALES-RECORD). Das Schreiben von WRITE SALES-FILE ist ein häufiger Syntaxfehler, der die Kompilierung verhindert.

Code
       MOVE 1001 TO EMP-ID.
       MOVE "MARIO ROSSI" TO EMP-NAME.
       WRITE SALES-RECORD.

Vor dem Ausführen von WRITE müssen die untergeordneten Felder der Gruppenstruktur des FD-Datensatzes (in diesem Fall SALES-RECORD) im Speicher entsprechend initialisiert worden sein.


4. Schließen von Dateien: Die CLOSE-Anweisung

Am Ende der Verarbeitung muss jede geöffnete Datei geschlossen werden, um Systemressourcen freizugeben und sicherzustellen, dass alle Daten tatsächlich auf die Festplatte geschrieben werden:

Code
       CLOSE SALES-FILE.

Beachten Sie, dass die Anweisung CLOSE den logischen Namen der Datei als Argument akzeptiert (und nicht den Datensatz).


Probier es selbst aus

Übung#cobol.m5.l2.e1
Versuche: 0Wird geladen…

Vervollständigen Sie die PROCEDURE DIVISION, indem Sie die Datei SALES-FILE im Modus INPUT öffnen, den ersten Datensatz lesen und die Kontrollvariable WS-EOF auf 'Y' setzen, wenn das Dateiende erreicht ist. Denken Sie schließlich daran, die Datei vor dem Beenden zu schließen.

Editor wird geladen…
Hinweis anzeigen

Schreiben Sie der Reihe nach: OPEN INPUT SALES-FILE., dann READ SALES-FILE AT END MOVE 'Y' TO WS-EOF END-READ., dann CLOSE SALES-FILE. und schließlich STOP RUN.

Lösung nach 3 Versuchen verfügbar

Übung#cobol.m5.l2.e2
Versuche: 0Wird geladen…

Vervollständigen Sie die PROCEDURE DIVISION, indem Sie die Datei SALES-FILE im Modus OUTPUT öffnen. Verschieben Sie den Wert 1001 in das Feld SALES-ID und 250.50 in das Feld SALES-AMOUNT, und schreiben Sie dann den Datensatz SALES-RECORD in die Datei. Schließen Sie schließlich die Datei, bevor Sie das Programm beenden.

Editor wird geladen…
Hinweis anzeigen

Öffnen Sie die Datei mit OPEN OUTPUT SALES-FILE., verwenden Sie MOVE, um Werte für SALES-ID und SALES-AMOUNT festzulegen, führen Sie WRITE SALES-RECORD aus (Schreiben des Datensatzes, nicht der Datei!), schließen Sie mit CLOSE SALES-FILE. und beenden Sie mit STOP RUN.

Lösung nach 3 Versuchen verfügbar