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 POSIX-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 z.B. in Abschnitt „Ein-/Ausgabezustände" dargestellt.
Die beiden in der FILE STATUS-Klausel defibrinieren Datenfelder haben folgende Funktion:

datenname-1

enthält nach jeder Ein-/Ausgabeoperation auf die zugeordnete Datei einen zweistelligen numerischen Zustandscode.

datenname-2

ist unterteilt in datenname-2-1 und datenname-2-2. Es dient der Aufnahme des SIS-Codes (POSIX) 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?

SIS-Code
ungleich 0?

Wert von
datenname-2-1

Wert von
datenname-2-2

nein

nicht relevant

undefiniert

undefiniert

ja

nein

0

undefiniert

ja

ja

96

SIS-Code der zugeordneten Fehlermeldung

Bei Programmablauf im BS2000 lässt sich der Bedeutungstext des jeweiligen SIS-Codes mit dem Kommando HELP-MSG-INFORMATION SIS<datenname-2-2> ausgeben.

Der einfache und der erweiterte Ein-/Ausgabezustand sind in den beiden folgenden Tabellen beschrieben.

Einfacher Ein-/Ausgabezustand

Wert

Org *)

Bedeutung

0x


erfolgreiche Ausführung

00
02
04
05
07

SRI
I
SRI
SRI
S

keine weitere Information
erfolgreicher READ, erlaubter doppelter Schlüssel
erfolgreicher READ, aber Satzlängenfehler
erfolgreicher OPEN auf nicht vorhandene OPTIONAL-Datei
- erfolgreicher OPEN mit NO REWIND
- erfolgreicher CLOSE mit NO REWIND, REEL/UNIT oder FOR REMOVAL

1x


erfolglose Ausführung: AT END-Bedingung

10
14

SRI
R

erfolgloser READ, da Dateiende erreicht
erfolgloser READ, da Schlüsselfeldlängenfehler

2x


erfolglose Ausführung, Schlüsselfehler

21
22
23
24

I
RI
RI
RI

falsche Schlüsselreihenfolge bei sequenziellem Zugriff
WRITE auf schon vorhandenen Satz
READ auf nicht vorhandenen Satz
Schlüsselfeldlängenfehler

3x


erfolglose Ausführung, permanenter Fehler

30
34

35
38
39

SRI
S

SRI
SRI
SRI

keine weitere Information (SIS-Code beachten)
unzureichende Sekundärzuweisung im CREATE-FILE oder
MODIFY-FILEATTRIBUTES-Kommando
OPEN INPUT/I-O auf nicht vorhandene Datei
OPEN auf eine mit CLOSE WITH LOCK geschlossene Datei
OPEN-Fehler wegen falscher Dateimerkmale

4x


erfolglose Ausführung, logischer Fehler

41
42
43

44
46

47


48
49

SRI
SRI
S
RI
SRI
S
RI
S
RI
SRI
S
RI

OPEN auf bereits geöffnete Datei
CLOSE auf nicht geöffnete Datei
REWRITE ohne vorherigen erfolgreichen READ
DELETE/REWRITE ohne vorherigen erfolgreichen READ
WRITE/REWRITE mit unzulässiger Satzlänge
erneuter READ nach erfolglosem READ oder erkanntem AT END
sequent. READ nach erfolglosem READ/START oder nach erkanntem AT END
READ auf nicht zum Lesen geöffnete Datei
READ/START auf nicht zum Lesen geöffnete Datei
WRITE auf nicht zum Schreiben geöffnete Datei
REWRITE auf nicht mit I-O geöffnete Datei
DELETE/REWRITE auf nicht mit I-O geöffnete Datei

9x


sonstige erfolglose Ausführung

90
91
96

SRI
SRI
R1

Systemfehler, keine weiteren Informationen
OPEN-Fehler oder kein freies Gerät
READ PREVIOUS nicht unterstützt

*) S = sequenzielle Organisation, R = relative Organisation, I = indexsequenzielle Organisation

Erweiterter Ein-/Ausgabezustand (SIS-Code)

Ein-/Ausgabezustand

Bedeutung

0601

Dateiende ist erreicht

0602

Spezifizierter Satz existiert nicht

0603

Spezifizierter Satz existiert bereits

0604

Dateianfang ist erreicht

0605

Spezifizierter Link existiert nicht

0606

Dateiname ist länger als P_MAXFILENAME

0607

Pfad ist länger als P_MAXPATHSTRG

