ASG
IBM
Zystems
Cressida
Icon
Netflexity
 
  MQSeries.net
Search  Search       Tech Exchange      Education      Certifications      Library      Info Center      SupportPacs      LinkedIn  Search  Search                                                                   FAQ  FAQ   Usergroups  Usergroups
 
Register  ::  Log in Log in to check your private messages
 
RSS Feed - WebSphere MQ Support RSS Feed - Message Broker Support

MQSeries.net Forum Index » Mainframe, CICS, TXSeries » MQ 2173 Error Code

Post new topic  Reply to topic
 MQ 2173 Error Code « View previous topic :: View next topic » 
Author Message
Mainframe Dude
PostPosted: Fri Oct 20, 2006 10:01 am    Post subject: MQ 2173 Error Code Reply with quote

Newbie

Joined: 20 Oct 2006
Posts: 6

While changing a Cobol batch program from using an MQPUT1 to using an MQPUT (with MQOPEN before and MQCLOSE after processing is complete), I'm receiving a 2173 reason code, completion code 2, whenever I attempt the MQPUT. I changed the parameter listing accordingly. Connect is from MQCONN and Object is from the MQOPEN. Any ideas? The MQPUT1 works great but is not as efficient when writing multiple records to the queue. Thanks

MOVE MQMI-NONE
TO MQMD-MSGID OF PUT-MESSAGE-DESCRIPTOR.
MOVE MQPER-PERSISTENT
TO MQMD-PERSISTENCE OF PUT-MESSAGE-DESCRIPTOR.
MOVE MQFMT-STRING
TO MQMD-FORMAT OF PUT-MESSAGE-DESCRIPTOR.

ADD MQPMO-NO-SYNCPOINT MQPMO-FAIL-IF-QUIESCING
GIVING MQPMO-OPTIONS.

MOVE LENGTH OF WMSULOGE-RECORD TO WS-BUFFER-LENGTH.

CALL 'MQPUT' USING
WS-HANDLE-CONNECT,
WS-HANDLE-OBJECT,
PUT-MESSAGE-DESCRIPTOR,
MQM-PMOPTIONS,
WS-BUFFER-LENGTH,
WMSULOGE-RECORD,
WS-COMP-CODE,
WS-REASON
END-CALL
Back to top
View user's profile Send private message
kevinf2349
PostPosted: Fri Oct 20, 2006 10:17 am    Post subject: Reply with quote

Grand Master

Joined: 28 Feb 2003
Posts: 1311
Location: USA

Quote:

PUT-MESSAGE-DESCRIPTOR,
MQM-PMOPTIONS,


Shouldn't that be

Code:
PUT-MESSAGE-DESCRIPTOR,
MQPMO-OPTIONS,
Back to top
View user's profile Send private message
Mainframe Dude
PostPosted: Fri Oct 20, 2006 11:28 am    Post subject: Thanks, But Same Error Reply with quote

Newbie

Joined: 20 Oct 2006
Posts: 6

I tried your suggestion, but I received the same error. When setting up queues do you know if different security can be defined for MQPUT1 versus MQPUT. My guys say no, but there has to be something environmental that's causing this error.

CALL 'MQCONN' USING
WS-QMGR,
WS-HANDLE-CONNECT,
WS-COMP-CODE,
WS-REASON
END-CALL

CALL 'MQOPEN' USING
WS-HANDLE-CONNECT,
PUT-OBJECT-DESCRIPTOR,
MQM-PMOPTIONS,
WS-HANDLE-OBJECT,
WS-COMP-CODE,
WS-REASON
END-CALL

CALL 'MQPUT' USING
WS-HANDLE-CONNECT,
WS-HANDLE-OBJECT,
PUT-MESSAGE-DESCRIPTOR,
MQPMO-OPTIONS,
WS-BUFFER-LENGTH,
WMSULOGE-RECORD,
WS-COMP-CODE,
WS-REASON
END-CALL

Here's some displays from the program, with the error message:

MQ CONNECT SUCCESSFUL
QUEUE SUCCESSFULLY OPENED

*** MQ ERROR ENCOUNTERED ***

