View previous topic :: View next topic
|
Author |
Message |
eHorizon.Andrew
New User
Joined: 18 Jan 2007 Posts: 28 Location: Bank of communications
|
|
|
|
I have test my program for many times, and summarize the following scenario for my abend code.
*A program is a PL/I DB2 program, and need a DBP, I can compile the program successfully, and in the A program, it calls a COBOL DB2 program B, also, B has a DBP,and in A using Fetch Declaration, and call the B program, it is depend on a parameter as a bridge, and I am sure the length of the variable are the same. When it runs, it post S0C4 abend code. And I use debug tool to monitor A program, it abends while calling B program, and debug can not go into the B program.
*C is a PL/I Datacom program, not having a DBP, all the situation are similar with A program, and calls B program, it can run successfully.
I am doubt with this problem ,can anyone help me on this?
thanks and regards... |
|
Back to top |
|
|
Bitneuker
CICS Moderator
Joined: 07 Nov 2005 Posts: 1104 Location: The Netherlands at Hole 19
|
|
|
|
Did you check the AMODE and RMODE? If one runs in upper memory and the other in lower memory a S0c4 often occurs. |
|
Back to top |
|
|
eHorizon.Andrew
New User
Joined: 18 Jan 2007 Posts: 28 Location: Bank of communications
|
|
|
|
thank you George,
But I am not quite clear about the AMODE and RMODE, could you tell me more exactly? |
|
Back to top |
|
|
dick scherrer
Moderator Emeritus
Joined: 23 Nov 2006 Posts: 19244 Location: Inside the Matrix
|
|
|
|
Hello,
It will help you if you talk with your DBA or system programmer. They can tell you which mode your modules should be linked as. |
|
Back to top |
|
|
Bitneuker
CICS Moderator
Joined: 07 Nov 2005 Posts: 1104 Location: The Netherlands at Hole 19
|
|
|
|
eHorizon.Andrew wrote: |
thank you George,
But I am not quite clear about the AMODE and RMODE, could you tell me more exactly? |
Memory is devided in two parts. One is called LOWER and has 16 MB in which also OS is running leaving about 7 MB for your program. The other is called UPPER and is 'unlimitied'. If one module runs in UPPER (AMODE=31) and call a module in LOWER (AMODE=24) transferring parameters or pointers one often gets a protection exception.
Check the modules in the loadlibrary for the attributes AMODE (31 or 24) and RMODE (with AMODE 31 it should be ANY).
Or indeed like Dick wrote; check with your systemprogrammer. |
|
Back to top |
|
|
|