CICS Abend Codes

What is an Abend ?

Abend has been coined from ABbnormal END of a task, it signifies that a transaction has been ended abnormally by CICS for performing some illegal action, or A CICS command to abnormally terminate a transaction. 

 

How can it be handled ?

 

If a CICS command fails, CICS traps the error and unless told otherwise, will take the default action i.e. usually an ABEND.

 

The only way to handle an abend is transfer control to a general abend handling routine which displays some meaningful messages and terminates.

 

This can be achieved by HANDLE ABEND command which is as follows:

 

EXEC CICS HANDLE ABEND

              LABEL (0000-HANDLE-ABEND)

END-EXEC.

 

Control can also be transferred another error handling program using

 

EXEC CICS HANDLE ABEND

              PROGRAM (‘HANDABND’)     

END-EXEC.

 

In the error handling paragraph we could use a forcible abend after moving proper abend code which results in a dump. The command to force an

 

ABEND is

 

MOVE ‘CEND’           TO ABEND-CODE.

EXEC CICS ABEND

              ABCODE  (ABEND-CODE)   

END-EXEC.

 

where ABEND-CODE is an X(4) variable defined in the working storage to which any 4 letter code can be moved. The code should not start with letter ‘A’ because CICS abend codes always start with ‘A’.

Which are the most occurring abends ?

ASRA A program interrupt has occurred. Either non-numeric data was found in a numeric field or else addressability has not been properly established. i.e. say if in a COMP-3 variable there are some alphabet instance then an ASRA abend will be caused if CICS tried reading it

AICA A runaway task condition has been detected. This indicates either a logical loop or that the system is overloaded, ultimately it will bring the whole CICS down. There are CICS parameters that determine how long a task can run without giving up control. The ICVR parameter in the CICS SIT table can be used to specify a value for all tasks running in CICS, or you can specify a RUNAWAY value when a transaction is defined. If a program is looping then you may not get an AICA abend, because the timer can be reset when certain events occur, e.g. some EXEC CICS commands may reset the timer to zero

AEXZ SYSTEM ERROR - A serious error occurred within CICS. It usually means a problem with the data set. At ADP, this generally happens on test CICS after a checkin/LI function. On native CICS after this abend, issue a new copy to the program i.e. load module

Other abend codes and their possible reasons

The usual Response codes can also be seen in a compile listing for any CICS-COBOL code

ABMO - An ABMO error means that the map name in the COBOL program does not match the map name in front of the DFHMDI assembler macro. This error can occur when executing either a SEND MAP or RECEIVE MAP command

AEIK TERMIDERR - The four character terminal id is not defined to a local or remote CICS on a START command. This generally means that the terminal id is not defined to the SYSM CICS version. In plain words it means CICS has not identified the terminal the transaction is run on.

AEIL (resp=12) DSIDERR - Data set ID or the file cannot be found in the CICS file control table (FCT).

AEIM (resp=13) NOTFND – A particular record on which the update lock is being taken or which is being trying to read is not found.

AEIN (resp=14) DUPREC - An attempt was made to add a record to a data set or file in which the same key or the record already exists.

AEIO (resp=15) DUPKEY - Occurs if a record is retrieved via an alternate index in which the key that is used is not unique. A record has been accessed by way of an alternate index with the NONUNIQUEKEY attribute, and another alternate index record with the same key follows

AEIP (resp=16) INVREQ FILE CONTROL:  all the scenarios it can happen in

o        Invalid file control request according to the CICS file control table.

o        A REWRITE, or a DELETE, was issued but no previous READ with UPDATE command was issued.

o        A READNEXT, READPREV, ENDBR, or RESETBR was issued but no previous STARTBR was issued.

o        A WRITE was issued, but the WS key field did not match the RIDFLD.

o        A DELETE command with the RIDFLD option specified is issued for a VSAM data set when a READ UPDATE command is outstanding.

o        Following a READ UPDATE command for a data set, a WRITE or READ UPDATE command is issued for the same data set before exclusive control is released.

o        The data area specified in the RIDFLD is not the same one in all the commands of a browse.

o        An attempt is made to start a browse with a REQID already in use for another browse.

o        A RETURN command with the Commarea option is issued in a program that is not at the highest logical level.

o        A RETURN command with the Transid option is issued in a task that is not associated with a terminal.

AEIQ (resp=17) IOERR - An I/O error occurred; (It can be during Read, Write , Browse etc. ).

AEIR (resp=18) NOSPACE - Occurs if no space is available when a new record is added to a VSAM and the condition is not handled. Some new blocks have to allocated and is an admin level job

AEIS (resp=19) NOTOPEN - The data set or Vsam is not open. Applications generally don't see this abend. Instead, they should handle the condition AEXL.

AEIT (resp=20) ENDFILE - Occurs if an end-of-file condition is detected during a browse and no more records exits after doing a ReadNext or Read Prev..

AEIU (resp=21) ILLOGIC - Occurs if a VSAM error occurs that does not fall within one of the other CICS/VS response categories.

AEIV (resp=22) LENGERR The various scenarios under which Length Error might occur

FILE CONTROL:

