Um den Inhalt eines Einzelobjekts (Typ REC) zu referenzieren, genügt immer die Angabe des Objektnamens.
Um einen Satz aus einem Mengenobjekt zu referenzieren, ist die Angabe eines Indexes oder einer relativen Position notwendig. Dafür wird folgende Syntax unterstützt:
[FIRST | NEXT | LAST | PREVIOUS | CURRENT ] <obj>
oder
<obj> [FIRST | NEXT | LAST | PREVIOUS | CURRENT | (<expr>) ]
<expr> muss ein Ausdruck sein, der einen numerischen Inhalt ergibt und somit als Index verwendet werden kann.
Nachfolgend wird diese Referenz auf ein Einzelobjekt oder einen Satz aus einem Mengenobjekt angegeben als
<objref> oder <objref-1> bis <objref-n>.
GET <objref> [WHERE <cond-1>]
Die Anweisung GET hat in CTV nur die Wirkung, innerhalb von Mengenobjekten auf den angegebenen Satz zu positionieren, d.h. der in <objref> angegebene Satz eines Mengenobjektes ist anschließend der aktuelle Satz.
Ein Beschaffen von Satzinhalten aus der Infrastruktur, wie z.B. in COBOL, ist nicht notwendig, da alle Referenzen auf Objektinhalte direkt auf die Objektdaten der TAA-Infrastruktur zugreifen. Die GET-Anweisung in Format 1 ist also in jedem Fall überflüssig.
GET WHERE beschafft den Inhalt des n-ten Satzes eines Mengenobjektes, für den die angegebene Bedingung zutrifft. z.B.
GET FIRST MyObj WHERE MyObj.000-AA-Betrag > 1000
beschafft den ersten Satz, bei dem der Inhalt des Felds BETRAG größer als 1000 ist. Dies kann der erste, aber ebensogut der 5, 10. oder 1000. Satz des Mengenobjekts sein.
GET LAST MyObj WHERE MyObj.000-AA-Betrag > 1000
durchsucht das Mengenobjekt von hinten, und liefert den hintersten Satz, auf den die Bedingung zutrifft. Dies kann, braucht aber nicht der letzte Satz des Mengenobjekts zu sein.
GET MyObj (4) WHERE MyObj.000-AA-Kennziffer = 1 AND MyObj.000-BB-Zuschlag = "J"
beschafft den 4. Satz aus dem Objekt, auf den beide Bedingungen zutreffen.
Über die BuiltIn-Funktions objIsEol bzw. objIsBol und ObjIsCurrent lässt sich abfragen, ob die Positonierung in dem Mengenobjekt erfolgreich war.
PUT <objref>
Die Anweisung PUT hat in CTV nur die Wirkung, innerhalb von Mengenobjekten auf den angegebenen Satz zu positionieren, d.h. der in <objref> angegebene Satz eines Mengenobjektes ist anschließend der aktuelle Satz.
Eine Übergabe von Satzinhalten an die Infrastruktur, wie z.B. in COBOL, ist nicht notwendig, da alle Änderungen an Objekten direkt in der TAA-Infrastruktur gespeichert werden. Die PUT-Anweisung ohne Positionsangabe ist also in jedem Fall überflüssig.
DELETE <objref>
Die Anweisung DELETE löscht den Inhalt eines Datenobjekts. Bei Objekten der Klasse LST wird ein bestimmtes Tabellenelement gelöscht, nicht das gesamte Mengenobjekt.
Wenn Sie bei einem Mengenobjekt keine Position angeben, wird als Default CURRENT angenommen. Nach dem DELETE ist der auf den gelöschten Satz folgende Eintrag die neue aktuelle Position (CURRENT); wenn der hinterste Satz einer Liste gelöscht wurde, wird der vorherige Satz CURRENT. Wird der letzte Satz einer Liste gelöscht, d.h. die Liste ist anschließend leer, gibt es keine gültige Position mehr, solange nicht ein ADD oder INSERT erfolgte.
NEW <obj>
Bei einem Record-Objekt stellt die Infrastruktur den Speicherplatz für das Objekt zur Verfügung und initialisiert ihn entsprechend der Objektstruktur.
Sie können die Anweisung NEW auch benutzen, um ein bereits benutztes Record-Objekt neu zu initialisieren.
Bei einem Mengenobjekt hat NEW dieselbe Wirkung wie RESETCONTENTS.
COPY <objref-1> TO <objref-2>
Wenn es sich bei einem Objekt um ein Mengenobjekt handelt und keine Position angegeben ist, wird CURRENT angenommen.
Die Anweisung kopiert den Inhalt des Satzes <objref-1> in den Satz <objref-2>. Zuvor überprüft die Infrastruktur, ob der Objekttyp der beiden Objekte gleich ist, die Objekte also die gleiche Struktur haben.
INSERT <objref> ADD <objref> <objref>: Mengenobjekt, ggf. mit Positionsangabe
Wenn keine Position angegeben ist, wird CURRENT angenommen.
Mit der Anweisung INSERT fügen Sie in das Ziel-Objekt <objref> vor der angegebenen Position einen Satz ein. Mit der Anweisung ADD fügen Sie in das Ziel-Objekt <objref> hinter der angegebenen Position einen Satz ein.
Wenn das Ziel-Objekt <objref> leer ist, darf keine Positionierung angegeben werden. Der Versuch, in einem leeren Objekt zu positionieren, führt zum Laufzeitfehler.
Nach dem INSERT oder ADD ist der neu eingefügte Satz die neue aktuelle Position (CURRENT).
Anmerkung: : Prinzipiell sind alle Positionsangaben zulässig, die auch für GET- und PUT-Operationen bekannt sind. Jedoch führt die Positionierung z.B. bei der Angabe NEXT oder PREVIOUS im Zusammenhang mit dem Einfügen vor (INSERT) oder hinter (ADD) dem gewählten Satz u.U. zu Ergebnissen, die zwar logisch richtig, aber dennoch oft unerwartet sind, sodass wir von der Verwendung dieser Positionsangaben bei ADD- und INSERT-Anweisungen dringend abraten.
ADDLIST <obj> TO <objref> INSERTLIST <obj> TO <objref> <obj>: Mengenobjekt <objref>: Mengenobjekt, ggf. mit Positionsangabe
Wenn bei <objref> keine Position angegeben ist, wird CURRENT angenommen.
Mit der Anweisung INSERTLIST fügen Sie in das Ziel-Objekt <objref> vor der angegebenen Position alle Elemente das Mengenobjekts <obj> ein.
Mit der Anweisung ADDLIST fügen Sie in das Ziel-Objekt <objref> hinter der angegebenen Position alle Elemente das Mengenobjekts <obj> ein.
Wenn das Ziel-Objekt <objref> leer ist, darf keine Positionierung angegeben werden. Der Versuch, in einem leeren Objekt zu positionieren, führt zum Laufzeitfehler.
Nach dem INSERTLIST oder ADDLIST ist die neue aktuelle Position (CURRENT) undefiniert; durch eine GET-Anweisung können Sie eine neue Positionierung auf das für die weitere Verarbeitung gewünschte Element vornehmen.
Anmerkung: Prinzipiell sind alle Positionsangaben zulässig, die auch für GET- und PUT-Operationen bekannt sind. Jedoch führt die Positionierung z.B. bei der Angabe NEXT oder PREVIOUS im Zusammenhang mit dem Einfügen vor (INSERT) oder hinter (ADD) dem gewählten Satz u.U. zu Ergebnissen, die zwar logisch richtig, aber dennoch oft unerwartet sind, sodass wir von der Verwendung dieser Positionsangaben bei ADD- und INSERT-Anweisungen dringend abraten.
RESETCONTENTS <obj> <obj>: Mengenobjekt
Diese Anweisung löscht den gesamten Inhalt des Mengenobjekts. Das Objekt ist anschließend leer, die Anzahl der Sätze in dem Mengenobjekt ist 0.
SORT <obj> ON FIELD <fld1> [<ASCENDING|DESCENDING] [, <fld-n> [<ASCENDING|DESCENDING] ...] <obj>: Mengenobjekt <feldname>: Feld aus der Objektstruktur des Mengenobjekts
Zum Beispiel:
SORT PLIST ON FIELD 000-xx-feld1 DESCENDING, 000-xx-feld2, 000-xx-feld5 ASCENDING SORT PLIST ON FIELD 000-xx-feld1, 000-xx-feld2
ASCENDING gibt an, dass die Liste aufsteigend sortiert werden soll, DESCENDING absteigend. Default ist ASCENDING.
MAKE <obj> FOR <objref> <obj>: Einzelobjekt <objref>: Mengenobjekt, ggf. mit Positionsangabe
Beide Objekte müssen vom gleichen Objekttyp sein, also die gleiche Objektstruktur haben.
MAKE verknüpft den Inhalt des Record-Objekts <obj> mit dem Inhalt des angegebenen Satzes in dem Mengenobjekt <objref>. Wenn in der Anweisung keine Positionierung enthalten ist, wird der aktuelle Satz verknüpft. Wenn kein aktueller Satz vorhanden ist, führt dies zum Laufzeitfehler.
MAKE erstellt keine Kopie von dem Satz, sondern Operationen auf <obj> finden physisch auf demselben Satz statt wie Operationen auf den zum Zeitpunkt de MAKE aktuellen Satz in <objref>.
Die MAKE-Anweisung ermöglicht es, einen einzelnen Satz eines Mengenobjekts bei einem Bausteinaufruf einem Parameterobjekt der Klasse REC zuzuordnen, wobei Änderungen in dem Parameterobjekt direkt in den verknüpften Satz des Mengenobjekts übernommen werden.
Das Objekt muss in KnowlEdge als lokales Objekt mit einem Objekttyp in der Form „<Anwendung>\<Tabellenname>“ angelegt sein.
Zum Füllen des Objekts mit den DAten aus der zugehörigen Schlüsseltabelle steht die Builtin-Function _Completeref zur Verfügung.