Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

Ein-/Ausgabezustände

Jeder Datei im Programm können mit der FILE STATUS-Klausel Datenfelder zugeordnet werden, in denen das Laufzeitsystem nach jedem Zugriff auf die Datei Informationen darüber hinterlegt,

  • ob die Ein-/Ausgabeoperation erfolgreich war und
  • welcher Art ggf. die dabei aufgetretenen Fehler sind.

Diese Informationen können z.B. in den DECLARATIVES durch USE-Prozeduren ausgewertet werden und gestatten eine Analyse von Ein-/Ausgabefehlern durch das Programm. Als Erweiterung zum COBOL-Standard bietet COBOL2000 die Möglichkeit, in diese Analyse durch die Schlüssel der DVS-Fehlermeldungen einzubeziehen. Dadurch lässt sich eine feinere Differenzierung der Fehlerursachen erreichen.

Die FILE STATUS-Klausel wird im FILE-CONTROL-Paragrafen der ENVIRONMENT DIVISION angegeben; ihr Format ist (siehe Handbuch „COBOL2000-Sprachbeschreibung“ [1]):


FILE STATUS IS datenname-1 [datenname-2]


Dabei müssen datenname-1 und, falls angegeben, datenname-2 in der WORKING-STORAGE SECTION oder der LINKAGE SECTION definiert sein. Für die Formate und die möglichen Werte dieser beiden Datenfelder gelten folgende Regeln:

datenname-1

  • muss als zwei Byte langes alphanumerisches Datenfeld erklärt werden, also z.B.

    01 datenname-1    PIC X(2).

  • enthält nach jeder Ein-/Ausgabeoperation auf die zugeordnete Datei einen zweistelligen numerischen Zustandscode, dessen Bedeutung der Tabelle am Ende dieses Abschnitts entnommen werden kann.

datenname-2

  • muss als sechs Byte langes Gruppenfeld der folgenden Struktur erklärt werden:

    01 datenname-2.
       02 datenname-2-1      PIC 9(2) COMP.
       02 datenname-2-2      PIC X(4).
  • dient der Aufnahme des DVS-Fehlerschlüssels (DVS-Codes) zum jeweiligen Ein-/Ausgabezustand und enthält nach jedem Zugriff auf die zugeordnete Datei einen Wert, der vom Inhalt des Feldes datenname-1 abhängt und sich aus folgender Zusammenstellung ergibt:

    Inhalt von
    datenname-1
    ungleich 0?

    DVS-Code
    ungleich 0?

    Wert von
    datenname-2-1

    Wert von
    datenname-2-2

    nein

    nicht relevant

    undefiniert

    undefiniert

    ja

    nein

    0

    undefiniert

    ja

    ja

    64

    DVS-Code der zugeordneten Fehlermeldung

    Die DVS-Codes und die zugeordneten Fehlermeldungen können dem Handbuch [4] entnommen werden.

Ein-/Ausgabe-Zustand

Bedeutung


Erfolgreiche Ausführung

00

Die Ein-/Ausgabe-Anweisung wurde erfolgreich ausgeführt.
Es ist keine weitere Information bezüglich der Ein-/Ausgabe-Operation verfügbar.

02

Ein Satz wurde über ALTERNATE KEY gelesen, und es existiert bei sequenziel lem Weiterlesen über denselben Schlüssel noch mindestens ein Nachfolgesatz mit identischem Schlüsselwert.
Ein Satz mit ALTERNATE KEY WITH DUPLICATES wurde geschrieben, und es gibt bereits für mindestens einen Alternativschlüssel einen Satz mit identischem Schlüsselwert.

04

Satzlängenkonflikt:
Eine READ-Anweisung wurde erfolgreich ausgeführt. Die Länge des gelesenen Datensatzes liegt jedoch nicht in den Grenzen, die durch die Satzbeschreibunge der Datei festgelegt wurden.

05

OPEN-Anweisung auf eine nicht vorhandene OPTIONAL-Datei


Erfolglose Ausführung: Endebedingung

10

Es wurde versucht, ein sequenzielles READ auszuführen. Es war jedoch kein nächster logischer Datensatz vorhanden, da das Dateiende erreicht war.


Erfolglose Ausführung: Schlüsselfehlerbedingung

21

Reihenfolgefehler für eine Datei bei ACCESS MODE IS SEQUENTIAL:

  1. Der Wert des Satzschlüssels wurde zwischen der erfolgreichen Ausführung einer READ-Anweisung und der Ausführung der nachfolgenden REWRITE-Anweisung geändert

  2. Bei aufeinanderfolgenden WRITE-Anweisungen wurde die aufsteigende Folge von Satzschlüsseln nicht eingehalten.

22

Doppelter Schlüssel
Es wurde versucht, eine WRITE-Anweisung mit einem Primärschlüssel auszuführen, für den innerhalb der Datei bereits ein Satz vorhanden ist.
Es wurde versucht, einen Satz mit ALTERNATE KEY ohne WITH DUPLICATES-Angabe zu erstellen, obwohl in der Datei bereits ein Alternativschlüssel mit identischem Schlüsselwert vorhanden ist.

23

Datensatz nicht gefunden
Es wurde versucht, anhand eines Schlüssels mit einer READ-, START-, DELETE-oder REWRITE-Anweisung auf einen Datensatz zuzugreifen, der in der Datei nicht vorhanden ist.

24

Überschreiten der Bereichsgrenzen
Es wurde versucht, eine WRITE-Anweisung außerhalb der vom System festgelegten Bereichsgrenzen einer indizierten Datei auszuführen.


