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 » WebSphere Message Broker (ACE) Support » Queue Manager CCSID V OS CCSID

Post new topic  Reply to topic
 Queue Manager CCSID V OS CCSID « View previous topic :: View next topic » 
Author Message
nathanw
PostPosted: Wed Oct 10, 2012 2:14 am    Post subject: Queue Manager CCSID V OS CCSID Reply with quote

Knight

Joined: 14 Jul 2004
Posts: 550

OK chaps thinking caps on

OS = AIX
MQ = 7.0.1.8
MB = 8.0.0.0

QM CCSID set to 819 (default on creation)

We have a complex set of flows that format and route data.

In the end we are writing to an output queue via a destination list

Issue Part 1

We have special characters eg Euro in the incoming message.

On the output we have character issue problems as the 819 does not support Euro character.

So in order to handle this we are trying to set the message CCSID to 1208.

So question is

If in esql we set the CCSID of the MQMD to 1208 would

a) the euro symbol be parsed correctly
b) the message stay as 1208 in the QM so the target application reads it correctly or will QM CCSID overwrite

I suspect I know the answer but I would like confirmation

Issue Part 2

As part of the solution / work around to the above we have added the esql code below

Code:
SET OutputRoot.MQMD.CodedCharSetId = 1208;


We then pass the message to a Destination List to write to a queue

We then get a 2142 error

Code:
2142  0x0000085e  MQRC_HEADER_ERROR


Code:
2012-10-10 09:59:36.104952     6949   MessageException  BIP2667E: An error occurred in node 'Node Name' writing message to queue ''Queue Name'' on queue manager ''''. State = '-1' ''MQW102'' '2142' ''''
                                       An error occurred when a message flow node attempted to write a message to a queue. The reason code from the MQPUT is displayed as the 3rd (native error) state.
                                       Check the WebSphere MQ completion and reason codes in the WebSphere MQ Application Programming Reference manual to establish the cause of the error, taking any appropriate action.  It may be necessary to restart the message broker after you have performed this recovery action.


Is this because of a CCSID conflict do you think?

Any thoughts, ideas, postulations gratefully accepted......
_________________
Who is General Failure and why is he reading my hard drive?

Artificial Intelligence stands no chance against Natural Stupidity.

Only the User Trace Speaks The Truth
Back to top
View user's profile Send private message MSN Messenger
mqjeff
PostPosted: Wed Oct 10, 2012 2:23 am    Post subject: Reply with quote

Grand Master

Joined: 25 Jun 2008
Posts: 17447

If you don't set the ccsid at all, does the message come out in 819?

Does it work if you use 1200 or 1202 instead of 1208?
Back to top
View user's profile Send private message
zpat
PostPosted: Wed Oct 10, 2012 3:00 am    Post subject: Reply with quote

Jedi Council

Joined: 19 May 2001
Posts: 5866
Location: UK

You can use the constant value MQCCSI_UNICODE_1208

But that doesn't explain the MQRC 2142.

Did you copy the MQMD from the input message to the output message (before overriding the CCSID)?

What CCSID was the input message using?
Back to top
View user's profile Send private message
smdavies99
PostPosted: Wed Oct 10, 2012 3:19 am    Post subject: Re: Queue Manager CCSID V OS CCSID Reply with quote

Jedi Council

Joined: 10 Feb 2003
Posts: 6076
Location: Somewhere over the Rainbow this side of Never-never land.

nathanw wrote:


We have special characters eg Euro in the incoming message.


This says a good deal about your problem

Some points to Consider

1) The QMGR CCSID matters little except when creating messages without a specific CCSID set.
2) What CCSID was the input message sent with? That is the key. If tht CCSID does not support the Euro Symbol then you are at the moment fiddling while <insert least popular place> burns to the ground.

You need to get the input message to be send in a CCSID that supports the Euro Symbol. 1208 does it nicely but if that isn't possible then 923 does just as well.

817 == ISO-8859-1
923 == ISO-8859-15 {Western European Latin with Euro Support}

Now if the Input message was created on the same QMGR that Broker is running on then you have two options.
1) Change the QMGR CCSID to something a little more friendly but beware this could break other things in ways you didn't expect.
2) Get the creator application to NOT use default QMCR CCSID when creating the message in the first place.

