0

i got this problem:

i got a message flow developed in WMB7 fix 6, for integrated with CICS. My CICS CCSID is 037. The broker is running in a z/Linux with locale = en_US.UTF-8 and locale charmap = UTF-8. The MQSeries is in 1208. I got problems with special characters like (ñ,Ñ, á etc etc)

In my message flow i got this code:

    DECLARE CICSRespMsg BLOB;
    DECLARE CICSRespChar CHARACTER;
    DECLARE MsgOut BLOB;
    DECLARE MsgOutChar CHARACTER;

    --EBCDIC TO ASCII
    SET CICSRespMsg = InputRoot.BLOB.BLOB;
    SET CICSRespChar = CAST(CICSRespMsg AS CHARACTER CCSID 037);
    SET MsgOut = CAST(CICSRespChar AS BLOB CCSID 850);
    SET MsgOutChar = CAST(MsgOut AS CHARACTER CCSID 850);

I tried changing from 850 to 819 and i got the same issue. Hope you can help me. Thanks so much!. ;(

1 Answers1

0

So I'm not allowed to ask for clarification in my "answer", so I'll show you how to debug your problem as I can't provide you with an exact solution with the information provided.

You've shown a snippet of ESQL which is converting from ibm-037 to ibm-850 via Unicode. As ibm-850 doesn't support ñ I would expect the conversion to fail. However ibm-819, a.k.a latin-1, a.k.a iso-8859-1 does support the character and the conversion of ñ should succeed.

I don't know what you're doing after the compute node, so look at your input and output nodes, and look at the CCSID in the Properties folder. You say the MQSeries is in 1208 which I assume you mean the queue managers default CCSID is set to 1208. If this is being used on the output node then you'll have a problem as utf-8 (ibm-1208) is incompatible with latin-1 for these characters.

Place a trace node after your input node and trace to a file with ${Root} as the trace expression, place another trace node before your output node tracing the same to a different file. Look at the bytes:
ñ in 037 is 0x49
ñ in 819 is 0xf1
ñ in 1208 is 0xc3b1
if you see 0x1a it's been replaced with a substitution character.

If you want the output to be UTF-8 ensure that you use 1208 instead of 850/819 above and make sure that OutputRoot.Properties.CodedCharSetId is set to 1208.

If you want the output to be in latin-1, use 819 above and ensure that OutputRoot.Properties.CodedCharSetId is set to 819.

Hope this helps, Andreas

  • thanks so much for your answer!!! this is driving me crazy LoL...'cause all messages that broker leave in the response queue from cics are consume by a DataPower XI52, and the MQ Manager Object who reads from the response queue if i dont set that convert everything to 850 the special characters dont work :( if you want i can send you my entire esql code. – user3931496 Aug 19 '14 at 05:34