View previous topic :: View next topic
|
Author |
Message |
rahulz5
New User
Joined: 02 Sep 2010 Posts: 3 Location: Chennai
|
|
|
|
Hi,
This is my first post here.
I have coded a CICS module. My transaction fails and I get the following error:
DFHAC2206 06:19:10 MBCICM Transaction QTEN failed with abend 4094. Updates to local recoverable resources backed out.
This is the flow. The first time map is displayed correctly. Once I key in data to fetch values for display on the map I get the ABEND. The code works fine in COBOL2 load. When I stage it in endevor and test with endevor I get the above issue. After a day of beating my head on the wall I feel the program flows till CICS return statement. I put in a few displays. The last statement displayed in the CICS region batch job is one present before return.
This is my return statement.
EXEC CICS RETURN
TRANSID ('XXXX')
COMMAREA (WS-COMMAREA)
LENGTH (LENGTH OF WS-COMMAREA)
END-EXEC
This is most likely storage exception error from whatever little I'm able to make out from the CICS dump.
I feel it might be something silly but beats me. Please let me know if anyone has a solution.
Thank you very much |
|
Back to top |
|
|
Bill O'Boyle
CICS Moderator
Joined: 14 Jan 2008 Posts: 2501 Location: Atlanta, Georgia, USA
|
|
|
|
This looks to be an LE (Language Environment) abend code, unless someone coded an XC ABEND('4094') API.
Search the forum for Language Environment or Google....
Bill |
|
Back to top |
|
|
rahulz5
New User
Joined: 02 Sep 2010 Posts: 3 Location: Chennai
|
|
|
|
I'm still stuck with the ABEND.
Bill. I searched forums but I came up with blanks. However, in a couple of other posts I checked. Someone mentioned to look up the information mentioned below.
The following are the error messages I found in the dump:
CEE1000S z/OS INTERNAL ABEND. ABCODE = 4094 REASON = 00000018
DFHSM0102 MBCICM A storage violation (code X'0F0C') has been detected by module DFHSMAR.
IEA794I SVC DUMP HAS CAPTURED: 004
I looked up the error description and this is what i found.
For ABEND 4094 and Reason code= 18
X'18' (24)
Storage management could not properly free stack and/or heap storage. This might be due to writing beyond storage.
The Abend either usually occurs after/while to a CALL issued in the module. Or the ABEND occurs when/before executing return statement. Rarely the module manages to work fine.
Can you anyone help me how to analyze the root cause further? |
|
Back to top |
|
|
enrico-sorichetti
Superior Member
Joined: 14 Mar 2007 Posts: 10873 Location: italy
|
|
|
|
Quote: |
DFHSM0102 MBCICM A storage violation (code X'0F0C') has been detected by module DFHSMAR. |
the message is clear , somebody clobbered the SA ( storage accounting headers and trailers )
by moving somewhere more than it was supposed to do ( usually an out of range condition for an index )
the storage violations abends are the most difficult to diagnose,
quite often the abending transaction is the victim not the actor/culprit
the only way of properly debugging the issue is to look at the storage dump
to get an hint ( from the content of the overlayed storage ) about the culprit |
|
Back to top |
|
|
rahulz5
New User
Joined: 02 Sep 2010 Posts: 3 Location: Chennai
|
|
|
|
thanks enrico..
The ABEND has been resolved.
The ABEND was occuring at a CALL to one program. I made a few changes to my code but I'm not sure which one resolved it.
1. Placed a period after all the variables of the call statement. There were multiple variables sent. Call WS-X USING X Y Z.
2. Changed the size of working storage used in the return transaction statement to be equal to DHFCOMMAREA size. Earlier DFHCOMMAREA size was greater.
3. Changed the size of working storage variable used in the LINK to another program to be equal to DHFCOMMAREA size declared in the linkage section of the LINK module. Earlier DFHCOMMAREA size was greater than the size of the working storage used in COMMAREA parameter of the LINK.
However, one thing is the code without the above changes runs fine in COBOL II compiler load.
My last question is for the following scenario.
A transaction ABCD invokes program A. Program A issues a CALL to program B, a LINK to program C and an XCTL to program D. Assuming the a combinations 3 events can occur what would be the ideal way to declare and pass commarea. Or what rule should not be violated?
For ex. EXEC CICS LINK PROGRAM (C)
COMMAREA (WS-ABCD-COMM)
LENGTH (X)
END-EXEC
Size of DFHCOMMAREA declared in A = P
Size of DFHCOMMAREA declared in C = Q
Size of DFHCOMMAREA declared in D = R
Size of all the variables used in calling B = S
Working storage variable size used in COMMAREA to invoke C= X
Working storage variable size used in COMMAREA to invoke D= Y
Working storage variable size used in COMMAREA to return to A= Z
An example of sample answer I'm looking for is," P should be equal Z. S does not impact in any way......".
The answer could help me figure out what went wrong here. I think this is a noob question but if someone could clarify it for me, I would greatful for their reply. |
|
Back to top |
|
|
Bill O'Boyle
CICS Moderator
Joined: 14 Jan 2008 Posts: 2501 Location: Atlanta, Georgia, USA
|
|
Back to top |
|
|
|