|
RSS Feed - WebSphere MQ Support
|
RSS Feed - Message Broker Support
|
 |
|
question for the ESQL experts |
« View previous topic :: View next topic » |
Author |
Message
|
pfaulkner |
Posted: Wed Dec 18, 2002 12:26 pm Post subject: question for the ESQL experts |
|
|
Master
Joined: 18 Mar 2002 Posts: 241 Location: Colorado, USA
|
I have an XML message that needs to be converted to COBOL which contains an OCCURS DEPENDING ON clause.
The parsed XML looks like this..
(0x1000010)XML = (
(0x1000000)TESTXML = (
(0x2000000) = '
'
(0x1000000)LINE_ITEMS_COUNT = (
(0x2000000) = '02'
)
(0x2000000) = '
'
(0x1000000)LINE_ITEMS = (
(0x2000000) = '
'
(0x1000000)DESC = (
(0x2000000) = 'AB'
)
(0x2000000) = '
'
)
(0x2000000) = '
'
(0x1000000)LINE_ITEMS = (
(0x2000000) = '
'
(0x1000000)DESC = (
(0x2000000) = 'CD'
)
(0x2000000) = '
'
)
(0x2000000) = '
'
)
)
As you can see there are two LINE_ITEMS
After translating to COBOL the message looks like this
(0x1000008)MRM = (
(0x3000000)LINE_ITEMS_COUNT = '02'
(0x1000000)LINE_ITEMS = (
(0x3000000)DESC = 'AB'
)
(0x1000000)LINE_ITEMS = (
(0x3000000)DESC = 'CD'
)
)
Everything looks good.
Now I need to be able to check the length on my new message so I have another compute node with a:
SET newDataLength = LENGTH(BITSTREAM(InputBody));
command
This fails with the following error -
2002-12-18 13:44:54.894771 4632 UserTrace BIP2538I: Node 'EMT_REQUEST.EMT_PARSE_SYSONE-FOFNISMC_MSG_XML_TO_C1.EMT_COMBINE_HEADER_AND_MSG_DATA1.Combine Header and MsgData': Evaluating expression 'BITSTREAM(InputBody)' at (21, 2 .
The expression being evaluated was 'BITSTREAM(InputBody)'.
No user action required.
2002-12-18 13:44:54.897205 4632 Error BIP5286E: Message Translation Interface Writing Errors have occurred.
Errors have occurred during writing.
Review further error messages for an indication to the cause of the errors.
2002-12-18 13:44:54.901996 4632 Error BIP2628E: Exception condition detected on input node 'EMT_REQUEST.RG.T.CITMCSAC.OS07.SI.RGL3'.
The input node 'EMT_REQUEST.RG.T.CITMCSAC.OS07.SI.RGL3' detected an error whilst processing a message. The message flow has been rolled-back and, if the message was being processed in a unit of work, it will remain on the input queue to be processed again. Following messages will indicate the cause of this exception.
Check the error messages which follow to determine why the exception was generated, and take action as described by those messages.
2002-12-18 13:44:54.902038 4632 ImbComputeNode::evaluate
2002-12-18 13:44:54.902103 4632 MtiImbParser::subSyncWithDictionary , DP3PD5007O001, LINE_ITEMS
2002-12-18 13:44:54.903072 4632 UserTrace BIP2231E: Error detected whilst processing a message 'EMT_REQUEST.RG.T.CITMCSAC.OS07.SI.RGL3'.
The message broker detected an error whilst processing a message in node 'EMT_REQUEST.RG.T.CITMCSAC.OS07.SI.RGL3'. The message has been augmented with an exception list and has been propagated to the node's failure terminal for further processing.
See the following messages for details of the error.
2002-12-18 13:44:54.903118 4632 ImbComputeNode::evaluate
2002-12-18 13:44:54.903137 4632 MtiImbParser::subSyncWithDictionary , DP3PD5007O001, LINE_ITEMS
If my input only has 1 LINE_ITEM everything works fine????
Can someone please explain why the BITSTREAM(InputBody) would fail?
I really appreciate the help, this one has been driving me crazy for days. |
|
Back to top |
|
 |
warrenpage |
Posted: Wed Dec 18, 2002 10:34 pm Post subject: Hmm |
|
|
Acolyte
Joined: 19 Feb 2002 Posts: 56 Location: Australia
|
Could depend on which CSD you are using. Under CSD3 you should use ASBITSTREAM instead of BITSTREAM.
Under CSD2 or lower, try moving it to OutputRoot, then doing the BITSTREAM on OutputRoot.MRM (instead of InputBody)
ALSO, be aware that internally COBOL OCCURS DEPENDING does not change the length of the record size COBOL still allocates the full OCCURS size. The only works when the OCCURS DEPENDING is at the end of the record defn and you cut the record short using file length (which it sounds like you might be doing). Of course this is COBOL i am describing not how WMQI handles it - so again this may not affect you. |
|
Back to top |
|
 |
Segs |
Posted: Thu Dec 19, 2002 2:51 am Post subject: |
|
|
Voyager
Joined: 04 Oct 2001 Posts: 78 Location: Zurich Financial Services
|
I don't understand why you are trying to change the length of the message can you please explain what you are trying to do.
Thanks |
|
Back to top |
|
 |
pfaulkner |
Posted: Thu Dec 19, 2002 7:56 am Post subject: |
|
|
Master
Joined: 18 Mar 2002 Posts: 241 Location: Colorado, USA
|
According to the ESQL Reference you can only use BITSTREAM on the input.
Segs, my message is two parts. The first partis a header that contains info about the message itself, including length and therefore when the message is translated the length changes and the length field of the header needs to change to reflect this. |
|
Back to top |
|
 |
pfaulkner |
Posted: Thu Dec 19, 2002 8:35 am Post subject: |
|
|
Master
Joined: 18 Mar 2002 Posts: 241 Location: Colorado, USA
|
I found something in the manuals that implied for a Variable length table I needed to add a CWF (which I already had) and then:
1. change the CONNECTION tab Repeat field to YES
2. change the CWF tab Repeat Count Tab to 'Value of'
3. chaneg the CWF tab Repeat Count Value of to the name of the field that contains my number of occurs.
This all made sense so I did all this and now I get a new error...
2002-12-18 16:31:05.216089 3611 UserTrace BIP2538I: Node 'EMT_REQUEST.EMT_PARSE_SYSONE-FOFNISMC_MSG_XML_TO_C1.EMT_COMBINE_HEADER_AND_MSG_DATA1.Combine Header and MsgData': Evaluating expression 'BITSTREAM(InputBody)' at (21, 2 .
The expression being evaluated was 'BITSTREAM(InputBody)'.
No user action required.
2002-12-18 16:31:05.219266 3611 Error BIP5167E: Error with Custom Wire Format: message set 'DP3PD5007O001'; message '100035'; parent element ''; current element '{5}'; function name 'CWFWorker::write'; error code '0'.
Custom Wire Format General Error.
Record the full details provided with this message and contact your IBM support center.
2002-12-18 16:31:05.220607 3611 Error BIP5286E: Message Translation Interface Writing Errors have occurred.
Errors have occurred during writing.
Review further error messages for an indication to the cause of the errors.
2002-12-18 16:31:05.225614 3611 Error BIP2628E: Exception condition detected on input node 'EMT_REQUEST.RG.T.CITMCSAC.OS07.SI.RGL3'.
The input node 'EMT_REQUEST.RG.T.CITMCSAC.OS07.SI.RGL3' detected an error whilst processing a message. The message flow has been rolled-back and, if the message was being processed in a unit of work, it will remain on the input queue to be processed again. Following messages will indicate the cause of this exception.
Check the error messages which follow to determine why the exception was generated, and take action as described by those messages.
2002-12-18 16:31:05.225659 3611 ImbComputeNode::evaluate
2002-12-18 16:31:05.225678 3611 MtiImbParser::refreshBitStreamFromElements - 4 par , ERROR: PWFDataImpl: incorrect logical type.
2002-12-18 16:31:05.226685 3611 UserTrace BIP2231E: Error detected whilst processing a message 'EMT_REQUEST.RG.T.CITMCSAC.OS07.SI.RGL3'.
The message broker detected an error whilst processing a message in node 'EMT_REQUEST.RG.T.CITMCSAC.OS07.SI.RGL3'. The message has been augmented with an exception list and has been propagated to the node's failure terminal for further processing.
See the following messages for details of the error.
So what does incorrect logical type mean???? |
|
Back to top |
|
 |
pfaulkner |
Posted: Thu Dec 19, 2002 1:58 pm Post subject: |
|
|
Master
Joined: 18 Mar 2002 Posts: 241 Location: Colorado, USA
|
Solution.
The problem turned out to be a combination of problems. Once I added the addition CWF (mentioned in previous post above) I also needed to cast the occurs depending on index to integer prior to the BITSTREAM command. Alternatively, I could also create an XML MRM and not worry about the cast. |
|
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
|
|
|
|