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 » General IBM MQ Support » MQRC_Format_Error rc=2110

Post new topic  Reply to topic Goto page 1, 2  Next
 MQRC_Format_Error rc=2110 « View previous topic :: View next topic » 
Author Message
dfailla
PostPosted: Thu Mar 02, 2006 6:45 am    Post subject: MQRC_Format_Error rc=2110 Reply with quote

Newbie

Joined: 02 Mar 2006
Posts: 6
Location: Columbia,SC

Forgive my ignorance on the Server side but I'm an old Mainframe programmer trying to resolve an issue with MQ for Windows V5.3.
We can send a message using Message Grouping(just one message using last_msg_in_group) with mqfmt_string from a Windows server to our Host(Z/OS) and it works fine. Using same message but with mqfmt_none and the message ends up on the Windows DLQ. Error log shows reason code 2110. I viewed previous problem logs similar to this issue posted on this website and IBM's Support site. I saw a PTF was issued for V5.2, but I haven't seen anyone describing this problem using V5.3 for Windows.
I know the Xmit queue reformats MQMD and adds MQMDE, but I don't understand why we are able to send a Message Group(msg seq no = 1 and last_msg_in_group) using mqfmt_string but can't send same message with mqfmt_none?
Will Fix pack 12(csd12) resolve this issue? Any help greatly appreciated since I am lost dealing with Windows/MQ issues.
Back to top
View user's profile Send private message
jefflowrey
PostPosted: Thu Mar 02, 2006 6:48 am    Post subject: Reply with quote

Grand Poobah

Joined: 16 Oct 2002
Posts: 19981

Quote:
2110 (X'083E')
MQRC_FORMAT_ERROR
Explanation:

An MQGET call was issued with the MQGMO_CONVERT option specified in the GetMsgOpts parameter, but the message cannot be converted successfully due to an error associated with the message format. Possible errors include:

* The format name in the message is MQFMT_NONE.
* A user-written exit with the name specified by the Format field in the message cannot be found.
* The message contains data that is not consistent with the format definition.

The message is returned unconverted to the application issuing the MQGET call, the values of the CodedCharSetId and Encoding fields in the MsgDesc parameter are set to those of the message returned, and the call completes with MQCC_WARNING.

If the message consists of several parts, each of which is described by its own CodedCharSetId and Encoding fields (for example, a message with format name MQFMT_DEAD_LETTER_HEADER), some parts may be converted and other parts not converted. However, the values returned in the various CodedCharSetId and Encoding fields always correctly describe the relevant message data.
Completion Code:

MQCC_WARNING
Programmer Response:

Check the format name that was specified when the message was put. If this is not one of the built-in formats, check that a suitable exit with the same name as the format is available for the queue manager to load. Verify that the data in the message corresponds to the format expected by the exit.


Try disabling conversion on the channel.
_________________
I am *not* the model of the modern major general.
Back to top
View user's profile Send private message
dfailla
PostPosted: Thu Mar 02, 2006 7:16 am    Post subject: format error Reply with quote

Newbie

Joined: 02 Mar 2006
Posts: 6
Location: Columbia,SC

We want the Sender Channel to perform the conversion. Some messages(within a single group) will contain text that needs conversion from Ascii to Ebcdic, and other messages contain TIF messages that we do not want converted. The Sender Channel on Windows IS converting successfully the mqfmt_string and we see this message on our Host Queue. When trying to send(just in test mode) the same message but with mqfmt_none the messages arrives on Windows dead letter queue. I would have expected a problem with the mqfmt_string... not the mqfmt_none. The only difference between the two messages is the format parm. Again, we don't want the Host application to perform conversion since we want the built-in function to perform this conversion from the Sender channel.
Back to top
View user's profile Send private message
Nigelg
PostPosted: Thu Mar 02, 2006 7:26 am    Post subject: Reply with quote

Grand Master

Joined: 02 Aug 2004
Posts: 1046

Did you read jeff's reply?

You get 2110 because you have specified CONVERT on the channel and the msg format is MQFMT_NONE. This is published behaviour.
_________________
MQSeries.net helps those who help themselves..
Back to top
View user's profile Send private message
dfailla
PostPosted: Thu Mar 02, 2006 7:31 am    Post subject: Reply with quote

Newbie

Joined: 02 Mar 2006
Posts: 6
Location: Columbia,SC

mqfmt_none will tells the Sender channel's MCA NOT to perform conversion. We are able to send "normal" messages without Message Grouping using mixtures of mqfmt_string and mqfmt_none to the Host. However, when we change mq options to use msg_in_group we are only able to send the mqfmt_string. Must be something to do with transmit queues and how they massage mqmd between vs1 and vs2.
Back to top
View user's profile Send private message
wschutz
PostPosted: Thu Mar 02, 2006 8:44 am    Post subject: Reply with quote

Jedi Knight

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

Quote:
Application data is converted within an application program when you specify the MQGMO_CONVERT option in the Options field of the MQGMO structure passed to an MQGET call, and all the following are true:

