Author |
Message
|
nicojvr |
Posted: Tue Jun 10, 2003 6:36 am Post subject: Tag Delimited format |
|
|
 Apprentice
Joined: 04 Jun 2003 Posts: 45
|
hi,
I am writing a flow using the tag/delimited physical format.
my in Message looks like this :
UNH+datadatadatadata'UNG+datadatadata'
i have setup the message set to look as:
tag data seperator: +
delimiter : ' (since the parser converts my ' to ')
when i run it agains my message flow in debugger i get:
field data
UNH datadatadatadatadata'UNG+datadatadatadata
instead of
field data
UNH datadatadatadatadata
UNG datadatadatadatadata
what am i doing wrong ?
thanks
Nico |
|
Back to top |
|
 |
jefflowrey |
Posted: Tue Jun 10, 2003 9:29 am Post subject: |
|
|
Grand Poobah
Joined: 16 Oct 2002 Posts: 19981
|
Your delimiter needs to be the character that is in the bytestream on the queue.
So if your incoming message has the apostrophe character in it, and not the string of characters "'", then you need to put that into your delimiter. |
|
Back to top |
|
 |
nicojvr |
Posted: Wed Jun 11, 2003 12:26 am Post subject: |
|
|
 Apprentice
Joined: 04 Jun 2003 Posts: 45
|
Thanks for the reply,but that didn't seem to work. I still got only one entry in the tag field and the rest of the line in the datafield with my apostrophy characters converted to '
Cheers
Nico |
|
Back to top |
|
 |
Craig B |
Posted: Wed Jun 18, 2003 2:59 am Post subject: |
|
|
Partisan
Joined: 18 Jun 2003 Posts: 316 Location: UK
|
The last reply to this question was correct in that the bytes in the input message should be examined to see what character is in the input message. When debugging a message flow using the Control Centers visual debugger, then information is exchanged between the message flow and control center using XML. So when you view your parsed tree from the Control Center, this will display ' in the data because the XML parser would have substituted this in when sending the message tree to the debugging window. Therefore I would ignore the ' you are seeing at it is likely that there is an apostrophe in the bitstream.
However, this TDS bitstream will be arriving in a Websphere MQ message that has a CodedCharSetId. It may be possible that the 0xYY bytes you have in the bitstream for the apostrophe do not match the CodedCharSetId in the MQMD. Therefore it may not be seen as the apostrophe character.
It should also be noted that the Delimiter specified in the messageSet is the character as it is in Unicode. When a parser creates a message tree from the bitstream, then this tree is created in Unicode. Therefore it may be possible that the 0xYY bytes that you have for your apostrophe in the bitstream do not map to the Apostophe character in Unicode and therefore this is not being recognised by the parser.
What 0xYY byte do you have in your input bitstream where the apostrophe character is? Viewing the input file in a hex editor should show this, or you could temporarily change you MessageDomain to BLOB and trace ${Root} to see what the hex is. What CodedCharSetId is in the input message? If you are still having trouble then could you post this information in a response. _________________ Regards
Craig |
|
Back to top |
|
 |
nicojvr |
Posted: Thu Jun 19, 2003 7:32 am Post subject: |
|
|
 Apprentice
Joined: 04 Jun 2003 Posts: 45
|
Hi Craig,
thanks for your reply.
I checked the incoming message and discovered that the apostophe character is x'2F' in hex. Subsequently i changed my delimited from ' to x'2F' but alas the outcome is still the same:
tag data'tag+data'
Should i use this data, replace all ' with / or something and put it into a resetContentDescriptorNode with another physical format that defines the delimiter as a / ?
Thanks
Nico |
|
Back to top |
|
 |
nicojvr |
Posted: Thu Jun 19, 2003 7:44 am Post subject: |
|
|
 Apprentice
Joined: 04 Jun 2003 Posts: 45
|
correction:
not x'2F' but x'27'
thanks
Nico |
|
Back to top |
|
 |
Craig B |
Posted: Thu Jun 19, 2003 8:10 am Post subject: |
|
|
Partisan
Joined: 18 Jun 2003 Posts: 316 Location: UK
|
What is the MQMD.CodedCharSetId field set to in the input message? This will be important in knowing what x'27' will be translated to when mapping to Unicode within the broker. _________________ Regards
Craig |
|
Back to top |
|
 |
nicojvr |
Posted: Fri Jun 20, 2003 1:17 am Post subject: |
|
|
 Apprentice
Joined: 04 Jun 2003 Posts: 45
|
Hi,
Sorry I am new to MQSI, where will i find the value of MQMD.CodedCharSetId ?
thanks
Nico  |
|
Back to top |
|
 |
