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

Program aborting with S0C4 in MQCONN


IBM Mainframe Forums -> Java & MQSeries
Post new topic   Reply to topic
View previous topic :: View next topic  
Author Message
Andy85

New User


Joined: 25 Dec 2008
Posts: 35
Location: India

PostPosted: Tue Jul 26, 2011 12:00 pm
Reply with quote

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
View user's profile Send private message
Garry Carroll

Senior Member


Joined: 08 May 2006
Posts: 1193
Location: Dublin, Ireland

PostPosted: Tue Jul 26, 2011 12:42 pm
Reply with quote

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
View user's profile Send private message
Bill Woodger

Moderator Emeritus


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

PostPosted: Tue Jul 26, 2011 2:22 pm
Reply with quote

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
View user's profile Send private message
Andy85

New User


Joined: 25 Dec 2008
Posts: 35
Location: India

PostPosted: Tue Jul 26, 2011 9:47 pm
Reply with quote

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
View user's profile Send private message
Bill Woodger

Moderator Emeritus


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

PostPosted: Tue Jul 26, 2011 10:09 pm
Reply with quote

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
View user's profile Send private message
Andy85

New User


Joined: 25 Dec 2008
Posts: 35
Location: India

PostPosted: Tue Jul 26, 2011 11:11 pm
Reply with quote

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
View user's profile Send private message
Bill Woodger

Moderator Emeritus


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

PostPosted: Tue Jul 26, 2011 11:32 pm
Reply with quote

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
View user's profile Send private message
dbzTHEdinosauer

Global Moderator


Joined: 20 Oct 2006
Posts: 6966
Location: porcelain throne

PostPosted: Wed Jul 27, 2011 12:44 am
Reply with quote

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
View user's profile Send private message
Garry Carroll

Senior Member


Joined: 08 May 2006
Posts: 1193
Location: Dublin, Ireland

PostPosted: Wed Jul 27, 2011 11:37 am
Reply with quote

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
View user's profile Send private message
Andy85

New User


Joined: 25 Dec 2008
Posts: 35
Location: India

PostPosted: Wed Jul 27, 2011 7:30 pm
Reply with quote

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. icon_biggrin.gif

Thanks guys for all your help on this !!! icon_smile.gif
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 -> Java & MQSeries

 


Similar Topics
Topic Forum Replies
No new posts Using API Gateway from CICS program CICS 0
No new posts DB2 Event passed to the Application P... DB2 1
No new posts How to pass the PARM value to my targ... COBOL Programming 8
No new posts REXX code to expand copybook in a cob... CLIST & REXX 2
No new posts EZT program to build a flat file with... All Other Mainframe Topics 9
Search our Forums:

Back to Top