Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

COBOL-DML-Anweisungen anpassen

ACCEPT

Die Anweisung ACCEPT gibt es in zwei Varianten:

  • Im Format 1 ermittelt ACCEPT den Database-Key-Wert des CRR, CRS, CRA oder CRU und legt ihn in einem COBOL-Feld vom Typ USAGE IS DATABASE-KEY ab. Dieses Feld muss angepasst werden (USAGE IS DATABASE-KEY-LONG), falls nicht ausgeschlossen werden kann, dass die Database-Key-Werte von CRR, CRS, CRA bzw. CRU im erweiterten Wertebereich liegen.
    Wenn der ermittelte Database-Key-Wert zu groß für das Ergebnisfeld ist, meldet UDS/SQL den Statuscode 15102.

  • Im Format 2 ermittelt ACCEPT den Realm, in dem der Satz liegt, dessen Database-Key-Wert im COBOL-Feld vom Typ USAGE IS DATABASE-KEY angegeben ist. Dieses Feld muss angepasst werden (USAGE IS DATABASE KEY LONG), wenn in ihm Database-Key-Werte aus dem erweiterten Wertebereich übergeben werden sollen.

FIND (Format 1) und FETCH (Format 1)

Die Anweisungen FIND und FETCH im Format 1 ermitteln einen Datenbanksatz über den Wert eines COBOL-Feldes vom Typ USAGE IS DATABASE-KEY. Dieses Feld muss angepasst werden (USAGE IS DATABASE-KEY-LONG), wenn nach einem Satz gesucht werden soll, dessen Database-Key-Wert im erweiterten Wertebereich liegt.

FIND (Format 7) und FETCH (Format 7)

Das Anwenderprogramm kann mit FIND/FETCH im Format 7 die gewünschte Set-Occurrence über den Database-Key-Wert des Ownersatzes auswählen, wenn die Schema-DDL die folgenden beiden Klauseln enthält:

  • LOCATION MODE IS DIRECT bzw. LOCATION MODE IS DIRECT-LONG im Satz-Eintrag der Ownersatzart

  • SET OCCURRENCE SELECTION THRU LOCATION MODE OF OWNER im betreffenden Set-Eintrag

Für die Auswahl der Set-Occurrence übergibt das Anwenderprogramm den Database-Key-Wert an das in der LOCATION MODE-Klausel genannte Database-Key-Feld (siehe Handbuch „Entwerfen und Definieren“).

Im Fall LOCATION MODE IS DIRECT-LONG hat das zugehörige Database-Key-Feld den Datentyp DATABASE-KEY-LONG. Damit das Anwenderprogramm Database-Key-Werte des erweiterten Wertebereichs übergeben kann, muss der Datentyp des COBOL-Feldes, das den Database-Key-Wert übergibt, geändert werden in USAGE IS DATABASE-KEY-LONG.

MODIFY

Das Anwenderprogramm kann mit MODIFY den Current Record of Rununit (CRU) in eine andere Set Occurrence umhängen, wenn die Schema-DDL die folgenden beiden Klauseln enthält:

  • LOCATION MODE IS DIRECT bzw. LOCATION MODE IS DIRECT-LONG im Satz-Eintrag der Ownersatzart und

  • SET OCCURRENCE SELECTION THRU LOCATION MODE OF OWNER im betreffenden Set-Eintrag,

Das Anwenderprogramm kann mit MODIFY die gewünschte Set-Occurrence über den Database-Key-Wert des Ownersatzes auswählen, indem es den Database-Key-Wert an das in der LOCATION MODE-Klausel genannte Database-Key-Feld übergibt (siehe Handbuch „Entwerfen und Definieren“).

Im Fall LOCATION MODE IS DIRECT-LONG hat das zugehörige Database-Key-Feld den Datentyp DATABASE-KEY-LONG. Damit das Anwenderprogramm Database-Key-Werte des erweiterten Wertebereichs übergeben kann, muss der Datentyp des COBOL-Feldes, das den Database-Key-Wert übergibt, geändert werden in USAGE IS DATABASE-KEY-LONG.

SET

Die Anweisung SET überträgt den Inhalt eines Database-Key-Feldes in ein anderes Database-Key-Feld bzw. in mehrere andere Database-Key-Felder.

Die Zielfelder müssen an den erweiterten Wertebereich angepasst werden (USAGE IS DATABASE-KEY-LONG), wenn Folgendes zutrifft:

  • Das Feld, aus dem übertragen werden soll, wurde bereits in den Datentyp USAGE IS DATABASE-KEY-LONG geändert oder das Feld ist eine Redefinition eines Feldes vom Typ USAGE IS DATABASE-KEY-LONG.

  • Es sollen Database-Key-Werte des erweiterten Wertebereichs übertragen werden.

Bei der Zuweisung von Database-Key-Werten mit der SET-Anweisung verfährt das COBOL-Laufzeitsystem wie folgt (siehe Handbuch „Anwendungen programmieren“):

Übertragung   nach

von

DATABASE-KEY

DATABASE-KEY-LONG

DATABASE-KEY

a

b

DATABASE-KEY-LONG

c

a

    1. Werte werden 1:1 abgebildet
    2. Werte werden intern verlängert

    3. Werte werden intern verkürzt. Wenn der zu übertragende Database-Key-Wert zu groß für ein Zielfeld ist (REC-REF > 254 und/oder RSQ > 224-1), wird Statuscode 00102 gemeldet und der Wert des Zielfelds auf 0 gesetzt. Die Ausführung der Anweisung wird jedoch nicht abgebrochen.

STORE

Die Anweisung STORE nimmt einen neuen Satz in die Datenbank auf. Wenn der Schema-Eintrag für die betreffende Satzart die Klausel LOCATION MODE IS DIRECT bzw. LOCATION MODE IS DIRECT-LONG enthält, kann das Anwenderprogramm den Database-Key-Wert für den abzuspeichernden Satz vorgeben. Zu diesem Zweck übergibt das Anwenderprogramm den Database-Key-Wert an das in der LOCATION MODE-Klausel genannte Database-Key-Feld.

UDS/SQL verfährt dann wie nachfolgend beschrieben:

  • Database-Key-Vergabe:
    UDS/SQL speichert den Satz unter dem vom Anwenderprogramm bereitgestellten Database-Key-Wert in der Datenbank ab.

  • Set-Occurrence-Auswahl:
    Falls die betreffende Satzart Membersatzart eines Set ist, der mit SET OCCURRENCE SELECTION THRU LOCATION MODE OF OWNER definiert ist, speichert UDS/SQL den Satz als Membersatz ab in der Set-Occurrence desjenigen Ownersatzes, dessen Database-Key-Wert mit dem vom Anwenderprogramm bereitgestellten Database-Key-Wert übereinstimmt.

Im Fall LOCATION MODE IS DIRECT-LONG hat das zugehörige Database-Key-Feld den Datentyp DATABASE-KEY-LONG. Damit das Anwenderprogramm Database-Key-Werte des erweiterten Wertebereichs übergeben kann, muss der Datentyp des COBOL-Feldes, das den Wert übergibt, geändert werden in USAGE IS DATABASE-KEY-LONG.