IMS DB returns a status code that helps us the success or failure of the IMS call on the COBOL program. The status code should be validated for each IMS call on the program to determine whether the call is successful or not.
The COBOL program should verify for expected status codes. If an unexpected status code is encountered, the program should be able handle it appropriately(abending the program).
There are three types of IMS status code.
Informational: The status code returned by the IMS is neither good or bad. the application program must determine if the result is good or bad.
For example: End-of-file status
Program Error: The call itself was not attempted because the information passed to DL/I is invalid. This is always an abend condition and should only be encountered during testing.
For example: The segment name is misspelled.
IOError:The call was attempted but an IO Error was encountered. An unusual occurrence, should cause an abend.
Listed below IMS DB status codes with description:(highlighted important status code)
Status Code | Description |
---|---|
bb | Successful call. where, bb - Blank |
AA | The alternate PCB contains a transaction code instead of a logical terminal as a destination |
AB | No segment input/output area specified |
AC | SSA's not in hierarchical sequece |
AD | Invalid function parameter |
AF | Size of variable length record is invalid for GSAM get access |
AH | Atleast one SSA is required |
AI | Data management open error |
AJ | SSA qualification format invalid |
AK | Invalid field name in call |
AL | Batch program has issued a ROLS, ROLB, or SETS call and either the system log does not reside on disk or dynamic backout is not specified |
AM | Call function conflicts with processing option |
AO | A physical I/O error has occurred, APa CHKP function issued a transaction oriented BMP or a message call has more than 4 parameters |
AT | Input/Output area specified is too small |
AU | Length for SSAs specified exceeds the maximum allowed |
AY | Logical terminal name found in a response alternate PCB has more than one physical terminal assigned |
AZ | A PURG or ISRT was ignored in a conversational program |
A1 | Logical terminal name specified incorrectly in I/O area for a CHNG call |
A2 | PCB specified incorrectly for a CHNG call |
A3 | PCB specified incorrectly for an ISRT or PURG call |
A4 | Security violation |
A5 | Parameter list specified incorrectly on ISRT or PURG call |
A6 | ISRT function message length exceeds allowable length |
A7 | ISRT function number of messages added exceeds maximum allowed |
A8 | ISRT function issued to a response alternate PCB must follow ISRT to I/O PCB and these statements are reversed |
A9 | ISRT function message to response alternate PCB ignored because SAMETRM=YES |
BA | Call not completed because data is not available, operations by current call up to this error have been backed out |
BB | Call not completed because data is not available, operations since last commit point have been backed out |
CA | CMD function command verb invalid |
CB | CMD function command from an AOI program not allowed |
CC | After command completed successfully, IMS returned one or more command responses |
CD | Program does not have authority to execute a command listed in this CMD function |
CE | IMS rescheduled a message as a result of a call with the function GU since the last CMD call |
CF | Message scheduled before IMS was started |
CG | Message retrieved by GU originated from an AOI user exit |
CH | Automated Operator Interface (AOI) encountered a system error, current command not ignored |
CI | IMS rescheduled a message as a result of a call with the function GU since the last CMD call and message scheduled before IMS was started |
CJ | IMS rescheduled a message as a result of a call with the function GU since the last CMD call and message retrieved by GU originated from an AOI user exit |
CK | Message scheduled before IMS was started and message retrieved by GU originated from an AOI user exit |
CL | IMS rescheduled a message as a result of a call with the function GU since the last CMD call, message scheduled before IMS was started, and message retrieved by GU originated from an AOI user exit |
CM | Exception response occurred when executing a command issued via CMD call |
CN | Value in PSBIOAZ field is incorrect |
DA | Segment key field has been changed |
DJ | No preceding successful GH call |
DX | DLET violated delete rule for segment |
FA | Arithmetic overflow error |
FC | Call type and segment type are incompatible |
FD | Resource deadlock |
FE | FLD function received non blank status code in FSA |
FF | MSDB did not contain free space when ISRT was issued |
FG | FLD function received non blank status code in FSA and program has used all of buffer pool |
FH | DEDB was not accessible when database call was issued or commit point was reached |
FI | Input/Output area address not accessible to program |
FM | Randomizer did not return a DMAC address |
FN | Field name of FSA undefined in DBD and FLD function issued |
FP | Invalid hex or packed field in I/O area |
FS | Buffer limit for region exceeded |
FT | Number of SSAs exceeds limit of 15 for DEDB or 1 for MSDB |
FV | Verify operation failed at commit point |
FW | Program has used all of buffer pool |
GA | Crossed hierarchical boundary |
GB | End of database |
GC | Attempted to cross unit-of-work boundary |
GD | Position in database lost |
GE | Segment not found |
GG | Processing with procopt of GON or GOT and concurrent update activity is occurring |
GK | Different segment type at same level returned |
GL | LOG request has an invalid log code |
GP | No parentage established |
II | Segment already exists(update) |
IX | Violated insert rule |
LB | Segment already exists(load) |
LC | Segment keys are out of sequence |
LD | Segment's parent has not been loaded |
LE | Different sequence of sibling segments from the DBD |
MR | Terminal name invalid on ISRT message call |
NA | One or more databases not available |
NE | During index maintenance, a segment was not found |
NI | Unique secondary index but duplicate key encountered |
NO | Physical I/O error |
NU | Information only, REPL DLET or ISRT may return BA status code |
QC | GU message request failed |
QD | GN requested but no more message segments exist |
QE | GN not followed by GU message request |
QF | Length of message segment is less than 5 bytes |
QH | Terminal symbolic error encountered |
RA | Token does not match any on an outstanding SETS call |
RC | ROLS call was rejected |
RX | Violated replace rule |
SA | Storage space for I/O area unavailable on SETS call |
SB | Attempted to set 10 levels (only 9 are allowed) |
SC | SETS call was rejected |
TA | CICS command level failed because PSB is not defined |
TC | PSB in use by previous request |
TE | Unable to initialize the specified PSB |
TG | No PSB scheduled for program |
TH | No PSB scheduled for program |
TI | Path to segment is invalid |
TJ | DL/I is not active |
TL | Encountered conflict in scheduling intent |
TN | Invalid system DIB was found |
TO | Path replace error found |
TP | PROCOPT invalid |
TQ | Input/Output PCB access not allowed in a local DL/I call |
TR | CICS XDLIPRE exit cancelled a request |
TY | Database is not open |
TZ | Segment length longer than 64k |
UC | During batch processing, a checkpoint record was written to the utility control facility (UCF) dataset |
UR | During batch processing, IPL is restarted under UCF |
US | During batch processing, an IPL is halted |
UX | During batch processing both checkpoint and program halted |
VI | During an insert or update length of variable length segment is too long |
If you have any doubts or queries related to this chapter, get them clarified from our Mainframe experts on IBMMainframer Community!