o        The length option is not specified for an input (without the set option) or output operation involving variable-length records.

o        The length specified for an output operation exceeds the maximum record size; the record is truncated.

o        The length of a record read during an input operation (with the into option) exceeds the value specified in the length option; the record is truncated, and the data area supplied in the length option is set to the actual length of the record. 

o        An incorrect length is specified for an input or output operation involving fixed-length records.

TEMPORARY STORAGE CONTROL:

o        Occurs if the length of the stored data is greater than the value specified by the length option for move-mode input operations.

o        Occurs if the length of data received by an input request that specifies the into option exceeds the value specified by the length or tolength option.

 

 

In a nut shell

The record length (01 RECORD-LENGTH PIC S9(4) COMP VALUE...) specified in working-storage does not match the record length stored on the file
The calculated record length, obtained from adding up the number of characters defined in the working storage layout does not match the specified record length (RECORD-LENGTH) or the length stored on the file . The picture given to RECORD-LENGTH is not stored as a two byte field. Usually this error occurs because the picture is S9(8) instead of S9(4) or is not COMP.

AEIW (resp=23) QZERO - Occurs when the destination (QUEUE) accessed by a READQ TD is empty.

AEIZ (resp=26) ITEMERR - Occurs when the item number specified or implied by a READQ TS, or a WRITEQ TS with the rewrite option, is invalid; or if the QUEUE referred to in a WRITEQ TS cannot be found.

AEI0/APCT (resp=27) PGMIDERR- Occurs if a program or map cannot be loaded into memory. In order, most likely first:

o        The program is disabled (compiled while an intercept was set in XPED).

o        The program was never compiled

o        The program is not spelled correctly, or contains lower-case letters.

o        The variable for the program/map name is 5 bytes long, rather than the correct 8 bytes.

APCT means that mapset name in the COBOL program does not match the mapset name in front of the DFHMSD assembler macro. This error can occur when executing either a SEND MAP or RECEIVE MAP command

AEI8 TSIOERR - Occurs if there is an unrecoverable temp storage I/O error.

AEI9 (resp=36) MAPFAIL - Occurs if the data to be mapped has a length of zero or does not contain a set buffer address (SBA) sequence. In order, most likely first:

o        In test, the WSCA copybook length does not match the DFHCOMMAREA FILLER.

o        In production, the client has shut down their workstation, or closed Passport, with a CICS screen still active. 

53 (resp=53) SYSIDERR - Occurs if a remote system, such as PRODA, is not running. AETA EXIT DISABLED - A CICS transaction has issued a non-CICS command via an application "stub".  CICS has determined that the exit has been disabled since the previous request was issued from the transaction. For A+ programs, this means that CICS Sockets has been shut down.

AEXL (resp=84) DISABLED - The data set or Vsam is not open. Application should be checked for DISABLED, and display a message to the user, rather than abending. On test CICS /native CICS screen after this abend, use DPOC to open the file or manually go the native CICS screen and open the file.

AEXY The executing transaction has been purged before control could be returned. This is sometimes the result of a task being cancelled/forced by Operations. It also occurs for A+ Host Listeners, at CICS shutdown.

AEYG JIDERR - Occurs if the specified journal file identifier does not exist in the journal control table (JCT). The primary function of the JCT is to register the control information of the system log and journal files

AEYH (resp=44) QIDERR - Occurs when the symbolic name identifying the QUEUE to be used with TS or TD requests cannot be found  That is the Queue name or identifier used cannot be found in DCT (Destination control table)

AEY9/DSNC The DB2 plan is not authorized to CICS, or DB2 is inactive.

AKC3 The task has been purged, probably due to Systems/Operations action such as a TASK PURGE command.

ASP7 DB2 failure. DB2(local or remote) is unable to continue with the syncpoint. A resource manager involved in syncpoint protocols has replied 'No' to a request to 'Prepare'.  This abend is caused by a prior problem:  for example, the resource manager cannot  flush its buffers because of an I/O error, or it cannot communicate with CICS because of a TP failure. 

ATCH The transaction was cancelled. This normally happens when your program is in a loop. ADP Operations is in charge of canceling transactions. The task was purged before a domain call was able to complete successfully.

User Response: The task might have been purged either as a result of a purge from the master terminal operator via the CEMT transaction, or by the task being timed out after waiting for longer than the DTIMOUT (deadlock timeout) value specified for the transaction, or by CICS issuing a purge request. If the master terminal operator purged the task, this may have been in an attempt to clear the system which appeared to be deadlocked for some reason. If the task was timed out automatically as a result of the DTIMOUT value being exceeded, this may be due to insufficient main storage being available for the number of tasks in the system. If the amount of main storage cannot be increased, reduce the number of tasks in the system to avoid short-on-storage situations. Another possibility is to increase the value of the DTIMOUT option for the transaction.

ATDD The destination that was specified in a transient data request is disabled. This could be due to the destination data set being full.

LGTH The length of the Common Area (DFHCOMMAREA) received by the ADIN routing program was incorrect.

NATV The ADIN routing program was entered in Native Mode, instead of the normal RETURN mechanism.

TRSW The Transfer Switch received by the ADIN routing program was incorrect
Comments