Inhalt einer Schlüsseltabelle beschaffen: COMPLETEREF

Diese Funktionalität ist nicht auf allen Plattformen unterstützt.

EXEC TAA

    COMPLETEREF <stabobj>

END-EXEC

Diese Anweisung liest den Inhalt einer Schlüsseltabelle und stellt ihn indem dafür definierten lokalen Objekt zur Verfügung.

Sie können entweder die gesamte Tabelle oder bestimmte Sätze daraus beschaffen: bullet Um die gesamte Tabelle bereitzustellen, übergbeben Sie in der Anweisung COMPLETEREF ein leeres Listenobjekt (z.B. indem zuvor ein RESETCONTENTS erfolgt). bullet Um einen oder mehrere bestimmte Sätze aus der Tabelle zu beschaffenn, stellten Sie pro gewünschtem Schlüssel ein Element in das übergebene Listenobjekt ein und belegen Sie darin die Schlüsselfelder mit den gewünschten Werten. COMPLETEREF sucht dann in der Schlüsseltabelle nach Sätzen, deren Schlüssel mit den Schlüsseln der übergebenen Sätze übereinstimmen, und liefert nur die gefundenen Sätze zurück.

<stabobj> muss als lokales Objekt der Klasse „REF“ definiert sein.

Bei der Declare-Anweisung ist es i.d.R. notwendig, die Anwendung, aus der das Objekt stammt, mit anzugeben; diese Angabe wird der Typangabe vorangestellt, z.B. für ein lokales Objekt SXYZ zu der Schlüsseltabelle XYZ aus der Anwendung APP1:

EXEC TAA 

    DECLARE SXYZ TYPE APP1/XYZ CLASS REF 

END-EXEC

Als Objekttyp ist bei Schlüsseltabellenobjekten der Namen der Schlüsseltabelle anzugeben.

Wie auch bei anderen Datenobjekten, erzeugt der Preprozessor eine Datenstruktur, deren Felder mit dem Objektnamen prefixiert sind.

Ob die Anweisung COMPLETEREF erfolgreich ausgeführt wurde, können Sie über die Bedingungsnamen OM-RC-OK und OM-RC-NOT-OK abfragen.

Nachfolgend kann auf die Sätze des Objekts mit den üblichen GET-Anweisungen zugegriffen werden.

Schreibender Zugriff, also PUT oder DELETE, ist nicht zulässig.

Beispiel:

WORKING-STORAGE SECTION.
    exec taa declare myref 

        type APPL1/t01
        class ref 

    end-exec.

    exec taa declare myl70 

        type APPL2/L70

        class ref

    end-exec.
LINKAGE SECTION. 
000042 PROCEDURE DIVISION. 
000043 MAIN SECTION. 
EXEC TAA REGISTER END-EXEC.
.....

.....
ganz-lesen section.

    exec taa resetcontents myref end-exec
    exec taa completeref myref end-exec
    if om-rc-ok then
        exec taa get first myref end-exec
        perform until om-rc-eol
            perform stab-auswerten
            exec taa get next myref end-exec
        end-perform
    else
        perform stab-lesefehler
    end-if
exit.

 

schluessel-lesen section.
    exec taa resetcontents myl70 end-exec .
    initialize myl70-rec
    move "1998-01-01" to myl70-ANP-TRM-D0
    move "DEM" to myl70-BE-EH-K
    exec taa add myl70 end-exec .
    move "1999-01-01" to myl70-ANP-TRM-D0
    move "DEM" to myl70-BE-EH-K
    exec taa add myl70 end-exec .
    exec taa completeref myl70 end-exec
    if om-rc-ok then
        exec taa get first myl70 end-exec
        perform until om-rc-eol
            perform stab-auswerten
            exec taa get next myl70 end-exec
        end-perform
    else
        perform stab-lesefehler
    end-if
exit.