Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

Fehlerbehandlung

&pagelevel(5)&pagelevel

Für die Behandlung von Fehlern stehen die bei der bisherigen Datei-Ein-/Ausgabe vorhandenen Sprachmittel auch für das Verarbeiten von XML-Dokumenten durch die neuen Anweisungs-Formate zur Verfügung:

  • OPEN DOCUMENT und READ: AT END- und NOT AT END-Angabe

  • START: INVALID KEY- und NOT INVALID KEY-Angabe

  • Für alle neuen Formate der Anweisungen: USE-Prozeduren und zusätzliche neue XML-spezifische Werte für den Ein-/Ausgabe-Zustand (FILE STATUS).

  • OPEN DOCUMENT: neue Ausnahmesituation EC-XML-CODESET-CONVERSION

Die [NOT] END- bzw. [NOT] KEY-Angaben entsprechen sowohl syntaktisch, als auch von ihrer Wirkungsweise her den Angaben bei den bisherigen Ein-/Ausgabe-Anweisungen.

OPEN DOCUMENT

Prinzipiell sind in einer Datei mehrere XML-Dokumente hintereinander erlaubt. Momentan werden aber nur Dateien mit einem einzigen Dokument unterstützt. Jede OPEN
DOCUMENT-Anweisung ohne AT-Angabe schließt ein ggf. noch offenes Dokument und öffnet das nächste Dokument in der Datei. Wenn es kein nächstes Dokument gibt, oder die Datei leer ist, tritt die Ende-Bedingung auf, und der Ein-/Ausgabe-Zustand wird auf 10 gesetzt.
Wenn das XML-Dokument Zeichen enthält, die sich nicht als nationale Zeichen (UTF-16) darstellen lassen, tritt die Ausnahmesituation EC-XML-CODESET-CONVERSION auf. Diese Ausnahmebedingung führt nicht zu einem Abbruch. Die betroffenen Zeichen werden im XML-Dokument-Baum durch das Ersatzzeichen '.' ersetzt.
EC-XML-CODESET-CONVERSION tritt nur bei der Umwandlung von der externen Darstellung des XML-Dokuments zum Baum auf – höchstens einmal.

READ

Die AT END-Angabe bezieht sich nur auf eine Ende-Bedingung für das eine Datenfeld, das in der READ-Anweisung angegeben worden ist, nicht auf untergeordnete. Die Ende-Bedingung tritt sowohl beim sequenziellen, als auch beim wahlfreien Lesen auf, wenn es keinen Knoten im XML-Dokument-Baum gibt, der dem Datenfeld (aus der Anweisung) zugeordnet werden kann. Der entsprechende Wert für den Ein-/Ausgabe-Zustand ist 10.Als Zeichensatz zur Darstellung der Daten ist für Übertragungen aus dem XML-DokumentBaum national (UTF-16) anzunehmen. Daher kann bei jeder einzelnen Übertragung im Rahmen einer READ-Anweisung die Ausnahmesituation EC-DATA-CONVERSION auftreten.

Im Gegensatz zu EC-XML-CODESET-CONVERSION von der OPEN DOCUMENT-Anweisung kann EC-DATA-CONVERSION bei Übertragungen von Daten aus dem Baum zum Programm auftreten – ggf. sogar mehrmals bei einer einzelnen READ-Anweisung.

START

Die INVALID KEY-Angabe bezieht sich nur auf eine Schlüsselfehler-Bedingung für das eine Datenfeld, das in der START-Anweisung angegeben worden ist, nicht auf untergeordnete. Die Schlüsselfehler-Bedingung tritt auf, wenn es keinen Knoten im XML-Dokument-Baum gibt, der diesem Datenfeld zugeordnet werden kann. Der entsprechende Wert für den Ein-/Ausgabe-Zustand ist 23.

Alle Anweisungen

Wenn die Reihenfolge der Anweisungen nicht eingehalten wird (siehe auch "Anweisungssequenzen" in Kapitel "Anweisungen für die XML-Verarbeitung"), sind die Voraussetzungen für die Ausführung einzelner Anweisung nicht erfüllt. Das führt zu einer erfolglosen Ausführung wegen logischem Fehler und einem entsprechenden Ein-/Ausgabe-Zustand.

Ein-/Ausgabe-Zustand für XML-Dateien

Ein-/Ausgabe- Zustand

Bedeutung

00


05
08

Erfolgreiche Ausführung
Die Anweisung wurde erfolgreich ausgeführt. Es sind keine weiteren Informatio
nen verfügbar.
OPEN-Anweisung auf eine nicht vorhandene, optionale Datei.
Eine READ-Anweisung konnte einige Elemente und/oder Attribute aus dem
XML-Dokument keiner COBOL-Beschreibung zuordnen.



10

Erfolglose Ausführung: Endebedingung

  1. Es wurde versucht, mit einer READ-Anweisung, ein Attribut oder Element zu
    lesen, das nicht existiert.

  2. Es wurde versucht, für eine leere oder eine nicht vorhandene, optionale Da
    tei eine OPEN DOCUMENT-Anweisung auszuführen.

  3. Es wurde versucht, ein zweites Dokument in einer XML-Datei mittels OPEN
    DOCUMENT-Anweisung zu öffnen.



