Author |
Message
|
mq_developer |
Posted: Thu Aug 01, 2002 6:36 pm Post subject: Codepage Conversion is not happening .... ! |
|
|
Voyager
Joined: 18 Feb 2002 Posts: 82
|
Board,
Here is the requirement , i have to convert the input stream of BLOB from codepage ASCII to EBCIDIC using MQSI.
In the compute node , i specified following and it looks like MQSI is ignoring the values set to CCSID & Encoding of Properites parser .
SET InputRoot = OutputRoot;
SET OutputRoot.Properties.CodedCharSetId = 500;
SET OutputRoot.Properties.Encoding = 785;
SET OutputRoot.MQMD.CodedCharSetId = 500;
SET OutputRoot.MQMD.Encoding = 785;
Why the conversion is not happening , is it because of the BLOB domain , if so how to handle this situtation . Please provied your thoughts.
-- Mq developer --- |
|
Back to top |
|
 |
kirani |
Posted: Thu Aug 01, 2002 7:20 pm Post subject: |
|
|
Jedi Knight
Joined: 05 Sep 2001 Posts: 3779 Location: Torrance, CA, USA
|
Data Conversion for BLOB message should work just fine. I see that you are trying to assign OutputRoot to InputRoot. Your code should look like this:
Code: |
SET OutputRoot = InputRoot;
SET OutputRoot.Properties.CodedCharSetId = 500;
SET OutputRoot.Properties.Encoding = 785;
|
How are you verifying your results? _________________ Kiran
IBM Cert. Solution Designer & System Administrator - WBIMB V5
IBM Cert. Solutions Expert - WMQI
IBM Cert. Specialist - WMQI, MQSeries
IBM Cert. Developer - MQSeries
|
|
Back to top |
|
 |
