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 » TDS parsing query - repeating element with null values

Post new topic  Reply to topic
 TDS parsing query - repeating element with null values « View previous topic :: View next topic » 
Author Message
happyj
PostPosted: Mon Dec 24, 2012 4:24 am    Post subject: TDS parsing query - repeating element with null values Reply with quote

Voyager

Joined: 07 Feb 2005
Posts: 87

Hello there. - I Dont know if anyone is still working but worth a try anyway.


I am trying to use the TDS MRM Parser on WMB 6.1.0.3 to parse a delimited data structure.
My data consists of a variable number of delimited fields and so I have set the
message set to contain a tag delimited format with the delimiter set as | ( Pipe)
and supress absent delimiters as 'Never'

On the message definition file I have a type (set to All Elements Delimited) with a single
repeating element DATA_RECORD (string type) (Min Occurs 1, Max Occurs -1)

The data is being parsed as:

2012-12-24 11:26:16.539885 54 UserTrace BIP5610I: ''|'' has been matched as a repeating element delimiter for ''/IN_MSG'' at byte '9'.
2012-12-24 11:26:16.550056 54 UserTrace BIP5610I: ''|'' has been matched as a repeating element delimiter for ''/IN_MSG'' at byte '33'.
2012-12-24 11:26:16.550217 54 UserTrace BIP5610I: ''|'' has been matched as a repeating element delimiter for ''/IN_MSG'' at byte '41'.
2012-12-24 11:26:16.550364 54 UserTrace BIP5610I: ''|'' has been matched as a repeating element delimiter for ''/IN_MSG'' at byte '78'.
2012-12-24 11:26:16.550482 54 UserTrace BIP5610I: ''|'' has been matched as a repeating element delimiter for ''/IN_MSG'' at byte '82'.
2012-12-24 11:26:16.550606 54 UserTrace BIP5610I: ''|'' has been matched as a repeating element delimiter for ''/IN_MSG'' at byte '91'.
2012-12-24 11:26:16.550730 54 UserTrace BIP5610I: ''|'' has been matched as a repeating element delimiter for ''/IN_MSG'' at byte '102'.
2012-12-24 11:26:16.550856 54 UserTrace BIP5610I: ''|'' has been matched as a repeating element delimiter for ''/IN_MSG'' at byte '115'.
2012-12-24 11:26:16.550974 54 UserTrace BIP5610I: ''|'' has been matched as a repeating element delimiter for ''/IN_MSG'' at byte '120'.
2012-12-24 11:26:16.551130 54 UserTrace BIP5610I: ''|'' has been matched as a repeating element delimiter for ''/IN_MSG'' at byte '166'.
2012-12-24 11:26:16.551287 54 UserTrace BIP5610I: ''|'' has been matched as a repeating element delimiter for ''/IN_MSG'' at byte '208'.
2012-12-24 11:26:16.551407 54 UserTrace BIP5610I: ''|'' has been matched as a repeating element delimiter for ''/IN_MSG'' at byte '214'.
2012-12-24 11:26:16.551529 54 UserTrace BIP5610I: ''|'' has been matched as a repeating element delimiter for ''/IN_MSG'' at byte '221'.
2012-12-24 11:26:16.551645 54 UserTrace BIP5610I: ''|'' has been matched as a repeating element delimiter for ''/IN_MSG'' at byte '224'.
2012-12-24 11:26:16.551764 54 UserTrace BIP5610I: ''|'' has been matched as a repeating element delimiter for ''/IN_MSG'' at byte '228'.
2012-12-24 11:26:16.551886 54 UserTrace BIP5610I: ''|'' has been matched as a repeating element delimiter for ''/IN_MSG'' at byte '235'.
2012-12-24 11:26:16.552034 54 UserTrace BIP5610I: ''|'' has been matched as a repeating element delimiter for ''/IN_MSG'' at byte '239'.
2012-12-24 11:26:16.552155 54 UserTrace BIP5610I: ''|'' has been matched as a repeating element delimiter for ''/IN_MSG'' at byte '244'.
2012-12-24 11:26:16.552288 54 UserTrace BIP5610I: ''|'' has been matched as a repeating element delimiter for ''/IN_MSG'' at byte '245'.
2012-12-24 11:26:16.552389 54 UserTrace BIP5610I: ''|'' has been matched as a repeating element delimiter for ''/IN_MSG'' at byte '246'.
2012-12-24 11:26:16.552485 54 UserTrace BIP5610I: ''|'' has been matched as a repeating element delimiter for ''/IN_MSG'' at byte '247'.
2012-12-24 11:26:16.552589 54 UserTrace BIP5610I: ''|'' has been matched as a repeating element delimiter for ''/IN_MSG'' at byte '257'.
2012-12-24 11:26:16.552713 54 UserTrace BIP5610I: ''|'' has been matched as a repeating element delimiter for ''/IN_MSG'' at byte '266'.
2012-12-24 11:26:16.552837 54 UserTrace BIP5610I: ''|'' has been matched as a repeating element delimiter for ''/IN_MSG'' at byte '277'.
2012-12-24 11:26:16.552961 54 UserTrace BIP5610I: ''|'' has been matched as a repeating element delimiter for ''/IN_MSG'' at byte '288'.
2012-12-24 11:26:16.553076 54 UserTrace BIP5610I: ''|'' has been matched as a repeating element delimiter for ''/IN_MSG'' at byte '289'.
2012-12-24 11:26:16.553173 54 UserTrace BIP5610I: ''|'' has been matched as a repeating element delimiter for ''/IN_MSG'' at byte '291'.
2012-12-24 11:26:16.553293 54 UserTrace BIP5607I: The end of the bit stream has been reached at byte '307'.