The CodedCharSetId or Encoding fields set in the MQMD structure associated with the message on the queue differ from the CodedCharSetId or Encoding fields set in the MQMD structure specified on the MQGET call.
The Format field in the MQMD structure associated with the message is not MQFMT_NONE.
The BufferLength specified on the MQGET call is not zero.
...
I wonder if the problem is really related to grouping the messages versus having a MQ V2 structure (mqmde)....
_________________
-wayne
Back to top
View user's profile Send private message Send e-mail AIM Address
dfailla
PostPosted: Thu Mar 02, 2006 10:31 am    Post subject: Remote queue format error 2110 Reply with quote

Newbie

Joined: 02 Mar 2006
Posts: 6
Location: Columbia,SC

The only thing different between a successful put of a message in group and a bad put is the format option of mqfmt_string vs mqfmt_none. Mqfmt-string DOES work... we know the MCA has MQGMO_convert and successfully puts message to a Z/OS remote queue. The same message in group with mqfmt_none does not make it and ends up on the Windows DLQ.
I did notice something strange about the Format field when viewing the DLQ header. It says the original messages' format was 'MQHMDE'. I believe when a message cannot be put to a remote destination queue the message will be put to the local DLQ with the original messages' CCSID, Encoding and Format. I do see the CCSID with 437 and Encoding as 546... so I know these settings were correct when MCA tried to send message from Windows to Z/OS. However, IF the original program that put the message to a remote queue definition used mqfmt_none... then I should see this on the DLQ header right?
Back to top
View user's profile Send private message
wschutz
PostPosted: Thu Mar 02, 2006 10:41 am    Post subject: Reply with quote

Jedi Knight

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

'MQHMDE' would be the correct format for a MQMD V2 message that uses the fields in the V2 portion of the MD (and the group info is an example of using that field).
What actually happens is that for messages with a V2 MQMD (and uses the V2 fields in the header), MQ actually puts the V2 portion of the MQMD in the application payload area of the message and sets the format to MQHMDE. It then puts the original "Format" in the MQMD V2 extension structure (which is in the payload area). You should see this structure in the DLQ message (after the DLQ header, I think) with an eyecatcher of "MDE". The MQMDE structure maps this extension, so you should see your MQFMT_NONE (blanks) in the Format field of the MQMDE structure...

Normally, you don't see this because MQ merges the MQMDE structure into the MQMD structure on the MQGET....

hope this makes sense....
_________________
-wayne
Back to top
View user's profile Send private message Send e-mail AIM Address
Nigelg
PostPosted: Thu Mar 02, 2006 1:14 pm    Post subject: Reply with quote

Grand Master

Joined: 02 Aug 2004
Posts: 1046

Quote:
mqfmt_none will tells the Sender channel's MCA NOT to perform conversion


Wrong. MQFMT_NONE and MQGMO_CONVERT = rc 2110.

In Wayne's answer above, some of the V2's have to be V1's.

If a get with a V1 MD is done on a msg with non-default MD V2 fields, the V1 MD is returned and tve V2 fields are put in the MD extension header MQMDE. The Format in the MD is then set to MQHMDE, and the original format from the MD is put in the Format field of the MDE.

None of that, or msg groups, has anything to do with the format error.
_________________
MQSeries.net helps those who help themselves..
Back to top
View user's profile Send private message
wschutz
PostPosted: Thu Mar 02, 2006 3:40 pm    Post subject: Reply with quote

Jedi Knight

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

