Joined: 06 Jun 2013
|Whenever a Program program checks within the CICS region, MVS will trap the PC and hand control to CICS thru the Kernel Domain. The Kernel will issue the Program Interrupt code AKEA and (in your case an 0C4..Protection Exception). It will then determine which Domain was in control at the time of the PC, and in this case and most cases its the Application Domain and pass control to this Domain's error handler routine with is DFHSRP. So we get the ASRA abend. Remember the middle 2 characters of every abend code, indicate who issued the abend.
In the DFHAP0001 or DFHSR0001 msg, if the failing offset is 'FFFFFFFF', then CICS was unable to locate the failing instruction.
This indicates that the failure was in a subroutine that was invoked by a Call. A Protection Exception, indicates that an address of some valid storage area was not set up correctly and contained low-values. So before we get into any lengthy analysis, please check on any subroutines and check that all parameters passed by the Calling program are allowed for and addressed in the Called program.
If we are dealing with only Assembler here, then you will need to check all Dsects.
If you are not sure of the structure of the Load module then run an AMBLIST utility on the Load module.
//STEP1 EXEC PGM=AMBLIST
//SYSPRINT DD SYSOUT=*
//SYSLIB DD DSN=THE.LOAD.LIBRARY,DISP=SHR
//SYSIN DD *
In the Output look for the heading ‘Control Section’, then review the data under headings : LMOD LOC NAME LENGTH TYPE
This will give you all the subroutines in the Load module, and so a much better understanding of its structure.
I hope this helps