Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

Eröffnungsarten und Verarbeitungsformen (indizierte Dateien)

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:


Anweisung

Eintrag in der ACCESS MODE-Klausel

SEQUENTIAL

RANDOM

DYNAMIC

START

START...
[KEY IS...]
[INVALID KEY...]
[NOT INVALID KEY...]
[END-START]

Anweisung nicht zulässig

START...
[KEY IS...]
[INVALID KEY...]
[NOT INVALID KEY]
[END-START]

READ

READ...
[NEXT | PREVIOUS]
[INTO...]
[AT END...]
[NOT AT END...]
[END-READ...]

READ...
[INTO...]
[KEY IS...]
[INVALID KEY...]
[NOT INVALID KEY...]
[END-READ]

Für sequenziellen Zugriff:
READ...{NEXT | PREVIOUS}
[INTO...]
[AT END...]
[NOT AT END...]
[END-READ]

Für wahlfreien Zugriff:
READ...
[INTO...]
[KEY IS...]
[INVALID KEY...]
[NOT INVALID KEY...]
[END-READ]

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:


Anweisung

Eintrag in der ACCESS MODE-Klausel

SEQUENTIAL

RANDOM

DYNAMIC

START

START...
[KEY IS...]
[INVALID KEY...]
[NOT INVALID KEY...]
[END-START]

Anweisung nicht zulässig

START...
[KEY IS...]
[INVALID KEY...]
[NOT INVALID KEY]
[END-START]

READ

READ...
[NEXT | PREVIOUS]
[INTO...]
[AT END...]
[NOT AT END...]
[END-READ...]

READ...
[INTO...]
[KEY IS...]
[INVALID KEY...]
[NOT INVALID KEY...]
[END-READ]

Für sequenziellen Zugriff:

READ...{NEXT | PREVIOUS}
[INTO...]
[AT END...]
[NOT AT END...]
[END-READ]

Für wahlfreien Zugriff:
READ...
[INTO...]
[KEY IS...]
[INVALID KEY...]
[NOT INVALID KEY...]
[END-READ]

REWRITE

REWRITE...
[FROM...]
[INVALID KEY...]
[NOT INVALID KEY...]
[END-REWRITE]

REWRITE...
[FROM...]
[INVALID KEY...]
[NOT INVALID KEY...]
[END-REWRITE]

REWRITE...
[FROM...]
[INVALID KEY...]
[NOT INVALID KEY...]
[END-REWRITE]

WRITE

Anweisung nicht zulässig

WRITE...
[FROM...]
[INVALID KEY...]
[NOT INVALID KEY...]
[END-WRITE]

WRITE...
[FROM...]
[INVALID KEY...]
[NOT INVALID KEY...]
[END-WRITE]

DELETE

DELETE...
[END-DELETE]

DELETE...
[INVALID KEY...]
[NOT INVALID KEY...]
[END-DELETE]

DELETE...
[INVALID KEY...]
[NOT INVALID KEY...]
[END-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.

    Dabei darf zwischen READ und REWRITE bzw. DELETE
    • 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.