i.e the parser has seen 27 delimiters, (28 data fields) including some null input fields.

The null fields are
2012-12-24 11:26:16.552288 54 UserTrace BIP5610I: ''|'' has been matched as a repeating element delimiter for ''/IN_MSG'' at byte '245'.
2012-12-24 11:26:16.552389 54 UserTrace BIP5610I: ''|'' has been matched as a repeating element delimiter for ''/IN_MSG'' at byte '246'.
2012-12-24 11:26:16.552485 54 UserTrace BIP5610I: ''|'' has been matched as a repeating element delimiter for ''/IN_MSG'' at byte '247'.

and

2012-12-24 11:26:16.553076 54 UserTrace BIP5610I: ''|'' has been matched as a repeating element delimiter for ''/IN_MSG'' at byte '289'.

The MRM parser is however only seeing 24 fields

(0x01000021:Name+):MRM = ( ['mrm' : 0x1037abaf0]
(0x0300000B:NameValue+):DATA_RECORD = 'AAAAAAAA' (CHARACTER)
(0x0300000B:NameValue+):DATA_RECORD = 'BBBBBBBBBBBBBBBBBBBBB' (CHARACTER)
(0x0300000B:NameValue+):DATA_RECORD = 'CCCCCCC' (CHARACTER)
(0x0300000B:NameValue+):DATA_RECORD = 'DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD' (CHARACTER)
(0x0300000B:NameValue+):DATA_RECORD = 'EEE' (CHARACTER)
(0x0300000B:NameValue+):DATA_RECORD = 'FFFFFFFF' (CHARACTER)
(0x0300000B:NameValue+):DATA_RECORD = 'GGGGGGGGGG' (CHARACTER)
(0x0300000B:NameValue+):DATA_RECORD = 'HHHHHHHHHHHH' (CHARACTER)
(0x0300000B:NameValue+):DATA_RECORD = 'IIII' (CHARACTER)
(0x0300000B:NameValue+):DATA_RECORD = 'JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ' (CHARACTER)
(0x0300000B:NameValue+):DATA_RECORD = '* please do not use *' (CHARACTER)
(0x0300000B:NameValue+):DATA_RECORD = 'LLLL' (CHARACTER)
(0x0300000B:NameValue+):DATA_RECORD = 'MMM' (CHARACTER)
(0x0300000B:NameValue+):DATA_RECORD = 'NN' (CHARACTER)
(0x0300000B:NameValue+):DATA_RECORD = 'OO' (CHARACTER)
(0x0300000B:NameValue+):DATA_RECORD = 'PPPPPP' (CHARACTER)
(0x0300000B:NameValue+):DATA_RECORD = 'QQQ' (CHARACTER)
(0x0300000B:NameValue+):DATA_RECORD = 'RRR' (CHARACTER)
(0x0300000B:NameValue+):DATA_RECORD = 'SSSSSSSS' (CHARACTER)
(0x0300000B:NameValue+):DATA_RECORD = 'TTTTTT' (CHARACTER)
(0x0300000B:NameValue+):DATA_RECORD = 'UUUUU' (CHARACTER)
(0x0300000B:NameValue+):DATA_RECORD = 'VVVVVVVVVV' (CHARACTER)
(0x0300000B:NameValue+):DATA_RECORD = 'W' (CHARACTER)
(0x0300000B:NameValue+):DATA_RECORD = 'XXXXXXXXXXXX' (CHARACTER)
)
)


The infocenter says that for NULL fields to be interpreted set
Nillable = true
TDS Encoding Null = 'NullLiteralValue'
TDS Encoding Null Value = ''

