Mit den Sprachmitteln eines COBOL-Programms lassen sich indizierte Dateien
erstellen,
lesen,
durch Hinzufügen neuer Datensätze erweitern und
durch Abändern oder Löschen vorhandener Datensätze aktualisieren.
Welche Ein-/Ausgabeanweisungen im Programm jeweils für eine Datei zulässig sind wird dabei durch ihren Eröffnungsmodus bestimmt, der in der OPEN-Anweisung angegeben wird:
OPEN OUTPUT
Als Ein-/Ausgabeanweisung ist unabhängig von der Angabe in der ACCESS MODE-Klausel WRITE mit folgendem Format erlaubt:
WRITE...[FROM...] [INVALID KEY...] [NOT INVALID KEY...] [END-WRITE]
In diesem Modus können indizierte Dateien ausschließlich neu erstellt (geladen) werden.
ACCESS MODE IS SEQUENTIAL
erlaubt es, eine indizierte Datei sequenziell zu erstellen. Dabei müssen die Datensätze der WRITE-Anweisung aufsteigend nach ihren Satzschlüsseln sortiert zur Verfügung gestellt werden.
Das RECORD KEY-Feld muss vor jeder WRITE-Anweisung mit dem Satzschlüssel des auszugebenden Datensatzes versorgt werden. Dabei muss jeder neue Schlüssel
größer sein als der zuletzt angegebene. Ist dies nicht der Fall, tritt eine INVALID KEY-Bedingung auf und WRITE verzweigt zur INVALID KEY-Anweisung bzw. zur vereinbarten USE-Prozedur, ohne den Satz zu schreiben. Ein Überschreiben von Datensätzen ist hier also nicht möglich.ACCESS MODE IS DYNAMIC oder RANDOM
erlaubt es, eine indizierte Datei wahlfrei zu erstellen. Dabei ist zu beachten, dass das Erstellen nach aufsteigenden Satzschlüsseln effizienter abläuft.
OPEN EXTEND
Mit OPEN EXTEND kann eine vorhandene Datei erweitert werden. Die ACCESS MODE-Klausel wird wie bei OPEN OUTPUT verwendet.
OPEN INPUT
Welche Ein-/Ausgabeanweisungen bzw. Anweisungsformate erlaubt sind, hängt von der Angabe in der ACCESS MODE-Klausel ab. Die folgende Tabelle stellt die Möglichkeiten für OPEN INPUT zusammen:
| Eintrag in der ACCESS MODE-Klausel | ||
SEQUENTIAL | RANDOM | DYNAMIC | |
START | START... | Anweisung nicht zulässig | START... |
READ | READ... | READ... | Für sequenziellen Zugriff: |
Für wahlfreien Zugriff: |
Tabelle 32: Erlaubte Ein-/Ausgabeanweisungen für OPEN INPUT
In diesem Modus können indizierte Dateien gelesen werden. Abhängig von der vereinbarten Zugriffsart hat die READ-Anweisung dabei folgende Wirkung:
ACCESS MODE IS SEQUENTIAL
erlaubt es ausschließlich, die Datei sequenziell zu lesen. READ stellt dabei die Datensätze in der Reihenfolge aufsteigender (NEXT) oder absteigender (PREVIOUS) Satzschlüssel zur Verfügung.
Das (ALTERNATE) KEY-Schlüsselfeld wird von READ nicht ausgewertet. Vor der Ausführung einer READ-Anweisung kann jedoch mit Hilfe von START auf einen beliebigen Satz der Datei positioniert werden: Über eine Vergleichsbedingung legt START den Schlüssel des zuerst zu lesenden Satzes und damit den Ausgangspunkt für nachfolgende sequenzielle Leseoperationen fest (siehe auch Abschnitt „Positionieren mit START"). Kann die Vergleichsbedingung von keinem Satzschlüssel der Datei erfüllt werden, tritt eine INVALID KEY-Bedingung auf und START verzweigt zur INVALID KEY-Anweisung bzw. zur vereinbarten USE-Prozedur.ACCESS MODE IS RANDOM
ermöglicht es, die Sätze der Datei wahlfrei zu lesen. READ stellt dabei die Datensätze in beliebiger Reihenfolge zur Verfügung; der Zugriff auf jeden Satz erfolgt über seinen Satzschlüssel Das (ALTERNATE) KEY-Feld muss dazu vor jeder READ-Anweisung mit dem Schlüssel des Satzes versorgt werden, der gelesen werden soll.
Wird der Schlüssel eines nicht existierenden Satzes angegeben, tritt eine INVALID KEY-Bedingung auf und READ verzweigt zur INVALID KEY-Anweisung bzw. zur vereinbarten USE-Prozedur.ACCESS MODE IS DYNAMIC
gestattet es, die Datei sowohl sequenziell als auch wahlfrei zu lesen.
Die jeweilige Zugriffsart wird dabei über das Format der READ-Anweisung gewählt (siehe Tabelle 33).
Eine START-Anweisung ist nur für sequenzielles Lesen sinnvoll.
OPEN I-O
Welche Ein-/Ausgabeanweisungen bzw. Anweisungsformate erlaubt sind, hängt von der Angabe in der ACCESS MODE-Klausel ab.
In diesem Modus können in einer indizierten Datei Sätze
gelesen,
hinzugefügt,
durch das Programm aktualisiert und
überschrieben oder
gelöscht werden.
Die folgende Tabelle stellt die Möglichkeiten für OPEN I-O zusammen:
| Eintrag in der ACCESS MODE-Klausel | ||
SEQUENTIAL | RANDOM | DYNAMIC | |
START | START... | Anweisung nicht zulässig | START... |
READ | READ... | READ... | Für sequenziellen Zugriff: |
READ...{NEXT | PREVIOUS} | |||
Für wahlfreien Zugriff: | |||
REWRITE | REWRITE... | REWRITE... | REWRITE... |
WRITE | Anweisung nicht zulässig | WRITE... | WRITE... |
DELETE | DELETE... | DELETE... | DELETE... |
Tabelle 33: Erlaubte Ein-/Ausgabeanweisungen für OPEN I-O
OPEN I-O setzt voraus, dass die zu verarbeitende Datei bereits existiert. Es ist daher nicht möglich, in diesem Modus eine indizierte Datei neu zu erstellen.
Welche der oben erwähnten Verarbeitungsformen durchgeführt werden können und wie die Ein-/Ausgabeanweisungen dabei wirken, hängt von der vereinbarten Zugriffsart ab:
ACCESS MODE IS SEQUENTIAL
erlaubt es, wie bei OPEN INPUT die Datei mit READ sequenziell zu lesen und dabei durch einen vorhergehenden START auf einen beliebigen Satz der Datei als Anfangspunkt zu positionieren.
Darüberhinaus kann nach einem erfolgreichen READ der gelesene Satz
durch das Programm aktualisiert und mit REWRITE zurückgeschrieben oder
mit DELETE logisch gelöscht werden.
keine weitere Ein-/Ausgabeanweisung für diese Datei ausgeführt und
das RECORD KEY-Schlüsselfeld nicht verändert werden.
ACCESS MODE IS RANDOM
ermöglicht es, wie bei OPEN INPUT mit READ Sätze wahlfrei zu lesen.
Ferner können mit WRITE neue Sätze in die Datei eingefügt und mit REWRITE bzw. DELETE bereits in der Datei vorhandene Sätze überschrieben bzw. gelöscht werden (unabhängig davon, ob sie vorher gelesen wurden). Das RECORD KEY-Schlüsselfeld muss dazu vor jeder WRITE-, REWRITE- oder DELETE-Anweisung mit dem Schlüssel des Satzes versorgt werden, der hinzugefügt, überschrieben oder gelöscht werden soll.
Wird bei WRITE der Schlüssel eines bereits vorhandenen Satzes bzw. bei REWRITE oder DELETE der Schlüssel eines nicht existierenden Satzes angegeben, dann
tritt eine INVALID KEY-Bedingung auf und WRITE oder REWRITE bzw. DELETE
verzweigt zur INVALID KEY-Anweisung oder zur vereinbarten USE-Prozedur.ACCESS MODE IS DYNAMIC
gestattet es, die Datei sowohl sequenziell als auch wahlfrei zu verarbeiten. Die jeweilige Zugriffsart wird dabei über das Format der READ-Anweisung gewählt.