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 auch 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 data-name-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
    neinnicht relevantundefiniertundefiniert
    janein0undefiniert
    jaja64DVS-Code der zugeordneten Fehlermeldung

    Die DVS-Codes und die zugeordneten Fehlermeldungen können Handbuch [4] ent-nommen 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.

04

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

05

Erfolgreicher OPEN INPUT/I-O/EXTEND auf eine Datei mit OPTIONAL-Angabe in der SELECT-Klausel, die zum Zeitpunkt der Ausführung der OPEN-Anweisung nicht vorhanden war


Erfolglose Ausführung: Endebedingung

10

Es wurde versucht, eine READ-Anweisung auszuführen. Es war jedoch kein nächster logischer Datensatz vorhanden, da das Dateiende erreicht war (sequenzielles READ).
Es wurde zum ersten Mal versucht, eine READ-Anweisung für eine nicht vorhandene Datei mit OPTIONAL-Angabe auszuführen.

14

Es wurde versucht, eine READ-Anweisung auszuführen. Das durch RELATIVE KEY beschriebene Datenfeld ist aber zu klein, um die relative Satznummer aufzunehmen (sequenzielles READ).


Erfolglose Ausführung: Schlüsselfehlerbedingung

22

Doppelter Schlüssel
Es wurde versucht, eine WRITE-Anweisung mit einem Schlüssel auszuführen, für den in der Datei bereits ein Satz vorhanden ist.

23

Datensatz nicht gefunden oder Satzschlüssel Null
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, oder der Zugriff erfolgte mit Satzschlüssel Null

24

Überschreiten der Bereichsgrenzen

Es wurde versucht, eine WRITE-Anweisung außerhalb der vom System festgelegten Bereichsgrenzen einer relativen Datei auszuführen (unzureichende Sekundärzuweisung im FILE-Kommando) oder eine WRITE-Anweisung im sequenziellen Zugriffsmodus zu geben, bei der die relative Satznummer so groß ist, dass sie nicht in das mit der RELATIVE KEY-Angabe beschriebene Datenfeld passt.


Erfolglose Ausführung: Permanenter Fehler

30

Es ist keine weitere Information bezüglich der Ein-/Ausgabe-Operation verfügbar.

35

Es wurde versucht, eine OPEN INPUT/I-O-Anweisung für eine Datei auszuführen, die nicht vorhanden ist.

37

OPEN-Anweisung auf eine Datei, die auf Grund 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 wurde einer oder mehrere der Operanden ACCESS-METHOD, RECORD-FORMAT bzw. RECORD-SIZE mit Werten angegeben, die von den entsprechenden expliziten oder impliziten Programmangaben abweichen.

  2. Für eine Eingabedatei stimmt der Katalogeintrag des Operanden FCBTYPE nicht mit der entsprechenden expliziten oder impliziten Programmangab bzw. mit der entsprechenden Angabe im ADD-FILE-LINK-Kommando überein.

  3. Für eine Datei, die mit der DVS-Zugriffsmethode UPAM verarbeitet werden soll, wurde variable Satzlänge vereinbart.


Erfolglose Ausführung: Logischer Fehler

41

Es wurde versucht, eine OPEN-Anweisung für eine Dateiauszufü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 erfolgreich ausgeführte 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, eine sequenzielle READ-Anweisung 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 eine Endebedingung zu verursachen, oder

  3. die vorhergehende READ-Anweisung hat eine Ende-Bedingung verursacht.

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

Systemfehler; OPEN-Fehler

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

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

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 kompiliert wurden, oder die Datei soll mit der DVS-Zugriffsart UPAM bearbeitet werden.

Tabelle 29: Ein-/Ausgabezustände für relative Dateien