MainframeKit

ASRA

Program checkCICS ABEND

The task ended because the program caused a hardware program check, such as bad packed data or a bad storage address.

MOST LIKELY

Packed or zoned decimal field holding non-numeric data (interrupt code 0C7).

FIRST CHECK

Find message DFHAP0001 or DFHSR0001 in the CICS log: note the program, the interrupt code and the offset.

TRY IT ▸

Record decoder

What it means

CICS turned a program check into a transaction abend. The machine stopped an instruction it could not run, CICS's recovery routine took control, and the task ended with ASRA. Other tasks in the region keep running.

ASRA itself does not say what went wrong. The interrupt code in the PSW and the offset in the message that comes before the abend (DFHAP0001 or DFHSR0001) tell you which instruction failed and why, for example a data exception (0C7) or a protection exception (0C4).

Typical causes

  • Packed or zoned decimal field holding non-numeric data (interrupt code 0C7).
  • Storage addressed through a bad pointer, an unset LINKAGE item or a subscript past the end of a table (0C4).
  • Using the COMMAREA when EIBCALEN is zero, for example on the first entry to a pseudo-conversational program.
  • Runtime library modules not defined to CICS after a compiler upgrade, for example the Language Environment routines needed by newer Enterprise COBOL.
  • Fields not initialised on the path the program took.

How to fix it

  1. Find message DFHAP0001 or DFHSR0001 in the CICS log: note the program, the interrupt code and the offset.
  2. Match the offset to the compile listing (with an offset map) of the exact program version that ran.
  3. Remember the offset comes from the PSW next-instruction address, so the failing instruction may be the one just before it.
  4. If the offset is X'FFFFFFFF', work from the PSW and registers in the transaction or system dump.
  5. Fix the data or code, recompile, and refresh the program in the region (for example with a NEWCOPY).
  6. Check that the language runtime modules are defined in the CSD if the abend started after a compiler change.

Example

Illustrative only; names and values are invented.

DFHAC2236 10:15:02 APPL01 Transaction TRN1 abend ASRA in program PROG01 term T001. Updates to local recoverable resources will be backed out.
DFHAP0001 APPL01 An abend (code 0C7/AKEA) has occurred at offset X'00001A3C' in module PROG01.