Erfolglose Ausführung: Permanenter Fehler

30

Es ist keine weitere Information bezüglich der Ein-/Ausgabe-Operation verfügbar (der DVS-Code liefert weitere Informationen).

35

Es wurde versucht, eine OPEN INPUT, I-O- oder EXTEND-Anweisung für eine nicht optionale Datei auszuführen, die nicht vorhanden war.

37

OPEN-Anweisung auf eine Datei, die wegen folgender Bedingungen nicht eröffnet werden kann:

  1. OPEN OUTPUT/I-O/EXTEND auf eine schreibgeschützte Datei (Passwort, RETENTION-PERIOD, ACCESS=READ)

  2. OPEN INPUT auf eine lesegeschützte Datei (Passwort)

38

Es wurde versucht, eine OPEN-Anweisung für eine Datei auszuführen, die vorher mit der LOCK-Angabe geschlossen wurde.

39

Die OPEN-Anweisung war aus einem der folgenden Gründe erfolglos:

  1. Im ADD-FILE-LINK-Kommando wurden einer oder mehrere der Operanden ACCESS-METHOD, RECORD-FORMAT, RECORD-SIZE oder KEY-LENGTH mit Werten angegeben, die von den entsprechenden expliziten oder impliziten Programmangaben abweichen.

  2. Bei einer Eingabedatei trat ein Satzlängenfehler auf (Katalogüberprüfung, falls RECFORM=F).

  3. Die Satzlänge ist größer als die BLKSIZE-Angabe im Katalog einer Eingabedatei.

  4. Für eine Eingabedatei stimmt der Katalogeintrag eines der Operanden FCBTYPE, RECFORM, RECSIZE (falls RECFORM=F), KEYPOS oder KEYLEN nicht mit den entsprechenden expliziten oder impliziten Program-mangaben bzw. mit den entsprechenden Angaben im ADD-FILE-LINK-Kommando überein.

  5. Es wurde versucht, eine Datei zu eröffnen, deren Alternativschlüssel nicht mit den im Programm angegebenen Schlüsselwerten der ALTERNATE RECORD KEY-Klausel übereinstimmen.


Erfolglose Ausführung: Logischer Fehler

41

Es wurde versucht, eine OPEN-Anweisung für eine Datei auszuführen, die bereits eröffnet ist.

42

Es wurde versucht, eine CLOSE-Anweisung für eine Datei auszuführen, die nicht eröffnet ist.

43

Bei ACCESS MODE IS SEQUENTIAL:
Die letzte vor Ausführung einer DELETE- oder REWRITE-Anweisung ausgeführte Ein-/Ausgabe-Anweisung war keine erfolgreiche READ-Anweisung.

44

Überschreiten der Satzlängengrenzen:
Es wurde versucht, eine WRITE- oder REWRITE-Anweisung auszuführen.
Die Länge des Datensatzes liegt jedoch nicht in dem für diese Datei zulässigen Bereich.

46

Es wurde versucht, ein sequenzielles READ für eine Datei auszuführen, die sich im Eröffnungsmodus INPUT oder I-O befindet; ein nächster gültiger Datensatz steht aber nicht zur Verfügung. Grund:

  1. Die vorhergehende START-Anweisung war erfolglos, oder

  2. Die vorhergehende READ-Anweisung war erfolglos, ohne die Endebedingung zu verursachen, oder

  3. Es wurde versucht, nach bereits erkannter AT END-Bedingung eine READ-Anweisung auszuführen.

47

Es wurde versucht, eine READ- oder START-Anweisung für eine Datei auszuführen, die sich nicht im Eröffnungsmodus INPUT oder I-O befindet.

48

Es wurde versucht, eine WRITE-Anweisung für eine Datei auszuführen, die sich

  • bei sequenziellem Zugriff nicht im Eröffnungsmodus OUTPUT oder EXTEND,

  • bei wahlfreiem oder dynamischem Zugriff nicht im Eröffnungsmodus OUTPUT oder I-O befindet.

49

Es wurde versucht, eine DELETE- oder REWRITE-Anweisung für eine Datei auszuführen, die sich nicht im Eröffnungsmodus I-O befindet.


Sonstige erfolglose Ausführungen

90

Systemfehler; es ist keine weitere Information über die Ursache vorhanden.

91

OPEN-Fehler; die eigentliche Ursache ist aus dem DVS-Code ersichtlich (siehe „FILE-STATUS-Klausel“ mit Angabe von datenname-2).

93

Nur bei Simultanverarbeitung (siehe Abschnitt „Simultanverarbeitung von Dateien (SHARED-UPDATE)"):
Die Ein-/Ausgabe-Anweisung konnte nicht erfolgreich durchgeführt werden, weil ein anderer Prozess auf dieselbe Datei zugreift und die Zugriffe nicht vereinbar sind.

94

  1. Nur bei Simultanverarbeitung (siehe Abschnitt „Simultanverarbeitung von Dateien (SHARED-UPDATE)" ):
    Die Aufruffolge READ - REWRITE/DELETE wurde nicht eingehalten.

  2. Die Satzlänge ist größer als die Blocklänge.

95

Unverträglichkeit zwischen den Angaben im BLOCK-CONTROL-INFO- oder BUFFER-LENGTH-Operanden des ADD-FILE-LINK-Kommandos und dem Dateiformat, der Blockgröße oder dem Format des verwendeten Datenträgers

96

READ PREVIOUS wird nicht unterstützt für Module, die mit COBRUN ENABLE-UFS-ACCESS=YES übersetzt wurden.

Tabelle 34: Ein-/Ausgabezustände für indizierte Dateien