Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

READ-Anweisung

&pagelevel(4)&pagelevel

Funktion

Ausgehend von einer bereits existierenden Zuordnung positioniert die READ-Anweisung auf Elemente bzw. Attribute aus dem XML-Dokument, ordnet sie den Datenfeldern in der FD zu und überträgt damit verbundene Werte.

Format


READ dateiname-1 {ATTRIBUTE | [ONLY] ELEMENT} datenname-1
   [AT END unbedingte-anweisung-1]
   [NOT AT END unbedingte-anweisung-2]
   [END-READ]


Syntaxregeln

  1. dateiname-1 muss der Name einer XML-organisierten Datei sein.

  2. datenname-1 darf gekennzeichnet sein.

  3. datenname-1 muss mit einer IDENTIFIED-Klausel beschrieben und der Datei dateiname-1 untergeordnet sein.

  4. Wenn in der READ-Anweisung ATTRIBUTE angegeben ist, muss die IDENTIFIED-Klausel in der Datenerklärung von datenname-1 die ATTRIBUTE-Angabe haben.

  5. Wenn in der READ-Anweisung ELEMENT angegeben ist, muss die IDENTIFIED-Klausel in der Datenerklärung von datenname-1 explizit oder implizit die ELEMENT-Angabe haben.

Allgemeine Regeln

  1. Wenn die Datei dateiname-1 nicht geöffnet ist, ist die READ-Anweisung nicht erfolgreich. Der Ein-/Ausgabe-Zustand der Datei wird auf 47 gesetzt.

  2. Wenn in der Datei dateiname-1 kein XML-Dokument geöffnet ist, ist die READ-Anweisung nicht erfolgreich. Der Ein-/Ausgabe-Zustand der Datei wird auf 4D gesetzt.

  3. Wenn datenname-1 keine gültige Position hat, ist die READ-Anweisung nicht erfolgreich. Der Ein-/Ausgabe-Zustand der Datei wird auf 46 gesetzt.

  4. Die READ-Anweisung führt zuerst eine Zuordnung aus (siehe Abschnitt "Sprachelemente DATA DIVISION"), und überträgt anschließend ggf. Daten. Wenn im ersten Schritt dieses Zuordnungsvorgangs kein Knoten aus dem XML-Baum zugeordnet werden kann, ist die READ-Anweisung nicht erfolgreich. Der Ein-/Ausgabe-Zustand wird auf 10 gesetzt, d.h. eine Ende-Bedingung existiert.

  5. Wenn die Namen in den bei der Zuordnung wirkenden IDENTIFIED-Klauseln nicht eindeutig sind (siehe "IDENTIFIED-Klausel", allgemeine Regel 9 auf "IDENTIFIED-Klausel"), ist die READ-Anweisung nicht erfolgreich. Der Ein-/Ausgabe-Zustand der Datei wird auf 4C gesetzt.

  6. Wenn sich einzelne Attribut- bzw. Elementnamen aus den bei der Zuordnung wirkenden IDENTIFIED-Klauseln nicht im Zeichensatz UTF-16 darstellen lassen, ist die READ-Anweisung nicht erfolgreich. Der Ein-/Ausgabe-Zustand der Datei wird auf 4E gesetzt.

  7. Bei der Zuordnung ist im ersten Schritt auf der COBOL-Seite nur das Datenfeld datenname-1 zu betrachten; dazu dann im XML-Baum folgende Knoten:

    1. falls datenname-1 eine IDENTIFIED BY-Klausel mit der ATTRIBUTE-Angabe hat: der datenname-1 zugeordnete Knoten aus dem XML-Baum und alle seine Geschwister. Da in XML-Dokumenten Attribute eines Elements eindeutig sein müssen, spielt hier die Reihenfolge, in der diese Knoten zu betrachten sind, keine Rolle.

    2. andernfalls:

      • wenn der Knoten durch eine READ-Anweisung zu datenname-1 zugeordnet wurde: alle jüngeren Geschwister dieses Knotens in der Reihenfolge vom ältesten jüngeren Geschwister bis zum jüngsten jüngeren Geschwister.

      • wenn der Knoten durch eine OPEN DOCUMENT- oder START-Anweisung zu datenname-1 zugeordnet wurde: dieser Knoten selbst und anschließend alle seine jüngeren Geschwister in der Reihenfolge vom ältesten jüngeren Geschwister bis zum jüngsten jüngeren Geschwister.

  8. Wenn ONLY angegeben ist, sind für nachfolgende READ-Anweisungen die gemachten Zuordnungen für alle datenname-1 untergeordneten Datenfelder, die explizit oder im-plizit die ELEMENT-Angabe haben, so zu interpretieren, als ob sie durch eine START-Anweisung erfolgt wären (und nicht durch die READ-Anweisung).

  9. Wenn es in dem Teilbaum des XML-Dokuments, dessen Wurzel derjenige Knoten ist, der datenname-1 zugeordnet wurde, auch Knoten gibt, die keinem Datenfeld aus dem COBOL-Programm zugeordnet werden konnten, und wenn ONLY nicht angegeben ist, ist die READ-Anweisung erfolgreich. Der Ein-/Ausgabe-Zustand wird auf 08 gesetzt.

  10. Als Ergebnis der READ-Anweisung bleiben Datenfelder in den Satzbeschreibungen von dateiname-1 entweder unverändert oder werden initialisiert, oder die Anweisung überträgt Daten aus dem XML-Baum. Dies ist im Einzelfall abhängig von der aktuell durchgeführten Zuordnung und der Lage der Datenfelder in den Satzbeschreibungen relativ zu datenname-1:

    Datenfelder

    datenname-1 wurde ein Knoten zugeordnet

    datenname-1 wurde kein Knoten zugeordnet

    datenname-1

    Übertragung

    unverändert

    Datenfeld ist datenname-1 untergeordnet; ein Knoten wurde zugeordnet.

    Übertragung

    Datenfeld ist datenname-1 untergeordnet; es wurde kein Knoten zugeordnet.

    Initialisierung

    unverändert

    Andere Datenfelder

    unverändert

    unverändert

  11. Wenn ONLY angegeben ist, beschränkt sich die Übertragung auf Daten zu datenname-1 und allen ihm direkt untergeordneten Datenfeldern, die in ihrer IDENTIFIED-Klausel die ATTRIBUTE-Angabe haben. Alle anderen Datenfelder bleiben unverändert.

  12. Übertragung' bzw. 'Initialisierung' im Zusammenhang mit einem Datenfeld bedeutet die Zuweisung von Werten an folgende Datenfelder (sofern diese definiert sind):


    Übertragung

    Initialisierung

    Datenfeld aus der USING-Angabe der IDENTIFIED-Klausel

    Name des Knotens aus dem XML-Baum

    Leerzeichen

    Datenfeld aus der NAMESPACE USING-Angabe

    Wert des Namensraums aus dem XML-Baum

    Leerzeichen

    Datenfeld für den Wert

    Wert des Knotens aus dem XML-Baum

    INITIALIZE datenfeld TO DEFAULT

    Datenfeld aus der COUNT-Klausel

    1

    0

    Daten aus dem XML-Baum werden für die Übertragung als XML-Wert aufgefasst und entsprechend behandelt (siehe "Datenübertragung bei strukturorientierter Verarbeitung").

    Das Datenfeld für den Wert eines Knoten entspricht dem Datenfeld mit der IDENTIFIED-Klausel, sofern dieses elementar ist. Andernfalls muss es dem Datenfeld mit der IDENTIFIED-Klausel direkt untergeordnet sein und darf als einziges der direkt untergeordneten Datenfelder weder eine IDENTIFIED-Klausel haben, noch durch eine IDENTIFIED-Klausel angesprochen werden.

    • Mixed Content-Werte sind zu einem einzigen Wert zusammengefasst. Der Inhalt von CDATA-Abschnitten wird als Bestandteil der 'normalen Werte' geliefert.

    • Es werden auch Werte zu Attributen geliefert, die im XML-Dokument nicht angegeben sind, sofern diese in der DTD mit einem Vorgabewert versehen sind.

  13. Die Fortsetzung des Ablaufs der READ-Anweisung hängt davon ab, ob AT END oder NOT AT END angegeben ist, siehe Abschnitt "Ende-Bedingung".