Dynamische Feldverweise erstellen

Sie können eine Variable vom Typ REFERENCE als dynamischen Verweis für die Navigation in einer Nachrichtenbaumstruktur verwenden. Sie funktioniert ähnlich wie ein Nachrichtencursor oder ein Variablenzeiger. Im Allgemeinen ist es beim Zugriff auf Wiederholungsstrukturen einfacher und effizienter, Verweisvariablen anstatt Feldgruppenindizes zu verwenden. Verweisvariablen werden überall akzeptiert. Feldverweise werden akzeptiert und benötigen eine Gruppe von Anweisungen und Funktionen, um die detaillierte Bearbeitung von Nachrichtenbaumstrukturen zu ermöglichen.

Sie müssen einen dynamischen Verweis deklarieren, bevor Sie ihn verwenden können. Ein dynamischer Verweis wird in einer einzigen Anweisung deklariert und initialisiert. Im folgenden Beispiel wird die Erstellung und Verwendung eines Verweises dargestellt.

-- Declare the dynamic reference
DECLARE myref REFERENCE TO OutputRoot.XML.Invoice.Purchases.Item[1];

-- Jedes Element im Bereich verarbeiten
WHILE LASTMOVE(myref)=TRUE 
DO  
-- Zu jedem Element im Bereich 1 hinzufügen
   SET myref = myref + 1;
-- Dynamischen Verweis auf nächstes Element im Bereich setzen
   MOVE myref NEXTSIBLING;
END WHILE;

In diesem Beispiel wird der dynamische Verweis myref deklariert, der auf das erste Element in der Feldgruppe in 'Purchases' (Käufe) zeigt. Der Wert im ersten Element wird um 1 erhöht, und der Zeiger (der dynamische Verweis) wird zum nächsten Element verschoben. Danach wird der Elementwert wieder um 1 erhöht. Dieser Prozess wird fortgesetzt, bis der Zeiger sich außerhalb des Bereichs der Nachrichtenfeldgruppe befindet (alle Elemente in dieser Feldgruppe wurden verarbeitet) und die Funktion LASTMOVE FALSE zurückgibt.

Im Folgenden sind weitere Beispiele aufgeführt.

DECLARE ref1 REFERENCE TO InputBody.Invoice.Purchases.Item[1];

DECLARE ref2 REFERENCE TO 
	InputBody.Invoice.Purchases.NonExistentField;

DECLARE scalar1 CHARACTER;
DECLARE ref3 REFERENCE TO scalar1; 

Im zweiten Beispiel wird festgelegt, dass ref2 auf 'InputBody' zeigen soll, da das angegebene Feld nicht vorhanden ist.

Mit Ausnahme der MOVE-Anweisung, die die Position des dynamischen Verweises ändert, können sie einen dynamischen Verweis überall dort verwenden, wo sie einen statischen Verweis verwenden können. Der Wert des dynamischen Verweises in einem Ausdruck oder einer Anweisung ist der Wert des Feldes oder der Variablen, auf die er derzeit verweist. Bei der unter Beispielnachricht aufgeführten Nachricht hat Invoice.Customer.FirstName den Wert 'Andrew'. Wenn der dynamische Verweis myref so festgelegt wird, dass er wie folgt auf das Feld 'FirstName' verweist:

DECLARE myref REFERENCE TO Invoice.Customer;

Dann ist der Wert von myref 'Andrew'. Sie können diesen dynamischen Verweis wie folgt erweitern:

SET myref.Billing.Address[1] = 'Oaklands';

Dadurch wird die Adresse in dem Beispiel in 'Oaklands Hursley Village Hampshire SO213JR' geändert.

Die Position eines dynamischen Verweises ist weiterhin festgelegt, auch wenn eine Baumstruktur geändert wird. Um dies zu veranschaulichen, wird für die nächsten Schritte die unter Beispielnachricht angeführte Nachricht als Eingabenachricht verwendet und eine veränderte Version dieser Nachricht in Form einer Ausgabenachricht erstellt.

  1. Kopieren Sie die Eingabenachricht in die Ausgabenachricht.
  2. Um die Ausgabenachricht zu ändern, deklarieren Sie zuerst den dynamischen Verweis ref1, der auf das erste Element, 'The XML Companion', verweist.
    DECLARE ref1 REFERENCE TO 
    	OutputRoot.XML.Invoice.Purchases.Item[1];
    Der dynamische Verweis ist nun äquivalent zum statischen Verweis OutputRoot.XML.Invoice.Purchases.Item[1].
  3. Verwenden Sie eine CREATE-Anweisung, um ein neues erstes Element für diesen Kauf einzufügen.
    CREATE PREVIOUSSIBLING OF ref1 VALUES 'Item'; 
    Der dynamische Verweis ist nun äquivalent zum statischen Verweis OutputRoot.XML.Invoice.Purchases.Item[2].
Zugehörige Konzepte
Nachrichtenflüsse - Übersicht
Übersicht zu ESQL
Nachrichten modellieren
Zugehörige Tasks
Einen Nachrichtenfluss entwerfen
Nachrichtenflussinhalte definieren
ESQL-Dateien verwalten
Zugehörige Verweise
Rechenknoten (Compute)
Datenbankknoten (Database)
Filterknoten
ESQL-Referenz
DECLARE-Anweisung
IF-Anweisung
Funktion LASTMOVE
MOVE-Anweisung
SET-Anweisung
WHILE-Anweisung
Beispielnachricht
Bemerkungen | Marken | Downloads | Bibliothek | Unterstützung | Rückmeldung
Copyright IBM Corporation 1999, 2006 Letzte Aktualisierung: 23. Aug. 2006
ak04864_