Quote:
Wrong. MQFMT_NONE and MQGMO_CONVERT = rc 2110.
almost right ... the CCSID or Encoding need to be different (between the MD in the msg and the MD spec'd on the GET) to get 2110, if they are the same, the GMO_CONVERT on MFMT_NONE gives rc-0.

dfailla ... I'm wondering how you can get MQFMT_NONE to work ok for the non-group messages, is there a chance that the ccsid and encoding match that of the m/f already in that case?
_________________
-wayne
Back to top
View user's profile Send private message Send e-mail AIM Address
Nigelg
PostPosted: Thu Mar 02, 2006 11:48 pm    Post subject: Reply with quote

Grand Master

Joined: 02 Aug 2004
Posts: 1046

good extra condition wayne, thanks.
I did mean of course that if conversion is going to be done at all then the error will occur, but I did not say so explicitly.
_________________
MQSeries.net helps those who help themselves..
Back to top
View user's profile Send private message
dfailla
PostPosted: Fri Mar 03, 2006 7:39 am    Post subject: mq rc=2110 Reply with quote

Newbie

Joined: 02 Mar 2006
Posts: 6
Location: Columbia,SC

We send a character message(that needs ascii to ebcdic conversion) followed by one or more TIF files(that should not be converted). The messages multi-hop from a Windows NT server/scanner to a central Windows NT server(via Remote queue defs) that has a channel defined to the host. This works fine today in Prod. They do NOT use message Grouping.

For a test only... I sent a character message and TIF message with mqfmt_string and mqfmt_none to the Host queue. Character message converted fine and TIF message arrived unconverted. When I take same two messages and use mqpmo.logical_order and mqmd_last_msg_in_group... only the character message arrives. I know IBM had a problem with rc=2110 on xmit queues on messages with Grouping because there is a PTF out there for Windows V5.2. Problem I'm having is why won't V5.3 work? We installed Windows Fix Pack12 so I hope this fixes problem.

GMO.convert being performed by the MCA shouldn't care if mqfmt_none is specified since I can send messages needing conversion and messages that don't on the same sending channel. It's up to the application to decide which messages they want the sending channel to convert before delivering to Host receiving MCA. Convert=yes merely tells the channel to look for messages to convert(if applicable). Since the message hopped from one Windows server to another first... no conversion was necessary. When the sender channel initiated conversation with the Host receiver channel... the CCSID was different so it recognized conversion was necessary(only if mqmd format had a built-in function to tell it to convert or a user defined function and exit were present). Mqfmt_none says do not convert... even if channel has convert=yes
Back to top
View user's profile Send private message
jefflowrey
PostPosted: Fri Mar 03, 2006 7:48 am    Post subject: Re: mq rc=2110 Reply with quote

Grand Poobah

Joined: 16 Oct 2002
Posts: 19981

dfailla wrote:
Mqfmt_none says do not convert... even if channel has convert=yes


NO.

To recap what has already been said in this thread:

MQFMT_NONE says that a message does not have a defined format.

Any application that specifies MQGMO.CONVERT and attempts to GET a message that both specifies MQFMT_NONE and has a different CCSID than the application will always receive a 2110 error code.

The receiver MCA on the host is just another MQ application, and so it will always receive the 2110 error code. The receiver MCA therefore can't properly receive the message, and will indicate this to the sender MCA. This will cause the sender MCA to put the message to the local DLQ.

This is all documented behavior.

Channel level conversion in general is a bad idea (particularly in multi-hop environments!) - and this is one reason why. Since you must be changing your host applications to receive message groups, you should also change them to specify the MQGMO.CONVERT on their GET, and disable channel conversion. Then your applications can choose to ignore the 2110 and handle the data anyway.
_________________
I am *not* the model of the modern major general.
Back to top
View user's profile Send private message
PeterPotkay
PostPosted: Fri Mar 03, 2006 11:06 am    Post subject: Re: mq rc=2110 Reply with quote

Poobah

Joined: 15 May 2001
Posts: 7722

jefflowrey wrote:
dfailla wrote:
Mqfmt_none says do not convert... even if channel has convert=yes


NO.

To recap what has already been said in this thread:

MQFMT_NONE says that a message does not have a defined format.

Any application that specifies MQGMO.CONVERT and attempts to GET a message that both specifies MQFMT_NONE and has a different CCSID than the application will always receive a 2110 error code.

Correct.

dfailla, if you look in the Application Programming Guide, Appendix F: Data Conversion, you will find the following quote
Quote:

If the Format field in the control information in the message has the value MQFMT_NONE, the message is returned unconverted, with completion code MQCC_WARNING and reason code MQRC_FORMAT_ERROR.
In all other cases conversion processing continues.


We relied on this behaviour for a Windows app that would have received messsages from either the mainframe or PDF files from a Windows server. It always coded MQGMO_CONVERT. If it was a MF message, conversion happened. If the GET failed with 2110, they did a quick check to see if it was a PDF file, and then ignored the error if it was and went down the PDF path of the program.[/quote]
_________________
Peter Potkay
Keep Calm and MQ On
Back to top
View user's profile Send private message
dfailla
PostPosted: Sat Mar 04, 2006 8:02 am    Post subject: rc 2110 Reply with quote

Newbie

Joined: 02 Mar 2006
Posts: 6
Location: Columbia,SC

Thanks Peter,
however our "getting" application is just the Sender Channel MCA between the Xmit queue and the destination queue's receiver channel.

When message hops from 1st Windows NT server to 2nd Windows NT server; the 2nd Windows NT queue is just a remote definition/xmit queue that is trying to send message to the Z/OS Qmgr(there is no application running on the 2nd box).

1st message hops from 1st NT to 2nd NT to Z/OS(mqfmt-string)
2nd message hops from 1st NT to 2nd NT to Z/OS(mqfmt-none) <<< this message arrives fine(it's a TIF record from an image scanner that should not be converted by any QMgr).

3rd message hops from 1st NT to 2nd NT to Z/OS(last_msg_in_group, mqfmt-string) <<< this works with Message Grouping
4th message hops from 1st NT to 2nd NT to 2nd NT DLQ.(last_msg_in_group,mqfmt-none) <<< this message arrives on DLQ with 2110.

The 2nd and 4th message are the same except we used Message Grouping on the 4th message. If the MCA handled mqfmt_none on 2nd message... it should work with 4th message. It does not... and I believe it's related to V2 fields now being used/creating MQMDE and Transmit queue /MCA not handling the warning(rc 2110) correctly.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic  Reply to topic Goto page 1, 2  Next Page 1 of 2

MQSeries.net Forum Index » General IBM MQ Support » MQRC_Format_Error rc=2110
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.