IBM Mainframe Forum Index
 
Log In
 
IBM Mainframe Forum Index Mainframe: Search IBM Mainframe Forum: FAQ Register
 

CICS transaction abend with '4087' reason '00000007'


IBM Mainframe Forums -> CICS
Post new topic   Reply to topic
View previous topic :: View next topic  
Author Message
zhouqina

New User


Joined: 24 May 2007
Posts: 8
Location: china

PostPosted: Fri Jul 29, 2011 2:44 pm
Reply with quote

Hi all,

I haven't met the abend '4087' before. This abend looks very strange. The error message in CICS job log is 'Heap storage control information was damaged.'. May anyone has any ideas about this?

Which would cause the heap storage control information be damaged by CICS program?

Best regards,
Zhouqina.
Back to top
View user's profile Send private message
Bill Woodger

Moderator Emeritus


Joined: 09 Mar 2011
Posts: 7309
Location: Inside the Matrix

PostPosted: Fri Jul 29, 2011 2:46 pm
Reply with quote

zhouqina wrote:
Hi all,

I haven't met the abend '4087' before. This abend looks very strange. The error message in CICS job log is 'Heap storage control information was damaged.'. May anyone has any ideas about this?

Which would cause the heap storage control information be damaged by CICS program?

Best regards,
Zhouqina.


Program error.

Edit: Have you checked out the reason code as well with the message id?
Back to top
View user's profile Send private message
zhouqina

New User


Joined: 24 May 2007
Posts: 8
Location: china

PostPosted: Fri Jul 29, 2011 3:34 pm
Reply with quote

I could only find the description for U4087 - a recursive error happen.
And the reason code '07' is for language environment error.

As now, I find that one program's commarea with 'OCCURS DEPENDING ON' statement. I guess this cause the error. After I remove this statement, however, the same error happened again.

And then I try to remove this program from the transaction, the transaction can be executed successfully. Below is the program calling method:

exec cics link(P1)
datalength(L1)
commarea(A1)
length(L1)
resp(R1)
end-exec.

P1, L1 and A1 are declared in LINKAGE SECTION. They are passed from another program through CALL.
Back to top
View user's profile Send private message
Bill Woodger

Moderator Emeritus


Joined: 09 Mar 2011
Posts: 7309
Location: Inside the Matrix

PostPosted: Fri Jul 29, 2011 3:45 pm
Reply with quote

Are you aware of what "recursive" means? It is a big clue, probably.
Back to top
View user's profile Send private message
Robert Sample

Global Moderator


Joined: 06 Jun 2008
Posts: 8696
Location: Dubuque, Iowa, USA

PostPosted: Fri Jul 29, 2011 5:02 pm
Reply with quote

Quote:
Which would cause the heap storage control information be damaged by CICS program?
Table index (or subscript) greater than the size of the table
Table index (or subscript) less than 1
If using COBOL, using items in LINKAGE SECTION without establishing addressability
If using COBOL, using pointers without establishing addressability
and the list goes on ... lots of possible reasons

The recursion most likely refers to the LE abend process, which was trying to output a message when another condition occurred -- if your heap storage is damaged, that could explain the recursive messages. It does not, however, explain your original problem. Look at the CICS message log for the first error, or use CEDF (or another debugging tool) to track what happens in your program.
Back to top
View user's profile Send private message
Bill Woodger

Moderator Emeritus


Joined: 09 Mar 2011
Posts: 7309
Location: Inside the Matrix

PostPosted: Fri Jul 29, 2011 5:37 pm
Reply with quote

Thanks Robert.

Sorry zhouqina. I hope you haven't been going round in circles trying to find out what recursive means...

Back, then, to all the standard stuff as Robert has said.

Most likely thing is what you changed last, or some part of the program not tested before. Subscripts, indexes, pointers, linkage (your and to other modules).
Back to top
View user's profile Send private message
zhouqina

New User


Joined: 24 May 2007
Posts: 8
Location: china

PostPosted: Wed Aug 03, 2011 2:41 pm
Reply with quote

Thanks god! Problem resolved!

The root reason is the wrong length in GETMAIN function. The length is shortter than the acctual COPYBOOK length.

In other words, program is trying to write content to the memory that is already allocated to another program.
Back to top
View user's profile Send private message
Robert Sample

Global Moderator


Joined: 06 Jun 2008
Posts: 8696
Location: Dubuque, Iowa, USA

PostPosted: Wed Aug 03, 2011 4:45 pm
Reply with quote

Thanks for letting us know the solution. And programs using wrong lengths for GETMAIN and copy books can definitely cause heap storage overlays!
Back to top
View user's profile Send private message
View previous topic :: :: View next topic  
Post new topic   Reply to topic View Bookmarks
All times are GMT + 6 Hours
Forum Index -> CICS

 


Similar Topics
Topic Forum Replies
No new posts Using API Gateway from CICS program CICS 0
No new posts Reorg abended with REASON=X'00E40347' DB2 2
No new posts ISAM and abend S03B JCL & VSAM 10
No new posts Calling an Open C library function in... CICS 1
No new posts How to 'Ping' a CICS region in JCL CICS 2
Search our Forums:

Back to Top