I received an U4038 abend when i tried to run my job,this is the sysout message
"Invalid character was found in column 8 in argument-1 for function NUMVAL in the program at displacement X'2092'.
I searched the column 8 and found the junk data in one of the records and it resolved the abend but jus curious to know what does X'2092' imply and is there way to find the error record without going one by one?
Joined: 03 Oct 2009 Posts: 1783 Location: Bloomington, IL
You should have mentioned that the message number was IGZ0152S.
General abend method: find the statement in the PMAP that begins at the highest relative address that is less than or equal to the program displacement. Find that statement; note the variables used and find their base register(s) and offsets in the DMAP. Find them in the dump, note the values, and deduce from there. Some of these steps may be simplified if your shop has some such tool as Abend-AID or Fault Analyzer.
Means the code causing the problem was at displacement X'2092' in the program identified as containing that code. In the case of a function call, it will be the instruction which "branched" to the function.
Follow Mr Akatsukami's advice. The DMAP is the "Data Division Map". The PMAP is the "Procedure Division Map", although an Enterprise Cobol compile listing fails to mention that.
For the OFFSET listing, the PMAP starts at the first line which has
"LINE # HEXLOC VERB"
starting in column one.
For the LIST listing (which includes the generated pseudo-assembler code) it starts after the LITERAL POOL MAP, but the first part is not directly related to your code, which will start when column starts with a line number which is the number of the first line of code (from the compile listing, not the source) in your program.
You get the OFFSET listing by using compile options OFFSET,NOLIST
You get the LIST listing by using compile options NOOFFSET,LIST