Miriam Kaestner |
Posted: Fri Aug 02, 2002 1:30 am Post subject: |
|
|
Centurion
Joined: 26 Jun 2001 Posts: 103 Location: IBM IT Education Services, Germany
|
IMHO, data conversion for BLOB without further specification of a format could not work. The parser must know which bytes to treat as CHAR, INT, etc.
So you should either specify an MRM domain, or XML, or at least BLOB with MQMD.Format='MQSTR ' (I haven't tested that latter). |
|
Back to top |
|
 |
sgopal |
Posted: Fri Aug 02, 2002 7:30 am Post subject: |
|
|
Acolyte
Joined: 30 Jul 2002 Posts: 63
|
yes.
BLOB with MQMD.Format='MQSTR ' works just fine |
|
Back to top |
|
 |
Miriam Kaestner |
Posted: Fri Aug 02, 2002 12:16 pm Post subject: |
|
|
Centurion
Joined: 26 Jun 2001 Posts: 103 Location: IBM IT Education Services, Germany
|
I am not sure if this may be the problem here (with BLOB and MQSTR), but I experienced that late parsing (WMQI 2.1) also affects data conversion. That is, data is only converted if it got parsed. The ESQL you wrote would not force the broker to parse. Check the "Validate" box in MQInput/Advanced to force parsing of the entire message body. |
|
Back to top |
|
 |
mq_developer |
Posted: Fri Aug 02, 2002 12:18 pm Post subject: |
|
|
Voyager
Joined: 18 Feb 2002 Posts: 82
|
All ,
But isn't working for me , here is how my message flow look
MQInput --> Trace1 --> Compute1 --> Trace2 --> MQOutput1
MQInput - Parser is BLOB
Compute1 Node - ESQL
SET OutputRoot = InputRoot;
-- Enter SQL below this line. SQL above this line might be regenerated, causing any modifications to be lost.
SET OutputRoot.MQMD.Format = 'MQSTR ';
SET OutputRoot.Properties.CodedCharSetId = 500;
SET OutputRoot.Properties.Encoding = 785;
Below are the ouput from Trace1 (before conversion) node and Trace2 node (after conversion)
TRACE 1
(0x1000000)Properties = (
(0x3000000)MessageSet = ''
(0x3000000)MessageType = ''
(0x3000000)MessageFormat = ''
(0x3000000)Encoding = 273
(0x3000000)CodedCharSetId = 819
(0x3000000)Transactional = TRUE
(0x3000000)Persistence = TRUE
(0x3000000)CreationTime = GMTTIMESTAMP '2002-08-02 20:30:42.580'
(0x3000000)ExpirationTime = -1
(0x3000000)Priority = 0
(0x3000000)Topic = NULL
)
(0x1000000)MQMD = (
(0x3000000)SourceQueue = 'PHXLG.ASCII.INPUT'
(0x3000000)Transactional = TRUE
(0x3000000)Encoding = 273
(0x3000000)CodedCharSetId = 819
(0x3000000)Format = 'MQSTR '
(0x3000000)Version = 2
(0x3000000)Report = 0
(0x3000000)MsgType = 8
(0x3000000)Expiry = -1
(0x3000000)Feedback = 0
(0x3000000)Priority = 0
(0x3000000)Persistence = 1
(0x3000000)MsgId = X'414d51205048584c47443031202020203d2f5ce6004f0012'
(0x3000000)CorrelId = X'000000000000000000000000000000000000000000000000'
(0x3000000)BackoutCount = 0
(0x3000000)ReplyToQ = 'TEST '
(0x3000000)ReplyToQMgr = 'PHXLGD01 '
(0x3000000)UserIdentifier = 'ED2110A '
(0x3000000)AccountingToken = X'0000000000000000000000000000000000000000000000000000000000000000'
(0x3000000)ApplIdentityData = ' '
(0x3000000)PutApplType = 28
(0x3000000)PutApplName = 'MQSeries Client for Java '
(0x3000000)PutDate = DATE '2002-08-02'
(0x3000000)PutTime = GMTTIME '20:30:42.580'
(0x3000000)ApplOriginData = ' '
(0x3000000)GroupId = X'000000000000000000000000000000000000000000000000'
(0x3000000)MsgSeqNumber = 1
(0x3000000)Offset = 0
(0x3000000)MsgFlags = 0
(0x3000000)OriginalLength = -1
)
(0x1000000)BLOB = (
(0x3000000)UnknownParserName = 'MQSTR'
(0x3000000)BLOB = X'4d794d65737361676520313233'
)
)
TRACE2
----------
(0x1000000)Properties = (
(0x3000000)MessageSet = ''
(0x3000000)MessageType = ''
(0x3000000)MessageFormat = ''
(0x3000000)Encoding = 785
(0x3000000)CodedCharSetId = 500
(0x3000000)Transactional = TRUE
(0x3000000)Persistence = TRUE
(0x3000000)CreationTime = GMTTIMESTAMP '2002-08-02 20:30:42.580'
(0x3000000)ExpirationTime = -1
(0x3000000)Priority = 0
(0x3000000)Topic = NULL
)
(0x1000000)MQMD = (
(0x3000000)SourceQueue = 'PHXLG.ASCII.INPUT'
(0x3000000)Transactional = TRUE
(0x3000000)Encoding = 785
(0x3000000)CodedCharSetId = 500
(0x3000000)Format = 'MQSTR '
(0x3000000)Version = 2
(0x3000000)Report = 0
(0x3000000)MsgType = 8
(0x3000000)Expiry = -1
(0x3000000)Feedback = 0
(0x3000000)Priority = 0
(0x3000000)Persistence = 1
(0x3000000)MsgId = X'414d51205048584c47443031202020203d2f5ce6004f0012'
(0x3000000)CorrelId = X'000000000000000000000000000000000000000000000000'
(0x3000000)BackoutCount = 0
(0x3000000)ReplyToQ = 'TEST '
(0x3000000)ReplyToQMgr = 'PHXLGD01 '
(0x3000000)UserIdentifier = 'ED2110A '
(0x3000000)AccountingToken = X'0000000000000000000000000000000000000000000000000000000000000000'
(0x3000000)ApplIdentityData = ' '
(0x3000000)PutApplType = 28
(0x3000000)PutApplName = 'MQSeries Client for Java '
(0x3000000)PutDate = DATE '2002-08-02'
(0x3000000)PutTime = GMTTIME '20:30:42.580'
(0x3000000)ApplOriginData = ' '
(0x3000000)GroupId = X'000000000000000000000000000000000000000000000000'
(0x3000000)MsgSeqNumber = 1
(0x3000000)Offset = 0
(0x3000000)MsgFlags = 0
(0x3000000)OriginalLength = -1
)
(0x1000000)BLOB = (
(0x3000000)UnknownParserName = 'MQSTR'
(0x3000000)BLOB = X'4d794d65737361676520313233'
)
)
Even though the value of CCSID and Properties of Properties parser has been changed to 500 & 785 , this is how input & output message looks like (i am using IBM supplied amqsbcg as is)
OUTPUT
StrucId : 'MD ' Version : 2
...
Encoding : 785 CodedCharSetId : 500
Format : 'MQSTR '
....
**** Message ****
length - 13 bytes
00000000: 4D79 4D65 7373 6167 6520 3132 33 'MyMessage 123 '
INPUT
StrucId : 'MD ' Version : 2
.....
Encoding : 273 CodedCharSetId : 819
Format : 'MQSTR '
.....
**** Message ****
length - 13 bytes
00000000: 4D79 4D65 7373 6167 6520 3132 33 'MyMessage 123 '
-- Mq Developer -- |
|
Back to top |
|
 |
Miriam Kaestner |
Posted: Fri Aug 02, 2002 12:48 pm Post subject: |
|
|
Centurion
Joined: 26 Jun 2001 Posts: 103 Location: IBM IT Education Services, Germany
|
It seems the broker does not convert BLOBs. But, on the other hand, why should it? A BLOB with MQMD.Format='MQSTR ', that's something you can let MQSeries handle alone! |
|
Back to top |
|
 |
dhaksr |
Posted: Fri Aug 02, 2002 1:49 pm Post subject: |
|
|
Apprentice
Joined: 20 Feb 2002 Posts: 37
|
I am able to convert BLOB in WMQI by setting the Encoding
and CharsetId in the Input Node (Advanced Tab).
But Why do you want to do this? If you are not having any COMP
fields, you can let MQSeries do the conversion as Miriam had
suggested (MQFMT = MQSTR and MQGMO_CONVERT). Going
thru WMQI you will have a performance penalty. |
|
Back to top |
|
 |
|