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 von | DATABASE-KEY | DATABASE-KEY-LONG |
DATABASE-KEY | a | b |
DATABASE-KEY-LONG | c | a |
- Werte werden 1:1 abgebildet
Werte werden intern verlängert
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.