Die Funktionsweise hängt von der letzten OPEN DOCUMENT-Anweisung der Datei ab, für die es noch keine CLOSE DOCUMENT-Anweisung gegeben hat:
Wenn die letzte OPEN DOCUMENT-Anweisung keine STACK-Angabe hatte, werden alle Einträge im EPV auf ungültig gesetzt, die interne Baumdarstellung des Dokuments wird entsorgt, und der dafür verwendete Arbeitsspeicher wird freigegeben
Wenn die letzte OPEN DOCUMENT-Anweisung eine STACK-Angabe hatte, wird der EPV in den Zustand zurückversetzt, den er vor der Ausführung dieser OPEN-Anweisung hatte.
CLOSE DOCUMENT modifiziert nur den EPV, lässt Daten aber unverändert.
Eine CLOSE DOCUMENT-Anweisung muss nicht explizit gegeben werden: Wenn sie fehlt, wird sie implizit durch eine CLOSE-Anweisung oder eine OPEN DOCUMENT-Anweisung ohne STACK-Angabe angestoßen (jeweils für die gleiche Datei).
Beispiel 12-41 CLOSE DOCUMENT und OPEN DOCUMENT mit STACK
XML-Dokument | Pos | COBOL-Datenstruktur |
|
|
|
|
| 1 2 3 4 6 |
| 1(o) 3(o) inv inv | inv inv 3(o) 4(o) | 1(o) 3(o) inv inv | inv inv inv inv |
Anmerkungen
Hinweise zur Darstellung dieses Beispiels finden Sie auf "Anweisungen für die XML-Verarbeitung".
Die STACK-Angabe bei der OPEN DOCUMENT-Anweisung hat unmittelbar keine Auswirkung auf den aktuellen Inhalt des EPV nach dieser Anweisung (vgl. Beispiel "OPEN DOCUMENT").
Die erste CLOSE DOCUMENT-Anweisung stellt den EPV mit dem Zustand vor der zu-gehörigen (zweiten) OPEN DOCUMENT-Anweisung wieder her, weil dort die STACK-Angabe gemacht wurde.
Die zur zweiten CLOSE DOCUMENT-Anweisung gehörige (erste) OPEN DOCUMENT-Anweisung hatte keine STACK-Angabe. Daher werden alle EPV-Einträge auf 'ungültig' gesetzt.