This chapter describes APS database calls.
Observe the following when coding database calls:
-KYWD- 12-*----20---*-- /* commentline
-KYWD- 12-*----20---*----
/*commentline
DB-BIND REC [recordname]
DB-BIND RUN-UNIT ... SUBSCHEMA name|NODENAME name|DBNAME name
DB-CLOSE ALL
DB-ERASE REC recordname [PERM|SELECT|ALL]
DB-GET REC [recordname]
DB-MODIFY REC recordname
DB-OBTAIN REC|REF recordname WHERE keyname = value [NEXT] ... [HOLD] [EXCLUSIVE]
DB-OBTAIN REC|REF recordname CURRENT [HOLD] [EXCLUSIVE]
DB-OBTAIN REC|REF IDMSREC SET setname| AREA areaname CURRENT ... [HOLD] [EXCLUSIVE]
DB-OBTAIN REC|REF IDMSREC|recordname ... WHERE DBKEY = value [HOLD] [EXCLUSIVE]
DB-OBTAIN REC|REF IDMSREC ... SET setname OWNER [HOLD] [EXCLUSIVE]
DB-OBTAIN [REF recordname1] REC|REF recordname2 ... WHERE sortkey operator value ... [SET setname [RESET]]|[RESET] [HOLD] [EXCLUSIVE]
DB-OBTAIN [REF recordname1] REC|REF recordname2 ... [SET setname] ... [WHERE SEQUENCE = number|FIRST|LAST|PREV|NEXT] ... [HOLD] [EXCLUSIVE]
DB-OBTAIN REC|REF IDMSREC SET setname|AREA areaname ... [WHERE SEQUENCE = number|FIRST|LAST|PREV|NEXT] ... [HOLD] [EXCLUSIVE]
DB-OBTAIN REC|REF recordname [AREA areaname] ... [WHERE SEQUENCE = number|FIRST|LAST|PREV|NEXT] ... [HOLD] [EXCLUSIVE]
DB-OPEN [ALL] [MODE usagemode] [AREA areaname]
DB-PROCESS [REF recordname] REC recordname
... [DB-PROCESS-ID name]
... [WHERE keyname operator value]
... [SET setname|AREA areaname] [RESET]
... [HOLD] [EXCLUSIVE]
Controlled logic block
DB-STORE REC recordname
Use the following 88-level flags for error handling after executing an IDMS call:
|
Flag |
Status Code |
Explanation |
|---|---|---|
|
AB-ON-REC |
0001 through 0306 |
Any error other than those listed. |
|
DUP-ON-REC |
0705 0805,1205 |
Duplicate key. |
|
END-ON-REC |
0307 |
End of set, area, or index reached. |
|
NTF-ON-REC |
0326 0626 |
Record not found. |
|
OK-ON-REC |
0000 |
Successful operation. |
|
POS-ON-REC |
All values of AB-ON-REC whose last 2 bytes are: |
Positioning error. |
|
VIO-ON-REC |
All values of AB-ON-REC whose last 2 bytes are: |
An update would violate rules. |
IDM-COMMIT [ALL]
IDM-CONNECT REC [recordname] TO setname
IDM-DISONNECT REC [recordname] FROM setname
IDM-IF SET setname [EMPTY|NOT EMPTY] ... [MEMBER|NOT MEMBER] paragraphname
-KYWD- 12--*--20---*----30----*---40---*---- SYEN IDM-PROTCOL programmode location
IDM-RETURN dataname FROM indexsetname ... [CURRENCY [FIRST|LAST|NEXT|PRIOR]] ... [USING keyfiel] [KEY INTO keyfield]
IDM-ROLLBACK [CONTINUE]
DB-ERASE REC segment [FROM dataarea] ... [VIEW pcbname|PCB pcbname]
DB-ERASE REC|REF segment1 [FROM dataarea] ... VIEW pcbname|PCB pcbname] ... REC|REF segment2 [FROM dataarea] ... VIEW pcbname|PCB pcbname] . . ... REC segmentN [FROM dataarea] ... VIEW pcbname|PCB pcbname]
DB-MODIFY REC|REF recordname1 [FROM dataarea] ... [VIEW pcbname|PCB pcbname] . . ... REC|REF recordnameN [FROM dataarea] ... [VIEW pcbname|PCB pcbname]
DB-OBTAIN REC recordname [HOLD] [RESET]
DB-OBTAIN REC recordname ... WHERE fieldname1 operator value ... [AND|OR fieldname2 operator value [FIRST|LAST] ... [INTO dataarea] . . ... [AND|OR fieldnameN operator value] [FIRST|LAST] ... [INTO dataarea] [HOLD]]] [RESET]
DB-OBTAIN REC recordname ... WHERE fieldname operator (value1 [ ... valueN]) ... [INTO dataarea] ... [FIRST|LAST] [HOLD] [RESET]
DB-OBTAIN REF segmentname1 WHERE fieldname1 operator value ... REC|REF segmentname2 WHERE fieldname2 operator value . . ... [REC segmentnameN WHERE fieldnameN operator value ... [FIRST|LAST] [HOLD]] [RESET]
DB-OBTAIN NEXT[REC] INTO dataarea ...VIEW pcbname|PCB pcbname [HOLD] [RESET]
MOVE 'segmentname' TO segmentname DB-OBTAIN IMSREC segmentname FROM dataarea ... VIEW pcbname|PCB pcbname
DB-OBTAIN REF recordname1 CURRENT ... REC recordname2 [WHERE fieldname operator value]
DB-OBTAIN REC recordname ... [WHERE fieldname operator value] VIEW pcbname|PCB pcbname
DB-OBTAIN REC recordname ... WHERE keyname operator fieldname OF dataarea|SUB (number)
DB-OBTAIN REC recordname CKEYED dataname
DB-PROCESS REC recordname
... [WHERE keyname operator value [SUB value] [OF dataarea]]
... [DB-PROCESS-ID name] [INTO dataarea]
... [HOLD] [RESET] [VIEW pcbname|PCB pcbname]
Controlled logic block
DB-PROCESS REC recordname
... [DB-PROCESS-ID name] [INTO dataarea]
... [HOLD][RESET] [VIEW pcbname|PCB pcbname]
Controlled logic block
DB-STORE [REC|REF recordname1] [FROM dataarea] ... [VIEW pcbname|PCB pcbname] ... [WHERE fieldname operator value] [REC|REF recordname2] ... [FROM dataarea] [VIEW pcbname|PCB pcbname] ... [WHERE fieldname operator value] ... [SUB number] [OF dataarea] . . ... REC recordnameN [FROM dataarea] ... [VIEW pcbname|PCB pcbname] ... [WHERE fieldname operator value] [SUB number] [OF dataarea]
IMS provides the following error fields that show how far your call was processed prior to failure:
|
IM-DB-PCB-SEGLEV |
Lowest level in the database for which the requested segment was found. |
|
IM-DB-PCB-SEGNAME |
8-character IMS name for the lowest-level segment located. |
|
IM-DB-PCB-KEY-FEED-BACK |
Concatenated key information for the path from the root-level to the lowest-level segment found. |
|
IM-DB-PCB-KEY-KFBLEN |
Length of data in the IM-DB-PCB-KEY-FEED-BACK field. |
Use the following 88-level flags for error handling after executing an IMS DB call:
| Flag |
Status Code |
Explanation |
|---|---|---|
|
AB-ON-REC |
Any not listed below |
For any error code not listed below. |
|
DUP-ON-REC |
I NI LB |
The DB-STORE failed; the new segment would have created a duplicate for a key or sequence field defined as unique. |
|
END-ON-REC |
GB |
End of database reached. |
|
NTF-ON-REC |
GE GB |
Requested record not found. |
|
OK-ON-REC |
2 spaces, GA GD GK |
Everything is OK. |
|
POS-ON-REC |
DJ LC LD LE |
Positioning error; requested positioning not established. |
|
RTY-ON-REC |
GG |
Requested record not available. Retry. |
|
VIO-ON-REC |
AM DA DX RX IX |
An update would violate rules. |
IMS provides a field to control program generation:
|
&IM-SUPPRESS-DB-CALL |
Prevent generation of DB calls; set field to YES in APS CNTL file APSDBDC. |
IM-CLSE view IM-OPEN view IM-OPEN-INP view IM-OPEN-OUT view IM-OPEN-OUTA view IM-OPEN-OUTM view IM-GN pcbname [ssa1 [...ssa15]] IM-GU pcbname ssa1 [...ssa15] IM-ISRT pcbname [ssa1 [...ssa15]]
$IM-FLD MSDBview fsaname [rootssa]
$IM-FSA fsaname segment ... field1[/picture/] operator operand1 ... [field2[/picture/] operator operand2] . . ... [field10[/picture/[ operator operand10]]
$IM-POS DEDBview [SSA]
IM-CHKP pcbname checkpointID ... [length1 dataarea1 [... length7 dataarea7]] IM-XRST pcbname ... [length1 area1 [... length7 area7]] ... [checkpointID maxiolength] IM-CHKP-OSVS pcbname checkpointID IM-DEQ pcbname deqcharacter IM-GSCD pcbname IM-LOG pcbname logcode loglength message IM-ROLB pcbname [msgarea] IM-ROLL IM-STAT-DBAS-FULL pcbname IM-STAT-DBAS-UNFORMATED pcbname IM-STAT-DBAS-SUMMARY pcbname IM-STAT-VBAS-FULL pcbname IM-STAT-VBAS-UNFORMATED pcbname IM-STAT-VBAS-SUMMARY pcbname
DB-DECLARE cursorname [correlname1.]copylibname-REC ... function1[(](expression)[,resultfield[,Y][)]] ... function2[(](expression)[,resultfield[,Y][)]] . . ... functionN[(](expression)[,resultfield[,Y][)]] ... WHERE ...
DB-OBTAIN REC [correlname1.]copylibname-REC ... function1[(](expression)[,resultfield[,Y][)]] ... function2[(](expression)[,resultfield[,Y][)]] . . ... functionN[(](expression)[,resultfield[,Y][)]] ... WHERE ...
DB-PROCESS REC [correlname1.]copylibname-REC ... [DB-PROCESS-ID name] ... function1[(](expression)[,resultfield[,Y][)]] ... function2[(](expression)[,resultfield[,Y][)]] . . ... functionN[(](expression)[,resultfield[,Y][)]] ... WHERE ...
DB-CLOSE CUR[SOR] cursorname
DB-COMMIT [HOLD]
DB-DECLARE cursorname copylibname-REC ... [FETCH ONLY] [WITH HOLD] [OPTIMIZE number] [UPDATE|ORDER] ... column1 [ASC|DESC] [...columnN [ASC|DESC]]]
DB-DECLARE cursorname copylibname-REC ... [FETCH ONLY] [WITH HOLD] [OPTIMIZE number] ... WHERE column operator [[:]altvalue]|column ... [AND|OR column operator [[:]altvalue]|column] ... [UPDATE|ORDER] column1 [ASC|DESC] ... [...columnN [ASC|DESC]]]
DB-DECLARE cursorname copylibname-REC [DISTINCT] ... [FETCH ONLY] [WITH HOLD] [OPTIMIZE number] ... column1 [(altvalue)] [... columnN [(altvalue)]] ... [WHERE column operator [[:]altvalue]|column ... [AND|OR correlname.]column operator [[:]altvalue]|column] . . ... [AND|OR correlname.]column operator [[:]altvalue]|column]] ... [UPDATE|ORDER col1 [ASC|DESC] [...columnN [ASC|DESC]]]
DB-DECLARE cursorname correlname.copylibname-REC [DISTINCT] ... [FETCH ONLY] [WITH HOLD] [OPTIMIZE number] ... [column1 [(altvalue)] [... columnN [(altvalue)]]] ... [correlname.copylibname-REC ... [column1 [(altvalue)] [... columnN [(altvalue)]]] . . ... [WHERE correlname.column operator [:]altvalue|correlname.column ... [AND|OR correlname.column operator [:]altvalue|correlname.column] . . ... [AND|OR correlname.column operator [:]altvalue|correlname.column]] ... [ORDER column1 [ASC|DESC] [...columnN [ASC|DESC]]]
DB-DECLARE cursorname copylibname-REC [DISTINCT] ... [FETCH ONLY] [WITH HOLD] [OPTIMIZE number] ... [column1 [(altvalue)] [... columnN [(altvalue)]]] ... [WHERE column operator [[:]altvalue]|column ... [AND|OR column operator [[:]altvalue]|column] . . ... [AND|OR column operator [[:]altvalue|]column]] UNION [ALL] DB-OBTAIN REC copylibname-REC . . ... [ORDER column1 [ASC|DESC] [...columnN [ASC|DESC]]]
DB-ERASE REC copylibname-REC [WHERE column operator [:]altvalue ... [AND|OR column operator [:]altvalue . . ... AND|OR column operator [:]altvalue]]
DB-ERASE REC copylibname-REC [WHERE CURRENT [OF] cursorname]
DB-FETCH CUR[SOR] cursorname [INTO dataname]
DB-MODIFY REC copylibname-REC ... [column1 [(altvalue)] [... columnN [(altvalue)]]] ... [FROM dataname] [WHERE column1 operator [:]altvalue . . ... AND|OR columnN operator [:]altvalue] ... [END[WHERE]]] [WHERE CURRENT [OF] cursorname]
DB-OBTAIN REC copylibname-REC ... WHERE column operator [:]altvalue|column ... [AND|OR column operator [:]altvalue|column] . . ... [AND|OR column operator [:]altvalue|column] [INTO dataname]
DB-OBTAIN REC copylibname-REC [INTO dataname]
DB-OBTAIN REC correlname1.copylibname-REC ... REC correlnameN.copylibname-REC ... [WHERE correlname.column operator [:]altvalue|correlname.column ... [AND|OR correlname.column operator [:]altvalue|correlname.column] . . ... [AND|OR correlname.column operator [:]altvalue|correlname.column]]
DB-OBTAIN REC copylibname-REC [DISTINCT] ... column1 [(altvalue)] [... columnN [(altvalue)]] ... [WHERE [correlname.]column operator [:]altvalue|column]
DB-OPEN CUR[SOR] cursorname
DB-PROCESS REC copylibname-REC
... [DB-PROCESS-ID name] [DB-LOOP-MAX=number]
... [FETCH ONLY] [WITH HOLD] [OPTIMIZE number]
... [UPDATE|ORDER col1 [ASC|DESC] [...columnN [ASC|DESC]]]
... [INTO dataname]
Controlled logic block
DB-PROCESS REC copylibname-REC [DB-PROCESS-ID name]
... [FETCH ONLY] [WITH HOLD] [OPTIMIZE number]
... WHERE column operator [[:]]altvalue]|column
... [AND|OR column operator [[:]altvalue]|column]
.
.
... [AND|OR column operator [[:]altvalue]|column]
... [DB-LOOP-MAX=number]
... [UPDATE|ORDER col1 [ASC|DESC] [...columnN [ASC|DESC]]]
... [INTO dataname]
Controlled logic block
DB-PROCESS REC copylibname-REC
... [FETCH ONLY] [WITH HOLD] [OPTIMIZE number]
... [DB-PROCESS-ID name] [DISTINCT]
... column1 [(altvalue)] [... columnN [(altvalue)]]
... WHERE column operator [[:]altvalue]|column
... [AND|OR column operator [[:]altvalue]|column]
.
.
... [AND|OR col operator [[:]altvalue]|col] [DB-LOOP-MAX=number]
... [UPDATE|ORDER column1 [ASC|DESC] [...columnN [ASC|DESC]]]
Controlled logic block
DB-PROCESS REC correlname.copylibname-REC
... [DB-PROCESS-ID name] [DISTINCT]
... [FETCH ONLY] [WITH HOLD] [OPTIMIZE number]
... [column1 [(altvalue)] [... columnN [(altvalue)]]]
... REC correlname.copylibname-REC
... [column1 [(altvalue)] [... columnN [(altvalue)]]]
.
.
... [WHERE correlname.column operator [[:]altvalue]|correlname.column
... [AND|OR correlname.column operator [[:]altvalue]|correlname.column]
.
.
... [AND|OR correlname.column operator [[:]altvalue]|correlname.column]
... [DB-LOOP-MAX=number]
... [ORDER column1 [ASC|DESC] [...columnN [ASC|DESC]]]
Controlled logic block
DB-PROCESS REC copylibname-REC
... [DB-PROCESS-ID name] [DISTINCT]
... [FETCH ONLY] [WITH HOLD] [OPTIMIZE number]
... [column1 [(altvalue)] [... columnN [(altvalue)]]]
... [WHERE column operator [[:]altvalue]|column
... [AND|OR column operator [[:]altvalue]|column]
.
.
... [AND|OR column operator [[:]altvalue]|column]]
... [DB-LOOP-MAX=number] UNION [ALL]
DB-OBTAIN REC copylibname-REC
.
.
... [ORDER column1 [ASC|DESC] [...columnN [ASC|DESC]]]
Controlled logic block
DB-ROLLBACK
DB-STORE REC copylibname-REC ... [column1 [(altvalue)] [... columnN [(altvalue)]]] [FROM dataname]
DB-STORE REC copylibname-REC ... [column1 [(altvalue)] [... columnN [(altvalue)]]] ... [DB-OBTAIN REC copylibname-REC column1 [... columnN] ... WHERE column1 operator [:]altvalue ... [AND|OR column2 operator [:]altvalue]] . . ... [AND|OR columnN operator [:]altvalue] ]
Use the following 88-level flags for error handling after executing SQL calls:
|
Flag |
Meaning |
|---|---|
|
AB-ON-REC |
Any error not listed in this table. |
|
DB2-DEADLOCK |
DB-PROCESS calls check this status to ensure the cursor is not already closed before closing it. SQL closes the cursor if the database is locked. |
|
DUP-ON-REC |
DB-STORE failed because the row already exists; duplicates are not allowed. |
|
END-ON-REC |
End of table or cursor set reached. |
|
NTF-ON-REC |
Requested row not found. |
|
OK-ON-REC |
Operation successful. |
|
RI-ON-REC |
Referential Integrity check successful (corresponds to SQLCODE -532 to -530). |
Use the following generated field to indicate whether the associated host variable has been assigned a null value:
01 IND-cursorname|IND-recorename
05 IND-column
DB-DECLARE cursorname correlname1.copylibname-REC [DISTINCT] ... [column1 [... columnN]]|[NONE] . ... correlnameN.copylibname-REC [column1 [... columnN]]|[NONE] . ... [WHERE correlname.column1 operator [:]value|correlname.column2 ... [AND|OR correlname.column3 operator [:]value|correlname.column4 . ... AND|OR correlname.columnN operator [:]value|correlnameN]] ... [ORDER column1 [ASC|DESC] [...columnN [ASC]]]
DB-OBTAIN REC correlname1.copylibname-REC [DISTINCT] ... [column1 [... columnN]]|[NONE] . . . ... REC correlnameN.copylibname-REC [column1 [... columnN]]|[NONE] ... [WHERE correlname.column1 operator [:]value|correlname.column2 ... [AND|OR correlname.column3 operator [:]value|correlname.column4 . . . ... AND|OR correlname.columnN operator [:]value|correlname.columnN]]
DB-PROCESS REC correlname1.copylibname-REC
... [DB-PROCESS-ID name] [DISTINCT]
... [column1 [... columnN]]|[NONE]
.
.
.
... REC correlnameN.copylibname-REC
... [column1 [... columnN]]|[NONE]
... [WHERE correlname.column1 operator [:]value|correlname.column2
... [AND|OR correlname.column3 operator [:]value|correlname.column4
.
.
.
... AND|OR correlname.columnN operator [:]value|correlname.columnN]]
... [DB-LOOP-MAX=number]
... [ORDER column1 [ASC|DESC] [...columnN [ASC|DESC]]]
Controlled logic block
Use the following special registers in DB-DECLARE, DB-OBTAIN, and DB-PROCESS calls:
CURRENT DATE CURRENT TIME CURRENT TIMESTAMP CURRENT TIMEZONE
DB-DECLARE cursorname [correlname1.]copylibname-REC . . . ... UNION [ALL] DB-OBTAIN REC copylibname-REC . . . ... [ORDER column1 [ASC|DESC] [...columnN [ASC|DESC]]]
DB-PROCESS REC [correlname1.]copylibname-REC . . . ... UNION [ALL] DB-OBTAIN REC copylibname-REC . . . ... [ORDER column1 [ASC|DESC] [...columnN [ASC|DESC]]]
DB-CLOSE FILE filename1 [ ... filenameN]
DB-CLOSE FILE ALL
DB-ERASE REC recordname ... WHERE primarykeyname = value [SUB value] [OF dataarea]
DB-ERASE REC recordname
DB-MODIFY REC recordname [FROM dataarea]
DB-OBTAIN REC recordname [VIEW keyname] [INTO dataarea] [RESET]
DB-OBTAIN REC recordname WHERE keyname operator value [SUB value] ... [OF dataarea] [INTO dataarea]
DB-OBTAIN REC recordname WHERE keyname operator value [SUB value] ... [OF dataarea]
DB-OPEN FILE filename ...[filenameN] MODE option
DB-OPEN FILE ALL MODE option
DB-PROCESS REC recordname WHERE keyname operator value
...[DB-PROCESS-ID name] [SUB value] [OF dataarea] [INTO dataarea]
Controlled logic block
DB-PROCESS REC recordname [VIEW keyname]
... [DB-PROCESS-ID name] [INTO dataarea] [RESET]
Controlled logic block
DB-STORE REC recordname [FROM dataarea]
Use the following 88-level flags for error handling after executing SQL calls:
|
Flag |
Status Code |
Explanation |
|---|---|---|
|
OK-ON-REC |
00 |
Successful operation. |
|
DUP-ON-REC |
02 |
Duplicate key; duplicates allowed. |
|
END-ON-REC |
10 |
End of file. |
|
INV-ON-REC |
20 21 22 23 24 |
Invalid key condition. |
|
IVD-ON-REC |
22 |
Duplicate key; not allowed. |
|
NTF-ON-REC |
23 |
Record not found. |
|
AB-ON-REC |
30 34 90 91 92 93 94 95 96 97 |
Abnormal condition. |
Use APS-defined data fields and S-COBOL flags in your program.
DB-ERASE REC recordname WHERE primarykeyname = value ... [SUB value] [OF dataarea] [KLEN value] ... [SYSID systemname] [DDN ddname]
DB-ERASE REC recordname
DB-FREE REC recordname|ALL [VIEW keyname] [ENDBR] [UNLOCK] ... [REQID number] [SYSID systemname] [DDN ddname]
DB-MODIFY REC recordname [FROM dataarea] ... [SYSID systemname] [DDN ddname]
DB-OBTAIN REC recordname [VIEW keyname] [INTO dataarea] ... [HOLD] [PREV] [REQID number] [RESET] ... [SYSID systemname] [DDN ddname]
DB-OBTAIN REC recordname WHERE keyname operator value ... [SUB value] [OF dataarea] [INTO dataarea] [KLEN value] [HOLD] ... [REQID number] [SYSID systemname] [DDN ddname]
DB-OBTAIN REF recordname WHERE keyname operator value ... [SUB value] [OF dataarea] [KLEN value] [RESETBR] ... [REQID number] [SYSID systemname] [DDN ddname]
DB-PROCESS REC recordname WHERE keyname operator value
... [DB-PROCESS-ID name] [SUB value] [OF dataarea]
... [INTO dataarea] [KLEN value] [HOLD] [PREV]
... [REQID number] [SYSID systemname] [DDN ddname]
Controlled logic block
DB-PROCESS REC recordname [DB-PROCESS-ID name] [INTO dataarea]
... [HOLD] [PREV] [RESET] [REQID number] [SYSID systemname]
... [VIEW keyname] [DDN ddname]
Controlled logic block
DB-STORE REC recname [FROM dataarea] [SYSID systemname] [DDN ddname]
Use the following 88-level flags for error handling after executing VSAM online calls:
|
VSAM Flag |
EIBRCODE Flag |
ISI-Errors/ ExceptioDnal Condition |
Explanation |
|---|---|---|---|
|
AB-ON-REC |
DSIDERR |
DSIDERR |
Abnormal condition. |
|
DUP-ON-REC |
DUPKEY |
DUPKEY |
Duplicate key; allowed. |
|
END-ON-REC |
ENDFILE |
ENDFILE |
End of file. |
|
INV-ON-REC |
NOTFND |
NOTFND |
Invalid key condition. |
|
IRQ-ON-REC |
INVREQ |
INVREQ |
Invalid request. |
|
IVD-ON-REC |
DUPREC |
DUPREC |
Duplicate key; not allowed. |
|
NTF-ON-REC |
NOTFND |
NOTFND |
Record not found. |
|
OK-ON-REC |
N/A |
N/A |
Successful operation. |
Use APS-defined data fields and S-COBOL flags in your program.
Copyright © 2002 Micro Focus International Limited. All rights reserved.
This document and the proprietary marks and names
used herein are protected by international law.