|
RSS Feed - WebSphere MQ Support
|
RSS Feed - Message Broker Support
|
 |
|
TDS repeating nested groups not parsing correctly |
« View previous topic :: View next topic » |
Author |
Message
|
sbatta-mqnet |
Posted: Sat Jan 24, 2004 2:13 am Post subject: TDS repeating nested groups not parsing correctly |
|
|
Newbie
Joined: 24 Jan 2004 Posts: 6 Location: washington
|
Hi,
I have a TDS message that has nested repeats e.g.
Claim
ClaimantName
ClaimDate
Coverage Period(35)
DateFrom
DateTo
Adjustments (10)
AdjustmentDate
AdjustmentAmount
I have set this up with a fixed length TDS message, the message gets only partially parsed and I can see all the 35 Repeats of the coverage period, but for each I only get 1 adjustment each and it complains about the length of the bitstream. If I remove the repeat on the Coverage period and make it from 35 to 1 I can see all the 10 Ajustments for that Coverage period.
Is this a bug, something I am missing. Can this even be done with a TDS message format or I have to use CWF. I heard that you can do everything you can do in CWF in TDS and for consistency use TDS in most of the places..
Any help will be appreciated..
Thanks
Sanjeev[/list] _________________ Thanks
Sanjeev Batta
Coraxis Corporation |
|
Back to top |
|
 |
jefflowrey |
Posted: Sun Jan 25, 2004 6:43 am Post subject: |
|
|
Grand Poobah
Joined: 16 Oct 2002 Posts: 19981
|
Yes, you can do this in TDS.
Can you be more specific about the model, particularly the repeating elements? _________________ I am *not* the model of the modern major general. |
|
Back to top |
|
 |
Lisa |
Posted: Sun Jan 25, 2004 6:06 pm Post subject: Parsing |
|
|
Master
Joined: 07 Jun 2002 Posts: 287 Location: NJ
|
What CSD are you using?
Lisa |
|
Back to top |
|
 |
kimbert |
Posted: Mon Jan 26, 2004 2:32 am Post subject: |
|
|
 Jedi Council
Joined: 29 Jul 2003 Posts: 5542 Location: Southampton
|
Quote: |
I heard that you can do everything you can do in CWF in TDS and for consistency use TDS in most of the places |
Don't use TDS for parsing a binary message. Even if its possible, it will be much slower than using CWF.
TDS is for parsing messages which consist mostly of text. It is very flexible (as you rightly say) but it does not perform as well as CWF on C/COBOL style messages.
If you have a mixture of text and binary within the same message, it may be possible to use TDS to do everything. But even then, I would be tempted to split up the message, and use some ESQL to parse the individual parts using the appropriate parser. |
|
Back to top |
|
 |
kimbert |
Posted: Mon Jan 26, 2004 2:46 am Post subject: |
|
|
 Jedi Council
Joined: 29 Jul 2003 Posts: 5542 Location: Southampton
|
Is the number of repeats fixed or variable?
Are there tags on the 'Coverage' and 'Adjustments' fields?
If you have a varying number of repeats in a non-tagged fixed-length environment, that's more difficult to handle. Probably best if you give us an example bitstream to look at. |
|
Back to top |
|
 |
sbatta-mqnet |
Posted: Mon Jan 26, 2004 6:47 pm Post subject: Here are some more details |
|
|
Newbie
Joined: 24 Jan 2004 Posts: 6 Location: washington
|
My Message structure is like follows
Claim
--ClaimantName
--ClaimDate
--Coverage Period [Repeats 35 times]
----DateFrom
----DateTo
----Adjustments [Repeats 10 times, for each Coverage period]
------AdjustmentDate
------AdjustmentAmount
I have defined the structure in MRM and using a Physical layer of TDS type.
Its not a binray message, its a fixed length structure coming from an IBM 390 mainframe/natural program. So all the repeating groups are fixed length.
I am using version 2.1 with service fix 3 or higher.
Some other things that I have been able to analyze
1. I can see the first repeating group come back as 35 times in the debugger, but for each of them I get only 1 Adjustment, instead of 10.
2. As soon as I put the Custom Wire format, the message just parsed.
3. If I make the first repeating group repeat only 1 times, i.e in the connections Tab I change the min occurs and max occurs to 1, I can see the nested group come back 10 times.
4. Now the most interesting part, which makes me thing that this a bug..If I create another element right after the repeating group at the level ( repating 35 times) making my structure look like this..
Claim
--ClaimantName
--ClaimDate
--Coverage Period [Repeats 35 times]
----DateFrom
----DateTo
----Adjustments [Repeats 10 times, for each Coverage period]
------AdjustmentDate
------AdjustmentAmount
----dummyFieldForTDS
I get it to work, just right with 35 repeating coverage periods each with 10 adjustments. The bottom line is I the Adjustment repeating group is the first or the last element in the Coverage period repeating group, the whole thing is messed up, including that field and it just works fine.
So I have considered 2 options either go with the CWF or have our mainframe program provide that extra space or a 0 character that I can put into dummyFieldForTDS to get it to work, I have chosen the second option till I can find a better solution or a reply back from IBM support, telling me the TDS can't handle it.
I am still hoping that its something that I am missing and it should be simple.
Thanks
Sanjeev _________________ Thanks
Sanjeev Batta
Coraxis Corporation |
|
Back to top |
|
 |
kimbert |
Posted: Tue Jan 27, 2004 1:45 am Post subject: |
|
|
 Jedi Council
Joined: 29 Jul 2003 Posts: 5542 Location: Southampton
|
Thanks - really good info there.
I suggest using CWF, since it seems to work. I don't see any advantage in deliberately avoiding CWF if you are parsing fixed-length data. After all, the message tree will look identical whether you use TDS or CWF, so your ESQL will be the same either way.
I'll take a look at your scenario sometime, and see whether I can work out what's going wrong. I don't think it's a bug, but I suppose its just possible... |
|
Back to top |
|
 |
|
|
 |
|
Page 1 of 1 |
|
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
|
|
|
|