Inhalt eines Datenobjekts beschaffen: GET

EXEC TAA
   GET [ FIRST | NEXT | PREVIOUS | LAST | CURRENT ] <Objektname>
END-EXEC

EXEC-TAA
   GET <Objektname> ( <Datenname> | <num.Literal>| FIRST | NEXT | PREVIOUS | LAST | CURRENT)
END-EXEC

Mit der Anweisung GET kann der in der Infrastruktur gespeicherte Inhalt eines lokalen, Parameter- oder globalen Objekts abgeholt werden.

Bei Datenobjekten mit der Objektklasse LST (Listenobjekte) kann über die Anweisung GET der Inhalt jedes beliebigen Tabellenelements in dem Datensatz bereitgestellt werden. Wenn als Index ein Datenname angegeben wird, muss dies eine numerische COBOL-Variable sein.

Bei Listenobjekten ist die Angabe einer Positionierung zwingend.

Nach dem GET ist die Position, die Sie in der Anweisung angegeben haben, die neue aktuelle Position (CURRENT).

Das Ergebnis der Anweisung können Sie über die Bedingungsnamen OM-RC-OK und OM-RC-NOT-OK abfragen. Beim Listenobjekt können Sie über den Bedingungsnamen OM-RC-EOL feststellen, ob (beim GET FIRST oder GET PREVIOUS) das Ende der Liste erreicht ist, oder ob der angegebene Index größer ist als die Anzahl der Elemente in der Liste.

Falls Ihr Objekt einen sogenannten „Blob“ enthält, und Sie auf diesen Blob zugreifen möchten, benutzen Sie bitte die Anweisung GET BLOB.

Element aus Listenobjekt auswählen: GET WHERE

EXEC TAA
   GET { FIRST | NEXT | PREVIOUS | LAST | CURRENT } <Objektname>
   WHERE <bedingung>
END-EXEC

EXEC-TAA
   GET <Objektname> ( { <Datenname> | <num.Literal>| FIRST | NEXT | PREVIOUS | LAST | CURRENT } )
   WHERE <bedingung>
END-EXEC

Mit dieser Erweiterung der GET-Anweisung können Sie aus einem Listenobjekt ein Element beschaffen, auf das die in <bedingung> angegebenen Eigenschaften zutreffen.

Die Angabe einer Positionierung ist zwingend.

Die <bedingung> muss in korrekter COBOL-Syntax angegeben sein. Es ist dort alles erlaubt, was COBOL in IF-Bedingungen zulässt. Sie wird vom TAA-Preprozessor weder inhaltlich noch syntaktisch überprüft, sondern es wird der gesamte Code bis zum END-EXEC als Bedingung ungeprüft übernommen.

Beim GET WHERE bezieht sich die Positionsangabe (z.B. FIRST, LAST, oder (Datenname) auf das n. Element, auf das die Bedingung zutrifft:

  GET FIRST MYLIST WHERE MYLIST-NUMWERT > 100

beschafft das erste Listenelement, bei dem der Inhalt von NUMWERT größer als 100 ist;

  GET MYLIST(10) WHERE MYLIST-NUMWERT < 100 AND MYLIST-KENNZ = 1

beschafft das 10. Listenelement, bei dem NUMWERT kleiner als 100 und KENNZ = 1 ist;

die anschließende Anweisung

  GET NEXT MYLIST WHERE MYLIST-NUMWERT < 100 AND MYLIST-KENNZ = 1

beschafft das folgende (also 11.) Listenelement, bei dem NUMWERT kleiner als 100 und KENNZ = 1 ist.

Um dies zu erreichen, werden für jeden GET WHERE zwei Zugriffsanweisungen erzeugt: ein Vorlesen, und ein Nachlesen. Das Nachlesen wird nur ausgeführt, wenn der beim Vorlesen beschaffte Satz die Bedingung nicht erfüllt oder der Index des Treffers nicht erreicht ist. Dabei wird die Postionierungsangabe wie folgt umgesetzt:

Positionierung beim Vorlesen beim Nachlesen Lesen bis Treffer
FIRST GET FIRST GET NEXT 1
LAST GET LAST GET PREVIOUS 1
CURRENT GET CURRENT GET NEXT 1
NEXT GET NEXT GET NEXT 1
PREVIOUS GET PREVIOUS GET PREVIOUS 1
(index) GET FIRST NEXT index

Das Ergebnis der Anweisung können Sie über die Bedingungsnamen OM-RC-OK, OM-RC-EOL und OM-RC-NOT-OK abfragen. OM-RC-EOL wird geliefert, wenn das Ende der Liste erreicht wurde, ohne dass ein (weiterer) Treffer gefunden wurde. OM-RC-NOTOK weist auf ein grundsätzliches Problem beim Zugriff auf das Listenobjekt hin.

cobref:cob:get · Zuletzt geändert: 13.06.2019 13:05

Copyright © 1992-2024 TeamWiSE Gesellschaft für Softwaretechnik mbH         Adressen |  Kontakt |  AGB |  Datenschutzerklärung |  Impressum