but this is not changing what I see in the trace.

The structure I am looking for is

(0x01000021:Name+):MRM = ( ['mrm' : 0x1037abaf0]
(0x0300000B:NameValue+):DATA_RECORD = 'AAAAAAAA' (CHARACTER)
(0x0300000B:NameValue+):DATA_RECORD = 'BBBBBBBBBBBBBBBBBBBBB' (CHARACTER)
(0x0300000B:NameValue+):DATA_RECORD = 'CCCCCCC' (CHARACTER)
(0x0300000B:NameValue+):DATA_RECORD = 'DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD' (CHARACTER)
(0x0300000B:NameValue+):DATA_RECORD = 'EEE' (CHARACTER)
(0x0300000B:NameValue+):DATA_RECORD = 'FFFFFFFF' (CHARACTER)
(0x0300000B:NameValue+):DATA_RECORD = 'GGGGGGGGGG' (CHARACTER)
(0x0300000B:NameValue+):DATA_RECORD = 'HHHHHHHHHHHH' (CHARACTER)
(0x0300000B:NameValue+):DATA_RECORD = 'IIII' (CHARACTER)
(0x0300000B:NameValue+):DATA_RECORD = 'JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ' (CHARACTER)
(0x0300000B:NameValue+):DATA_RECORD = '* please do not use *' (CHARACTER)
(0x0300000B:NameValue+):DATA_RECORD = 'LLLL' (CHARACTER)
(0x0300000B:NameValue+):DATA_RECORD = 'MMM' (CHARACTER)
(0x0300000B:NameValue+):DATA_RECORD = 'NN' (CHARACTER)
(0x0300000B:NameValue+):DATA_RECORD = 'OO' (CHARACTER)
(0x0300000B:NameValue+):DATA_RECORD = 'PPPPPP' (CHARACTER)
(0x0300000B:NameValue+):DATA_RECORD = 'QQQ' (CHARACTER)
(0x0300000B:NameValue+):DATA_RECORD = 'RRR' (CHARACTER)
(0x0300000B:NameValue+):DATA_RECORD = '' (CHARACTER)
(0x0300000B:NameValue+):DATA_RECORD = '' (CHARACTER)
(0x0300000B:NameValue+):DATA_RECORD = '' (CHARACTER)
(0x0300000B:NameValue+):DATA_RECORD = 'SSSSSSSS' (CHARACTER)
(0x0300000B:NameValue+):DATA_RECORD = 'TTTTTT' (CHARACTER)
(0x0300000B:NameValue+):DATA_RECORD = 'UUUUU' (CHARACTER)
(0x0300000B:NameValue+):DATA_RECORD = 'VVVVVVVVVV' (CHARACTER)
(0x0300000B:NameValue+):DATA_RECORD = '' (CHARACTER)
(0x0300000B:NameValue+):DATA_RECORD = 'W' (CHARACTER)
(0x0300000B:NameValue+):DATA_RECORD = 'XXXXXXXXXXXX' (CHARACTER)
)
)

Any help is much appreciated

Thank you
Back to top
View user's profile Send private message
kimbert
PostPosted: Sat Dec 29, 2012 11:45 am    Post subject: Reply with quote

Jedi Council

Joined: 29 Jul 2003
Posts: 5542
Location: Southampton

You are on the right track If you set up the TDS parser correctly, you will get all 28 fields in the message tree, and the empty fields will be set to NULL ( that is the explicit ESQL value NULL, not the empty string ).
Back to top
View user's profile Send private message
happyj
PostPosted: Wed Jan 02, 2013 12:57 am    Post subject: Reply with quote

Voyager

Joined: 07 Feb 2005
Posts: 87

Thanks

Any hints on which settings to try or the section of the documentation to re-read?

Is it related to
Nillable = true
TDS Encoding Null = 'NullLiteralValue'
TDS Encoding Null Value = ''
Back to top
View user's profile Send private message
kimbert
PostPosted: Wed Jan 02, 2013 1:51 am    Post subject: Reply with quote

Jedi Council

Joined: 29 Jul 2003
Posts: 5542
Location: Southampton

Yes - that combination of settings is a well-known solution for your problem. It sounds as if it's not working for you, but see http://www.mqseries.net/phpBB/viewtopic.php?p=236495&sid=79a916a5eeafd183304837a3edfe6b64
That user seemed to find that it worked OK.
Back to top
View user's profile Send private message
happyj
PostPosted: Wed Jan 02, 2013 2:12 am    Post subject: Reply with quote

Voyager

Joined: 07 Feb 2005
Posts: 87

Thanks I will try this again.
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 » TDS parsing query - repeating element with null values
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.