drajib |
Posted: Fri Jun 20, 2003 1:43 am Post subject: |
|
|
 Apprentice
Joined: 25 Mar 2003 Posts: 42 Location: India
|
Could be seen from Websphere MQ Explorer. For easy identification, just double click on the particular queue.
Best regards |
|
Back to top |
|
 |
nicojvr |
Posted: Fri Jun 20, 2003 1:59 am Post subject: |
|
|
 Apprentice
Joined: 04 Jun 2003 Posts: 45
|
|
Back to top |
|
 |
Craig B |
Posted: Fri Jun 20, 2003 3:39 am Post subject: |
|
|
Partisan
Joined: 18 Jun 2003 Posts: 316 Location: UK
|
Well x'27' is the apostrophe character in codepage 437 and maps to x'0027' in Unicode which is also the apostrophe character. Therefore it would seem that this should be working for you. It would be nice to take the Visual debugger out of the equation which, as previously mentioned, will be introducing the ' entity reference when communicating with the Control centre in XML. Therefore can you temporarily change your MQInput node to the BLOB domain and insert a trace node straight after the MQInput node that captures ${Root} to a file. Would it be possible to paste into this thread the output captured in this file. From this we should see exactly what the broker has read in and therefore what is passed to the TDS parser. Once I have this then I can try and parse this in the same way you are and see if it is successful. _________________ Regards
Craig |
|
Back to top |
|
 |
nicojvr |
Posted: Fri Jun 20, 2003 5:04 am Post subject: |
|
|
 Apprentice
Joined: 04 Jun 2003 Posts: 45
|
output from the trace:
0x1000000)BLOB = (
(0x3000000)UnknownParserName = 'MQSTR'
(0x3000000)BLOB = X'554e422b746573744461746127554e422b7465737464617461322709'
and my input message would be :
UNB+testData'UNB+testdata2'
Seems like everything should be in order..
elp?
Nico |
|
Back to top |
|
 |
Craig B |
Posted: Fri Jun 20, 2003 7:52 am Post subject: |
|
|
Partisan
Joined: 18 Jun 2003 Posts: 316 Location: UK
|
I have created a small TDS message that used Tagged Delimited data element separation which users the delimiter of ' (apostrophe) and this successfully parses your sample data. Could you provide details of your messageSet particulary what you have set in the compound type TDS tab, what children this type has and what TDS attributes you have set for each of these elements. Also what CSD level do you have installed? _________________ Regards
Craig |
|
Back to top |
|
 |
nicojvr |
Posted: Mon Jun 23, 2003 1:54 am Post subject: |
|
|
 Apprentice
Joined: 04 Jun 2003 Posts: 45
|
okay here it is:
my compoundtype is called EDIClaimInputMessage and has only one element (UNB) the properties on the EDClaimInputMessage are:
1st tab
type Composition: Ordered set
type Content: Closed
identifier : t_EDIClaimInputMessage
Suspend from use: no
2'nd tab
History tab is empty
3rd tab (EDIClaimsInputTDS)
Group Indicator : empty
Group Terminator: empty
Tag Data Seperator: +
Length of tag : Empty
Data Element Seperation : Tagged Delimited
Delimiter : x'27'
the rest is empty
Also where i define the Physical format:
TDSWire format Identifier: TDSTAG
Messaging Standard: Unknown
Default CCSID:437
Trim Fix Len: No Trim
Group Fields are empty
tag Data Seperator:+
tag length : empty
Delimiter : x'27'
Decimal Point : .
Escape and reserved chars: empty
the rest is default.
We are on MQSI CSD 4
Thanks
Nico |
|
Back to top |
|
 |
Craig B |
Posted: Mon Jun 23, 2003 3:48 am Post subject: |
|
|
Partisan
Joined: 18 Jun 2003 Posts: 316 Location: UK
|
Well x'27' will not work in your definitions because this will be taken as the string literal of an x followed my an apostrophe followed by the characters 27. There are three formats of delimiters and these are :
1) Character form
2) 0xYY hexadecimal form
3) U+xxxx Unicode mneumonic form.
In this case there should be no problems with any of the formats either entering ' or 0x27 or U+0027, since there should be no problems with conversions. What have you defined as the tags for the elements that are the children of the Tagged Delimited parent?
In the example I created I did not set the TDS settings at the messageset level. These should not affect your scenario since these should only be used when no setting has been made at the lower levels. _________________ Regards
Craig |
|
Back to top |
|
 |
|