Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

OPEN DOCUMENT

&pagelevel(5)&pagelevel

Das zweite Format der OPEN-Anweisung (ausschließlich für XML-Dateien) mit der Angabe DOCUMENT leitet die eigentliche Verarbeitung eines XML-Dokuments ein. Es hat folgende drei Aufgaben:

  • Beschaffen von Arbeitsspeicher, der die Baumdarstellung des Dokuments aufnimmt.

  • Erzeugen der dem XML-Dokument entsprechenden Baumdarstellung in diesem Speicher.

  • Ausführen einer ersten Zuordnung des Baums zu einer der 01-Satzbeschreibungen aus der FD.

Der Zuordnungsvorgang beginnt im ersten Schritt auf der COBOL-Seite mit allen Datenfeldern auf Stufe 01 in der FD. Auf XML-Seite beginnt er mit der Wurzel des XML-Dokument-Baums. Anschließend werden weitere Zuordnungen durchgeführt, wie unter "Zuordnungsvorgang" beschrieben.

Danach sind Positionierungen (START) bzw. das Lesen (READ) über erfolgreich positionierte Datenfelder möglich.

OPEN DOCUMENT erlaubt zusätzlich auch die Angabe von
AT datenname-1 [ STACK ] (dabei muss datenname-1 mit einer IDENTIFIED-Klausel für Element-Knoten definiert sein). Im Unterschied zur Anweisung ohne die AT-Angabe, die ein ganzes XML-Dokument zur Verarbeitung bereitstellt, wird durch die AT-Angabe die (weitere) Verarbeitung auf einen Teilbaum dieses Dokuments begrenzt. Die Wurzel des Teilbaums muss jedoch (durch vorhergehende Anweisungen) erreichbar geworden sein, d.h. der angegebene datenname-1 muss eine gültige Position haben.

Der Zuordnungsvorgang beginnt im ersten Schritt auf der COBOL-Seite mit allen Datenfeldern auf Stufe 01 in der FD, auf XML-Seite mit der Wurzel eines Teilbaums. Als Wurzel dient der dem datenname-1 zugeordnete Knoten. Anschließend werden weitere Zuordnungen durchgeführt, wie unter "Zuordnungsvorgang" beschrieben.

Die Angabe STACK bewirkt, dass der Zustand des EPV vor Ausführung der OPEN-Anweisung gesichert wird und sich später mittels einer CLOSE DOCUMENT-Anweisung wieder herstellen lässt. Ohne die STACK-Angabe geht der 'alte' EPV-Zustand verloren.

Beispiel 12-40 OPEN DOCUMENT

XML-Dokument

Knoten-
Position

COBOL-Datenstruktur

OPEN
DOCUMENT
xml-fil

OPEN
DOCUMENT
xml-fil
AT y

<a>

<d>ddd</d>

<b>22

<c>level3</c>

</b>

<c>level2</c>

</a>

1

2

3

4


6

FD xml-fil

01 x IDENTIFIED BY "a".

  02 y IDENTIFIED BY "b".

   03 ...
01 z IDENTIFIED BY "b".

  02 u IDENTIFIED BY "c".

   03 ...


1(o)

3(o)


inv

inv


inv

inv


3(o)

4(o)

Anmerkungen

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

  • Nach der ersten OPEN DOCUMENT-Anweisung hat das Datenfeld y eine gültige Position und kann daher in der AT-Angabe bei der zweiten OPEN DOCUMENT-Anweisung verwendet werden.

  • Der Zuordnungsvorgang bei der zweiten OPEN DOCUMENT-Anweisung bezieht alle 01-Strukturen mit ein, betrachtet aber nur den Teilbaum mit Knoten 3 als Wurzel.Dies bewirkt ungültige Positionen für die Datenfelder x und y.

  • Da keine STACK-Angabe gemacht wurde, sind für weitere Zugriffe nur die gültigen Positionen im EPV verfügbar. D.h. die Wurzel des XML-Dokuments (Knoten 1) ist durch nachfolgende Anweisung nicht mehr erreichbar, es sei denn, das Dokument und die Datei werden geschlossen und erneut geöffnet.

Zusammenfassung

Zusammenfassend ist bei der OPEN DOCUMENT-Anweisung Folgendes zu beachten:

  • Der Zugriff auf ein XML-Dokument beginnt immer bei dessen Wurzel. Daher muss als erstes immer eine OPEN DOCUMENT-Anweisung ohne AT-Angabe erfolgen. Selbst die Angabe der Wurzel als Bezeichner in der AT-Angabe funktioniert nicht, denn diese setzt eine gültige Position des angegebenen Datenfeldes voraus.

  • OPEN DOCUMENT mit AT, aber ohne STACK-Angabe entspricht einer Bewegung im Baum von der Wurzel in Richtung Blätter ohne Umkehrmöglichkeit.

  • Die COBOL-Satzstrukturen sind eigentlich nur Schablonen, die Ausschnitte aus dem Baum beschreiben. Ausgehend von der Wurzel des Baums können sie mit beliebigen Teilen des Baums zur Deckung gebracht werden, solange sie sich zur Laufzeit in mindestens einem Knoten überlappen, dem Datenfeld aus der AT-Angabe.

  • Um dasselbe Dokument ein zweites Mal zu öffnen, reicht eine CLOSE DOCUMENT-Anweisung allein nicht aus. Zu diesem Zweck muss auch die Datei geschlossen und wieder geöffnet werden.

  • OPEN DOCUMENT modifiziert nur den EPV, lässt Daten aber unverändert.