23


25

Erfolglose Ausführung: Schlüsselfehlerbedingung

  1. Es wurde versucht, mit einer START-Anweisung auf ein Attribut oder Ele
    ment zu positionieren, das nicht existiert.

  2. Die Index-Angabe bei einer START-Anweisung war nicht positiv.

Es wurde versucht, eine START-Anweisung ohne gültige Position auszuführen.


30

35

39

3A



3D

Erfolglose Ausführung: Permanenter Fehler

Keine weitere Information verfügbar.

OPEN auf nicht vorhandene Datei.

Es wurde versucht, eine Datei mit unpassenden Dateimerkmalen zu öffnen.

Es wurde versucht, eine OPEN DOCUMENT-Anweisung für ein XML-Dokument
auszuführen, das nicht wohlgeformt ist. Das schließt auch Dateiinhalte mit ein,
die keine XML-Dokumente darstellen.

Es wurde versucht, eine OPEN DOCUMENT-Anweisung auszuführen, aber der
Zeichensatz, in dem das XML-Dokument dargestellt ist, konnte nicht ermittelt
werden.


41


42

Erfolglose Ausführung: Logischer Fehler
Es wurde versucht, eine OPEN-Anweisung für eine Datei auszuführen, die be
reits geöffnet ist.
Es wurde versucht, eine CLOSE-Anweisung für eine Datei auszuführen, die
nicht geöffnet ist.

46


47
4B

4C

4D

4E

  1. Es wurde versucht, eine OPEN DOCUMENT-Anweisung (mit der AT-Angabe) oder eine READ-Anweisung ohne eine gültige Position auszuführen.

  2. Es wurde versucht, eine OPEN DOCUMENT-Anweisung (ohne AT-Angabe) auszuführen, nachdem die vorherige OPEN DOCUMENT-Anweisung eine Ende-Bedingung verursacht hat.

Es wurde versucht, eine READ- oder START-Anweisung für eine nicht geöffnete Datei auszuführen.

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

Es wurde versucht, eine OPEN DOCUMENT-, START- oder READ-Anweisung auszuführen, bei der Namen in IDENTIFIED-Klauseln für Geschwisterknoten nicht eindeutig waren.

Es wurde versucht, eine CLOSE DOCUMENT-, OPEN DOCUMENT- (mit der AT-Angabe), READ- oder START-Anweisung für ein Dokument auszuführen, das nicht geöffnet ist.

Es wurde versucht eine OPEN DOCUMENT-, READ- oder START-Anweisung auszuführen, bei der sich im COBOL-Programm angegebene Element- und/oder Attributnamen nicht in UTF-16 darstellen lassen.


90

91

97

Sonstige erfolglose Ausführungen

Systemfehler - keine weitere Information über die Ursache vorhanden.

OPEN Fehler. Eigentliche Ursache ggf. aus dem SIS-Code ersichtlich.

Der für eine OPEN DOCUMENT-Anweisung erforderliche Arbeitsspeicher steht nicht zur Verfügung.

Tabelle 47: Ein-/Ausgabe-Zustände für XML-Dateien
Diese Ein-/Ausgabe-Zustände beziehen sich nur auf die primäre zu verarbeitende XML- Datei. Wenn beim ggf. zusätzlich erforderlichen Zugriff auf externe Entitäten Fehler auftre ten, führen diese i.A. zum Ein-/Ausgabe-Zustand 3A.

Beispiel 12-54 Mehrdeutige Namen

XML-Dokument

Pos

COBOL-Datenstruktur


OPEN
DOCUMENT
xml-fil


READ
xml-fil
ELEMENT
x

<dok>1

<a>2</a>

<b>3</b>

<a>4</a>

</dok>

1
2
3
4

FD xml-fil

01 x IDENTIFIED BY "dok".

  02 y IDENTIFIED BY y-name.

   03 y-name PIC X.
    02 z IDENTIFIED BY z-name.

   03 z-name PIC X.

MOVE "a"
TO

y-name


MOVE

"b" TO

z-name


1(o)
2(o)

a
3(o)
b



MOVE

"a" TO

z-name


inv
inv

a
inv

a



FILE STATUS


00


4C

Anmerkungen:

  • Hinweise zur Darstellung dieses Beispiels finden Sie auf "Anweisungen für die XML-Verarbeitung".

  • Die aktuellen Schlüsselwerte der Datenfelder y und z sind bei der READ-Anweisung gleich: Dies ist verboten, da keine eindeutige Zuordnung für diesen Fall definiert ist (ist Knoten 2 dem z und Knoten 4 dem y zuzuordnen oder umgekehrt?). Daher liefert die READ-Anweisung den Ein-/Ausgabe-Zustand 4C.

  • In diesem Fall erhalten das Datenfeld, über das gelesen wurde – obwohl das Problem gar nicht bei diesem Datenfeld, sondern bei untergeordneten aufgetreten ist –, sowie alle ihm untergeordneten Datenfelder eine ungültige Position.