Good luck with that. Many devs go 'Eh? Wtf? Whats a CCSID? etc etc' when asked 'What CCSID did you use when you send the message?'

I am sure that kimbert will be along soon with some more words of wisdom.
_________________
WMQ User since 1999
MQSI/WBI/WMB/'Thingy' User since 2002
Linux user since 1995

Every time you reinvent the wheel the more square it gets (anon). If in doubt think and investigate before you ask silly questions.
Back to top
View user's profile Send private message
mqjeff
PostPosted: Wed Oct 10, 2012 3:32 am    Post subject: Re: Queue Manager CCSID V OS CCSID Reply with quote

Grand Master

Joined: 25 Jun 2008
Posts: 17447

smdavies99 wrote:
Some points to Consider

1) The QMGR CCSID matters little except when creating messages without a specific CCSID set.
2) What CCSID was the input message sent with? That is the key. If tht CCSID does not support the Euro Symbol then you are at the moment fiddling while <insert least popular place> burns to the ground.

Except that, since this is *broker*, the message data has already been converted to 1200 or 1202 by the time it gets into the logical message tree.

And CCSID problems with the contents of the message shouldn't cause an MQRC 2142. Produce mangled data or cause the tree to fail to serialize, sure, but not a 2142.

smdavies99 wrote:
I am sure that kimbert will be along soon with some more words of wisdom.

Back to top
View user's profile Send private message
nathanw
PostPosted: Wed Oct 10, 2012 3:54 am    Post subject: Reply with quote

Knight

Joined: 14 Jul 2004
Posts: 550

mqjeff wrote:
If you don't set the ccsid at all, does the message come out in 819?

Does it work if you use 1200 or 1202 instead of 1208?


Jeff Yes it does BUT the Euro symbol is garbled as it is not supported in 819

zpat wrote:
You can use the constant value MQCCSI_UNICODE_1208

But that doesn't explain the MQRC 2142.

Did you copy the MQMD from the input message to the output message (before overriding the CCSID)?

What CCSID was the input message using?


Yes the message headers are copied across and then the CCSID reset.

------

Part of the issue here is I am coming into this issue cold and after alot has happened on it so I am playing catch up

Part of the solution uses Pub/Sub which as we know after 6.1 was moved into MQ instead of Broker so the QM CCSID comes into play alot more.

I am digging around alot and finding info out but I wil come back to you all as and when I can

smdavies yes I know what you mean about CCSID and developers.

We are looking at changing the CCSID of the QM at the moment and will be carrying out some tests in a safe environment shortly
_________________
Who is General Failure and why is he reading my hard drive?

Artificial Intelligence stands no chance against Natural Stupidity.

Only the User Trace Speaks The Truth
Back to top
View user's profile Send private message MSN Messenger
mqjeff
PostPosted: Wed Oct 10, 2012 4:32 am    Post subject: Reply with quote

Grand Master

Joined: 25 Jun 2008
Posts: 17447

nathanw wrote:
mqjeff wrote:
If you don't set the ccsid at all, does the message come out in 819?

Does it work if you use 1200 or 1202 instead of 1208?


Jeff Yes it does BUT the Euro symbol is garbled as it is not supported in 819


So if you don't set the CCSID, then the message comes out as 819, and mangled. (this is expected behavior)

If you set the CCSID to 1200 or 1202, what happens?
Back to top
View user's profile Send private message
NealM
PostPosted: Wed Oct 10, 2012 7:21 pm    Post subject: Reply with quote

Master

Joined: 22 Feb 2011
Posts: 230
Location: NC or Utah (depends)

Code:
      SET OutputRoot.Properties.CodedCharSetId=1208;
      SET OutputRoot.Properties.Encoding=546;
.
.
.
      SET OutputRoot.MQMD.Encoding = 546;
      SET OutputRoot.MQMD.CodedCharSetId = 1208;



Also, Message Context = Set All might be a good idea.
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 » WebSphere Message Broker (ACE) Support » Queue Manager CCSID V OS CCSID
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.