COBOL Grundkurs

Read-Write-Zugriff auf eine Datei in COBOL

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
In vielen Programmen muss man sowohl aus einer Datei lesen als auch in eine Datei schreiben. Anhand eines konkreten Beispiels sehen Sie, wie Sie das machen – und auch vor dem ersten Lesezugriff eine bis dahin noch nicht vorhandene Datei anlegen.

Transkript

In vielen Fällen ist es notwendig, dass man aus einer Datei liest, aber auch in die Datei wieder schreibt und zwar im gleichen Programm. In die gleiche Datei, ggf. in einer andere Datei, das spielt jetzt keine Rolle, ich habe hier jetzt ein Beispiel vorbereitet, das etwas implementiert, was man im Web früher sehr oft hatte, einen Zugriffszähler. Das heißt, es wird protokolliert, wie oft dieses Programm ausgeführt wurde. Das ist wie gesagt, im Web ein sogenannter Zugriffszähler, den man in den 90er-Jahren sehr oft hatte. Jetzt halt mal mit COBOL umgesetzt. Der entscheidende Punkt ist, dass wir in eine Datei auf zwei verschiedene Art und Weisen zugreifen. Einmal öffnen wir die Datei zum Lesen und einmal zum Schreiben. Ich habe hier eine SELECT-Anweisung mit ASSIGN und dort wird eine Datei "zaehler.txt" zugewiesen. Über die Variable, das Feld "ZAEHLER", steht diese Datei im Script zur Verfügung. Beachten Sie, dass ich hier den File Status überwache. Das brauche ich in diesem Beispiel dafür, dass diese Datei neu angelegt wird, wenn sie noch nicht existiert. Das heißt, jedes Mal, wenn ich einen Lesezugriff auf die Datei ausführen möchte, muss die Datei schon vorhanden sein. Beim Schreibzugriff würde sie automatisch angelegt, beim Lesezugriff gäbe es einen Fehler, wenn die Datei noch nicht vorhanden ist und das kann ich hier mit dem File Status abfangen. Ansonsten haben wir wieder eine zeilenorientierte, sequenzielle Dateiorganisation. Die Datei selbst ist ganz einfach, es soll nichts weiter als eine einzige Zeile vorkommen und die soll eine fünfstellige Zahl beinhalten. Das ist meine Struktur für so einen Zugriffzähler. Sie sehen hier den Bereich für die "FILE SECTION" und den WORKING-STORAGE-Bereich, da ist jetzt nichts groß spannendes und nichts, was erklärt werden muss. In der "PROCEDURE DIVISION" öffne ich zuerst die Datei zum Lesen. Ist die Datei nicht da, dann liefert mir mein File Status nicht den Wert "00". Und dann kann ich mit einem "GO TO" zu einem Initialisierungsbereich springen und den sehen Sie hier. Ich öffne die Datei zum Schreiben mit "OPEN OUTPUT", dann belege ich das Feld "ZAEHLER-ID", was die einzige Information in der Datei eigentlich ist, mit einem Wert und zwar "00001". Beachten Sie, dass ich hier als String formuliere, weil ich möchte sicherstellen, dass ich eine fünfstellig abgebildete Zahl in der Datei habe. Sie sehen hier, dass ich mit fünf Stellen arbeite. Dann schreibe ich die Datei mit dem so initialisierten, belegten Record und ich schließe die Datei wieder. Und dann gebe ich noch eine Meldung aus. Dieser Part hier wird wirklich nur genau einmal ausgeführt, nämlich dann, wenn das Programm aufgerufen wird und die Zählerdatei ist noch nicht vorhanden. Schauen wir uns das in der Praxis an. Ich überprüfe zuerst, gibt es diese Datei "zaehler.txt", und die Datei ist nicht gefunden worden. Sie ist noch nicht da. Dann rufe ich das Programm auf, Sie bekommen diese Meldung, die Sie hier unten sehen, also das, was ich im Display ausgebe, und nun gibt es ganz offensichtlich diese Datei "zaehler.txt". Schauen wir uns deren Inhalte einmal an und hier sehen Sie ganz offensichtlich den gewünschten Startwert für meinen Counter. Wenn ich jetzt das nächste Mal das Programm ausführe, dann wird mein File Status eben keinen Fehler mehr melden und ich kann hier diesen Lesevorgang vornehmen. Nun brauche ich hier auch keine Schleife, um die Datei vollständig zu durchlesen, denn aufgrund der Tatsache, was ich hier abbilde, habe ich immer nur genau eine Zeile und eine READ-Anweisung liest genau bis zum Zeilenende und damit habe ich die gewünschte Informationen nach bereits einem Lesevorgang. Dann schließe ich die Datei, um sie gleich wieder für die Ausgabe zu öffnen. Beachten Sie, dass ich hier explizit "OUTPUT" nehme, um einen vorhandenen Inhalt zu überschreiben. Ich benutze nicht "EXTAND" zum Anhängen von Inhalt, ich möchte den bestehenden Inhalt immer durch neuen Inhalt ersetzen. Ich nehme die aktuelle Zählervariable, also diesen Wert, der aktuell in der Datei steht, erhöhe diesen um 1 und gebe dann den erhöhten Wert aus. Dann schreibe ich die Datei neu und schließe sie und beende das Programm. Schauen wir auf das in der Praxis jetzt an und auch, wie sich die Zählerdatei hier verändert. Ich rufe das Programm wieder auf, Sie sehen jetzt den Wert 2 und der wurde hier ganz offensichtlich auch in der Datei geändert, 3, 4, 5, 6 und das sehen Sie hier auch, sobald die Datei "zaehler.txt" in Notepad aktualisiert wurde. Sie haben also gesehen, wie man grundsätzlich in einem Programm in einer Datei lesen kann und auch gleichzeitig -- in Anführungszeichen -- schreiben, natürlich müssen die Vorgänge synchronisiert sein. Und sofern eine Datei noch nicht vorhanden ist, ist es üblich in einem Programm ein Initialisierungsteil bereitzustellen, der dann aber auch nur genau einmal zum Erzeugen der Datei aufgerufen wird.

COBOL Grundkurs

Lernen Sie die Programmiersprache COBOL mit ihren Grundfunktionen kennen und schreiben Sie eigene Programme.

3 Std. 4 min (45 Videos)
Derzeit sind keine Feedbacks vorhanden...
Exklusiv für Abo-Kunden
Erscheinungsdatum:21.11.2016

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!