View previous topic :: View next topic
|
Author |
Message |
Andy85
New User
Joined: 25 Dec 2008 Posts: 35 Location: India
|
|
|
|
Hi,
I am trying to submit a COBOL program (MQAI01UT) that performs MQ related operations. However, the job fails in the program with S0C4. When I tried putting displays to find the place, where its aborting, I came to know that its happening during MQCONN statement. Its not even completing the MQCONN statement (for me to check return code).
After reading through different articles on forum, I tried some R&D on the Link option of AMODE and RMODE, during compilation. During some combination, the program gives S0C4 before MQCONN operation itself. This S0C4 happens in "OPEN" file statement.
Can anyone please help me out with the issue? I believe (not sure) its some different compilation options that would make the program run successfully, but I am not able to reach the end-point. I have tried without AMODE and RMODE, with ANY and 24/31 options etc. but no luck yet. Please guide me.
Thanks in advance.
Andy.
SYSUDUMP is as given below:
Code: |
COMPLETION CODE SYSTEM = 0C4 REASON CODE = 00000011
PSW AT ENTRY TO ABEND 078D2000 95F04FFA ILC 04 INTC 0011
PSW LOAD MODULE ADDRESS = 15F04E00 OFFSET = 000001FA
NAME=MQISTUB
|
Abend aid shows below information
Code: |
A storage reference exception, S0C4, occurred during execution of
program IDCXXXXX.
*******************************************
* Error Location *
*******************************************
The next sequential instruction to be executed in program IDCXXXXX was
at displacement 0000000A.
00000004 07FF BR R15
00000006 0000 DATA X'0000'
00000008 15F0 CLR R15,R0
NSI==> 0000000A 4FF8C35B CVB R15,859(R8,R12)
0000000E C15B DATA X'C15B'
The program was compiled on 20 SEP 2001 and is 00000010 bytes long.
It is part of load module MQISTUB.
The module was dynamically loaded.
The module was loaded from JOBLIB library
XXXXXX.XXXXX
The module was link edited on 05 JUN 2003 and is 00000200 bytes long.
*******************************************
* Call Trace Summary *
*******************************************
A B E N D - A I D PAGE 3
*******Calling******* ****Return**** *******Called********
Load-Mod Program Type Value Program Load-Mod
*SYSTEM Links to MQAI01UT MQAI01UT
MQAI01UT MQAI01UT DISP 00002CBA Calls IGZCLNK IGZCPAC
IGZCPAC IGZCLNK DISP 000005B6 Calls MQISTUB MQISTUB
MQISTUB MQISTUB Calls IGZCDSP IGZCPAC
IGZCPAC IGZCDSP DISP 00000464 Calls IGZEOUT IGZCPCO
IGZCPCO IGZEOUT DISP 000002EC Calls IGG019DJ
The program causing the error is not on the calling
chain.
------------------------------------------------------------------------
Load-Mod Amode Rmode Resides in
MQISTUB 31 ANY XXXX
MQAI01UT ANY 24 XXXX
IGZCPAC 31 24 XXXX
IGZCPCO 31 24 XXXX
IGG019DJ ANY ANY Dynamic LPA
------------------------------------------------------------------------
|
|
|
Back to top |
|
|
Garry Carroll
Senior Member
Joined: 08 May 2006 Posts: 1193 Location: Dublin, Ireland
|
|
|
|
Can we see your program compile? In particular the definitions of the MQ areas.
Quote: |
During some combination, the program gives S0C4 before MQCONN operation itself. This S0C4 happens in "OPEN" file statement. |
The small portion of dump shown says that the abend is in MQISTUB - how does this relate to a file OPEN ?
Garry. |
|
Back to top |
|
|
Bill Woodger
Moderator Emeritus
Joined: 09 Mar 2011 Posts: 7309 Location: Inside the Matrix
|
|
|
|
As Gary says, MQISTUB is where it is failing. MQISTUB has not been link-edited for a long time. It is dynamically loaded. Most likely initial determination is incorrect linkage to MQISTUB.
Compare how you are using MQISTUB to how another program uses it.
If you don't get it sorted that way, post the information relating to MQISTUB for us, how it is used, linkage to it, where the linkage is defined, how it is defined, as well as what Gary has already asked. |
|
Back to top |
|
|
Andy85
New User
Joined: 25 Dec 2008 Posts: 35 Location: India
|
|
|
|
Gary,
I know it is having some issue in MQSTUB. I was just saying that when I changed AMODE/RMODE (as per some references), the problem occured in OPEN statement. I think, I confused you guys with my statements.
Going back to the issue, MQSTUB is a standard load-module provided to use through a MQ load library and we are just using the library provided to us. Below is the compile listing of my program:
Code: |
Options in effect:
ADV
APOST
NOAWO
BUFSIZE(32760)
NOCMPR2
NOCOMPILE(S)
DATA(24)
NODBCS
NODECK
NODUMP
DYNAM
NOEXIT
FASTSRT
NOFDUMP
FLAG(W)
NOFLAGMIG
NOFLAGSAA
NOFLAGSTD
LANGUAGE(EN)
LIB
LINECOUNT(59)
NOLIST
MAP
NONAME
NONUMBER
NUMPROC(NOPFD)
OBJECT
OFFSET
OPTIMIZE
OUTDD(SYSOUT)
NORENT
RESIDENT
NOSEQUENCE
SIZE(2097152)
SOURCE
SPACE(1)
NOSSRANGE
NOTERM
NOTEST
TRUNC(STD)
NOVBREF
NOWORD
XREF(FULL)
ZWB
OPEN INPUT INPUT-FILE-FD01.
IF W01-FILE-STATUS NOT = '00'
DISPLAY 'FILE OPEN ERROR:' W01-FILE-STATUS.
DISPLAY 'PARM QUEUE MANAGER = ' WS7-PARM-MQM.
DISPLAY 'PARM QUEUE NAME = ' WS7-PARM-OBJECT.
DISPLAY 'PARM APPLID = ' PARM-APPLID.
** DISPLAY 'PARM COMMIT CTR = ' PARM-COMMIT-CTR.
DISPLAY 'PARM INPUT REC LENGTH = ' PARM-REC-LENGTH.
DISPLAY 'NOW WILL DO MQCONN'.
*-----------------------------------------------------------------
* CONNECT TO THE SPECIFIED QUEUE MANAGER.
*-----------------------------------------------------------------
CALL 'MQCONN' USING WS7-PARM-MQM
MQM-HCONN
MQM-COMPCODE
MQM-REASON.
DISPLAY 'DID MQCONN JUST NOW WITH CODE:' MQM-COMPCODE.
|
|
|
Back to top |
|
|
Bill Woodger
Moderator Emeritus
Joined: 09 Mar 2011 Posts: 7309 Location: Inside the Matrix
|
|
|
|
Andy, the abend is in MQISTUB.
Is your open statement in MQISTUB? No.
Have you changed MQISTUB? No.
So, concentrate on where your program uses MQISTUB and the parameters passed to it.
If not, you're wasting your time, but no more of mine. |
|
Back to top |
|
|
Andy85
New User
Joined: 25 Dec 2008 Posts: 35 Location: India
|
|
|
|
Hi Bill,
MQOPEN is the one having alias as MQISTUB. Below is the member listing of the MQ load library we are using. It shows that all MQ commands are Alias-of MQISTUB. I cannot change MQISTUB, because its a standard module provided to us during MQ installations in our region. Moreover, this is the first time we are doing MQ in our application. Hence, I have not reference though I am checking with some other application owners for a reference. Hope it helps !!! Please let me know if below information gives you any details. Is it something related to AMODE or RMODE?
Code: |
Name Prompt Alias-of Size TTR AC AM RM
____ #OCAOPTS 00000238 00061B 00 31 24
____ MQBACK MQISTUB 000001D8 000028 00 31 ANY
____ MQCLOSE MQISTUB 000001D8 000028 00 31 ANY
____ MQCMIT MQISTUB 000001D8 000028 00 31 ANY
____ MQCONN MQISTUB 000001D8 000028 00 31 ANY
____ MQDISC MQISTUB 000001D8 000028 00 31 ANY
____ MQGET MQISTUB 000001D8 000028 00 31 ANY
____ MQINQ MQISTUB 000001D8 000028 00 31 ANY
____ MQISTUB 000001D8 000028 00 31 ANY
____ MQOPEN MQISTUB 000001D8 000028 00 31 ANY
____ MQPUT MQISTUB 000001D8 000028 00 31 ANY
____ MQPUT1 MQISTUB 000001D8 000028 00 31 ANY
____ MQSET MQISTUB 000001D8 000028 00 31 ANY
|
|
|
Back to top |
|
|
Bill Woodger
Moderator Emeritus
Joined: 09 Mar 2011 Posts: 7309 Location: Inside the Matrix
|
|
|
|
Looking at the library, if you try (or have already tried) 31 and ANY respectively, you will have (have) the answer to the AMODE/RMODE question.
Code: |
OPEN INPUT INPUT-FILE-FD01.
IF W01-FILE-STATUS NOT = '00'
DISPLAY 'FILE OPEN ERROR:' W01-FILE-STATUS.
DISPLAY 'PARM QUEUE MANAGER = ' WS7-PARM-MQM.
DISPLAY 'PARM QUEUE NAME = ' WS7-PARM-OBJECT.
DISPLAY 'PARM APPLID = ' PARM-APPLID.
** DISPLAY 'PARM COMMIT CTR = ' PARM-COMMIT-CTR.
DISPLAY 'PARM INPUT REC LENGTH = ' PARM-REC-LENGTH.
DISPLAY 'NOW WILL DO MQCONN'.
*-----------------------------------------------------------------
* CONNECT TO THE SPECIFIED QUEUE MANAGER.
*-----------------------------------------------------------------
CALL 'MQCONN' USING WS7-PARM-MQM
MQM-HCONN
MQM-COMPCODE
MQM-REASON.
DISPLAY 'DID MQCONN JUST NOW WITH CODE:' MQM-COMPCODE.
|
Your are opening an input file, and continuing if non-zero file status. You don't do a read, but I assume (tell me otherwise) that you don't use anything yet from the file.
What is the source of the MQM- fields? Can you confirm that this is the correct number of parameters? Where do the PARM- fields come from, and what is their relevamce to the code?
Are you concentrating on this code because of your displays, or because you have established it is there from the dump? |
|
Back to top |
|
|
dbzTHEdinosauer
Global Moderator
Joined: 20 Oct 2006 Posts: 6966 Location: porcelain throne
|
|
|
|
don't know how you site is set-up,
but i always push to be any/31. try to have everything above the line,
especially a run unit.
the necessary stuff to invoke to go from 31 to 24 and back,
is a real pain,
you can tell by browsing a load library (or running ABMLIST against the loads)
if you are completely compatable or not.
I saw some 24s:
IGZCPAC 31 24 XXXX
IGZCPCO 31 24 XXXX
you can get libraries with this stuff as 31/31 or 31/any.
until you can get everything above (or below if you must) the line
you will have problems - SOC4 - that's what a oc4 is - you can't properly address something. |
|
Back to top |
|
|
Garry Carroll
Senior Member
Joined: 08 May 2006 Posts: 1193 Location: Dublin, Ireland
|
|
|
|
Your compile code snippet doesn't show where the parameters passed in MQCONN are defined. If any are not addressable you will get an error.
GaRRy. |
|
Back to top |
|
|
Andy85
New User
Joined: 25 Dec 2008 Posts: 35 Location: India
|
|
|
|
I was able to solve the issue. There was a problem with the load module for MQCONN in the library provided to us. Another alternate library was assigned and the issue got fixed.
Thanks guys for all your help on this !!! |
|
Back to top |
|
|
|