Technical Blog Post
Ever wonder why a CICS TS message has an offset X’FFFFFFFF’ in it?
There are so many times when CICS Transaction Server (CICS TS) will put out a DFHxxnnnn message stating "An Abend (Code 0Cn/AKEA) has occurred at offset X'nnnnnnnn') in program/module xxxxxxxx" where the offset is X'FFFFFFFF'. Have you ever wondered where does this offset of X'FFFFFFFF' come from?
Here are just some of the examples of what you might see:
- DFHSR0001 An abend (code 0C7/AKEA) has occurred at offset X'FFFFFFFF' in program user program.
- DFHAP0001 An abend (code 0C4/AKEA) has occurred at offset X'FFFFFFFF' in module DFHxxxxx.
Here is why CICS TS puts X'FFFFFFFF's in the offset field.
What CICS does is look at the failing PSW and attempts to determine what program/module the PSW is within. If CICS can determine the program/module, it will then try to calculate an offset and put this offset and the program/module name in the message. If CICS cannot determine what program/module the PSW is pointing into then CICS places all F's (X'FFFFFFFF') in the offset field of the message and places the name of the "last" program/module it knew about in the message. This program/module may or may not have caused the error.
In order to determine the actual failing program/module causing the program check (0Cn) one will need to manually debug the program check. By locating the PSW, Registers at time of failure, along with the Instruction Length, Interrupt Code, Exception Address, and the Branch Event Address one can determine the actual failing instruction and the program/module causing the error.
Now you know and understand why CICS TS puts an offset of X'FFFFFFFF' in its messages.