PARAGRAPH..: 2530-
TASK.......: MQPUT
COMPCODE...: 000000002
REASON.....: 000002173
QUEUE NAME.: QMWM.MQ.WMSULOGE.WHSE0530
Back to top
View user's profile Send private message
wschutz
PostPosted: Fri Oct 20, 2006 11:53 am    Post subject: Reply with quote

Jedi Knight

Joined: 02 Jun 2005
Posts: 3316
Location: IBM (retired)

How is MQPMO-OPTIONS, declared? Is it properly initialized?
Code:
   * Put message options
       01 PMOPTIONS.
          COPY CMQPMOV.


actually .... the PMO parm on the MQPUT has to be the 01 structure, doesn't it?
_________________
-wayne
Back to top
View user's profile Send private message Send e-mail AIM Address
Mainframe Dude
PostPosted: Fri Oct 20, 2006 12:02 pm    Post subject: MQPMO-OPTIONS Definition: Reply with quote

Newbie

Joined: 20 Oct 2006
Posts: 6

In Working-Storage it's defined as follows, an elementary item under MQM-PMOPTIONS:

01 MQM-PMOPTIONS.
** MQPMO structure
10 MQPMO.
** Structure identifier
15 MQPMO-STRUCID PIC X(4) VALUE 'PMO '.
** Structure version number
15 MQPMO-VERSION PIC S9(9) BINARY VALUE 1.
** Options
15 MQPMO-OPTIONS PIC S9(9) BINARY VALUE 0.
** Reserved
15 MQPMO-TIMEOUT PIC S9(9) BINARY VALUE -1.
** Object handle of input queue
15 MQPMO-CONTEXT PIC S9(9) BINARY VALUE 0.
** Reserved
15 MQPMO-KNOWNDESTCOUNT PIC S9(9) BINARY VALUE 0.
** Reserved
15 MQPMO-UNKNOWNDESTCOUNT PIC S9(9) BINARY VALUE 0.
** Reserved
15 MQPMO-INVALIDDESTCOUNT PIC S9(9) BINARY VALUE 0.
** Resolved name of destination queue
15 MQPMO-RESOLVEDQNAME PIC X(4 VALUE SPACES.
** Resolved name of destination queue manager
15 MQPMO-RESOLVEDQMGRNAME PIC X(4 VALUE SPACES.
Back to top
View user's profile Send private message
wschutz
PostPosted: Fri Oct 20, 2006 12:12 pm    Post subject: Reply with quote

Jedi Knight

Joined: 02 Jun 2005
Posts: 3316
Location: IBM (retired)

Code:
CALL 'MQPUT' USING
WS-HANDLE-CONNECT,
WS-HANDLE-OBJECT,
PUT-MESSAGE-DESCRIPTOR,
MQM-PMOPTIONS,  <-------------------------
WS-BUFFER-LENGTH,
WMSULOGE-RECORD,
WS-COMP-CODE,
WS-REASON
END-CALL

_________________
-wayne
Back to top
View user's profile Send private message Send e-mail AIM Address
Mainframe Dude
PostPosted: Fri Oct 20, 2006 12:25 pm    Post subject: We've Gone Full Circle Now Reply with quote

Newbie

Joined: 20 Oct 2006
Posts: 6

If you look at my initial post that's the field I used originally.

CALL 'MQPUT' USING
WS-HANDLE-CONNECT,
WS-HANDLE-OBJECT,
PUT-MESSAGE-DESCRIPTOR,
MQM-PMOPTIONS,
WS-BUFFER-LENGTH,
WMSULOGE-RECORD,
WS-COMP-CODE,
WS-REASON
END-CALL

Thanks.
Back to top
View user's profile Send private message
kevinf2349
PostPosted: Fri Oct 20, 2006 12:36 pm    Post subject: Reply with quote

Grand Master

Joined: 28 Feb 2003
Posts: 1311
Location: USA

Huh?

You wrote:

Quote:
CALL 'MQOPEN' USING
WS-HANDLE-CONNECT,
PUT-OBJECT-DESCRIPTOR,
MQM-PMOPTIONS, <=========
WS-HANDLE-OBJECT,
WS-COMP-CODE,
WS-REASON
END-CALL


then

Quote:
CALL 'MQPUT' USING
WS-HANDLE-CONNECT,
WS-HANDLE-OBJECT,
PUT-MESSAGE-DESCRIPTOR,
MQM-PMOPTIONS, <====== same option field for OPEN and PUT?
WS-BUFFER-LENGTH,
WMSULOGE-RECORD,
WS-COMP-CODE,
WS-REASON
END-CALL


Try

Code:
01 MQM-PMOPTIONS.
        COPY CMQODV. 

then....

ADD MQPMO-NO-SYNCPOINT MQPMO-FAIL-IF-QUIESCING
GIVING MQM-PMOPTIONS.

Then....

CALL 'MQPUT' USING
WS-HANDLE-CONNECT,
WS-HANDLE-OBJECT,
PUT-MESSAGE-DESCRIPTOR,
MQM-PMOPTIONS,
WS-BUFFER-LENGTH,
WMSULOGE-RECORD,
WS-COMP-CODE,
WS-REASON
END-CALL



If that fails I suggest you post the full code. It isn't environmental. If you can use MQPUT1 you should be able to use MQOPEN, MQPUT and MQCLOSE.
Back to top
View user's profile Send private message
wschutz
PostPosted: Fri Oct 20, 2006 12:49 pm    Post subject: Reply with quote

Jedi Knight

Joined: 02 Jun 2005
Posts: 3316
Location: IBM (retired)

Kevin, I don't think thats correct... the MQPUT needs the PMO structure .... it should be a different label then the result of the ADD statement, no?

and the MQOPEN doesn't get ANY PMO references, at all....
_________________
-wayne
Back to top
View user's profile Send private message Send e-mail AIM Address
Mainframe Dude
PostPosted: Fri Oct 20, 2006 12:54 pm    Post subject: Compilation Error Reply with quote

Newbie

Joined: 20 Oct 2006
Posts: 6

I gave it a shot, received a compilation error:

002404 ADD MQPMO-NO-SYNCPOINT MQPMO-FAIL-IF-QUIESCING
002405 GIVING MQM-PMOPTIONS.


2404 IGYPA3146-S Receiving operand "MQM-PMOPTIONS (GROUP)" of an arithmetic statement was neither numeric nor numeric-edited.
The statement was discarded.


I appreciate your help. I have many examples of programs in production that are using the MQOPEN, MQPUT, and MQCLOSE, so duplicating that code was very easy, that's why I thought it may have something to do with how the queues are set up.
Back to top
View user's profile Send private message
Mr Butcher
PostPosted: Sat Oct 21, 2006 11:29 pm    Post subject: Reply with quote

Padawan

Joined: 23 May 2005
Posts: 1716

you mix the 01 structure MQM-PMOPTIONS with the field name MQPMO-OPTIONS . you cant compute to the 01 level structure name, use the option field name istead. the mqput call indeed needs the stucture name, but you must fill the fields within the structure.
_________________
Regards, Butcher
Back to top
View user's profile Send private message
Mainframe Dude
PostPosted: Mon Oct 23, 2006 7:05 am    Post subject: Thanks Reply with quote

Newbie

Joined: 20 Oct 2006
Posts: 6

Thanks for all your input. It looks like my original code matches up with what everyone says it should look like. That's what's so frustrating about this issue. I have many examples of programs, working in production, that use this simple construct. I cannot explain why the MQPUT1 works fine but when I add the open, put, and close it dies on the put. I thought perhaps the way the queue is set up had something to do with it, or security for a PUT versus PUT1 being the reason, but everyone has said if the PUT1 works the PUT should also. I'm going to try to work w/ IBM on this thru our Tech guys. I'll post the resolution IF I get one. Thanks again.
Back to top
View user's profile Send private message
jefflowrey
PostPosted: Mon Oct 23, 2006 7:17 am    Post subject: Reply with quote

Grand Poobah

Joined: 16 Oct 2002
Posts: 19981

Repost your current code.
_________________
I am *not* the model of the modern major general.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic  Reply to topic Page 1 of 1

MQSeries.net Forum Index » Mainframe, CICS, TXSeries » MQ 2173 Error Code
Jump to:  



You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
Protected by Anti-Spam ACP
 
 


Theme by Dustin Baccetti
Powered by phpBB © 2001, 2002 phpBB Group

Copyright © MQSeries.net. All rights reserved.