0608

Pfadname ist länger als P_MAXPATHNAME

0609

Linkname ist länger als P_MAXLINKNAME

0610

kein ausreichender Speicherplatz verfügbar

0611

Anzahl der Pfadelemente übersteigt P_MAXHIERARCHY

0612

Funktion wird nicht unterstützt

0613

Dateiname ist fehlerhaft oder leer

0614

Anzahl der Sekundärschlüssel übersteigt P_MAXKEYS

0615

Anzahl offener Dateien übersteigt systemspezifische Grenze

0616

Spezifizierte Datei existiert nicht

0617

Kein Schreibzugriff erlaubt

0618

kein Dateiname spezifiziert

0619

Datei ist gesperrt

0620

unzulässige Kombination von Dateiattributen

0621

File-Handle ist ungültig

0622

Aktueller Datensatz ist kürzer als MINSIZE

0623

Aktueller Datensatz ist länger als MAXSIZE

0625

Vor rwrite sequenziell wurde kein read sequenziell ausgeführt

0626

Spezifiziertes Satzformat ist unzulässig

0627

MINSIZE ist größer als MAXSIZE

0628

Spezifizierte Organisation ist unzulässig

0629

Nicht existent spezifizierte Datei existiert

0630

Spezifizierte Zugriffsfunktion ist nicht erlaubt

0631

Spezifizierter Schlüssel ist unzulässig

0632

Mehrfachschlüssel ist nicht erlaubt

0633

Aktueller Satz ist zur Zeit gesperrt

0634

Aktueller Schlüssel in fehlerhafter Reihenfolge

0635

Spezifizierter Pfad ist undefiniert

0636

Es ist ein systemspezifischer Fehler aufgetreten

0637

Zeilenende ist erreicht

0638

Satz wurde abgeschnitten

0640

Kein Speicherplatz zur Dateierweiterung verfügbar

0643

Spezifizierter Öffnungsmodus ist unzulässig

0644

Länge des Links übersteigt P_MAXLINKSTRG

0645

Versionsidentifikation ist fehlerhaft

0646

Spezifizierte Dateiexistenz ist unzulässig

0647

Syntaxfehler im Dateinamen, Link oder Pfad

0649

Spezifizierter Modus beim Schließen ist unzulässig

0650

Dateizugriff ist nicht erlaubt

0651

Fehlerhafter Parameter angegeben

0652

Zeiger in den Ein-/Ausgabebereich ist fehlerhaft

0653

Satzlänge ist fehlerhaft

0654

Speichermangel auf Ausgabemedium aufgetreten

0655

Spezifizierte Vorschubsteuerung ist unzulässig

0656

Spezifizierter Code ist unzulässig

0657

Öffnungsmodus und Dateiexistenz sind unzulässig kombiniert

0658

Ein-/Ausgabeunterbrechung aufgetreten

0659

Länge des Schlüsselwortes übersteigt P_MAXKEYWORD

0660

Schlüsselwort ist mehrdeutig

0661

Anzahl der Exits übersteigt P_MAXEXITS

0662

Zeilenvorschubsteuerzeichen erkannt

0663

Seitenvorschubsteuerzeichen erkannt

0664

Einige Pfade sind nicht geschlossen

0665

Nächster Satz hat den gleichen Sekundärschlüssel

0666

Sekundärschlüssel des geschriebenen Satzes existiert bereits

0667

Aktuelle Satznummer ist größer als MAX_REC_NR

0668

Pfad ist bereits definiert

0669

Link ist bereits definiert

0670

Spezifizierter Wert für Positionierbedingung ist unzulässig

0671

Unbekanntes Kontrollzeichen gefunden

0672

Es konnte kein eindeutiger Dateiname erzeugt werden

0673

Letzter Teilsatz wurde nicht abgeschlossen

0674

Spezifizierter Wert für Positionierung ist unzulässig

0675

Satzformat ist nicht bestimmbar

0676

MAXSIZE ist nicht bestimmbar

0677

Interner PROSOS-D Fehler aufgetreten

0678

Spezifizierte Datei ist ein Container von Dateien

0679

Spezifizierte Datei ist unter angegebenem Pfad nicht erreichbar

0680

Versionsangabe kann nicht erhöht werden

0681

Nochmaliges Öffnen nach implizitem Schließen wurde abgewiesen

0682

Fehler bei Initialisierung von PROSOS-D

0683

Linkindirektionen übersteigen P_MAXLINKNESTING