Author |
Message
|
datspats |
Posted: Wed May 09, 2007 1:54 am Post subject: Problem with accessing elements of message tree |
|
|
Voyager
Joined: 12 Apr 2007 Posts: 80 Location: Mumbai
|
Hello,
I am coming across the problem where the ESQL code is getting the NULL value when reading element of message tree in the MRM domain.
I am using RCD node for parsing and after this i have put trace node. Trade node to a file shows output with the Message tree generated under MRM as required.
e.g
(0x01000021):MRM = (
(0x01000013):DataMessageBody = (
(0x0300000B):ABC = 'XX000111'
(0x0300000B): CODE = 'CODEA'
)
and DataMessageBody is repeated for 1 or more than 1 time.
When I am reading the content of message in compute node using the statement InputRoot.MRM.DataMessageBody[1].ABC the value returned is NULL.
SET temp = InputRoot.MRM.DataMessageBody[1].ABC;
value of temp is NULL.
Could you all please let me now what is the problem? where I am going wrong.
regards |
|
Back to top |
|
 |
AkankshA |
Posted: Wed May 09, 2007 2:20 am Post subject: |
|
|
 Grand Master
Joined: 12 Jan 2006 Posts: 1494 Location: Singapore
|
Have u declared in your MRM parser that DataMessageBody element can have multiple occurence.... perhaps not i suppose
try this
SET temp = InputRoot.MRM.DataMessageBody.ABC _________________ Cheers |
|
Back to top |
|
 |
datspats |
Posted: Wed May 09, 2007 2:24 am Post subject: |
|
|
Voyager
Joined: 12 Apr 2007 Posts: 80 Location: Mumbai
|
Hi Akanksha,
I have already mentioned the same. DataMessageBody element is repeated 1 to -1 in message set.
regards |
|
Back to top |
|
 |
AkankshA |
Posted: Wed May 09, 2007 2:29 am Post subject: |
|
|
 Grand Master
Joined: 12 Jan 2006 Posts: 1494 Location: Singapore
|
oops... i am sorry, missed that line _________________ Cheers |
|
Back to top |
|
 |
Monk |
Posted: Wed May 09, 2007 2:30 am Post subject: |
|
|
 Master
Joined: 21 Apr 2007 Posts: 282
|
Can you post the properties of your RCD node? _________________ Thimk |
|
Back to top |
|
 |
AkankshA |
Posted: Wed May 09, 2007 2:35 am Post subject: |
|
|
 Grand Master
Joined: 12 Jan 2006 Posts: 1494 Location: Singapore
|
hey your code appears fine to me
can you please try sending a msg with multiple occurence of DataMessageBody and verify using trace node that the tree is created properly....
if possible paste the o/p here _________________ Cheers |
|
Back to top |
|
 |
datspats |
Posted: Wed May 09, 2007 2:49 am Post subject: |
|
|
Voyager
Joined: 12 Apr 2007 Posts: 80 Location: Mumbai
|
Hi,
I have set the Properties for RCD node as
Message Domain is set to MRM, Rest Check box checked.
Whereas Message Set, Message Type, Message format details are captured at runtime using Properties section of the Root of the input message to the RCD node.
I am filling in the Properties section of Root in the one of the compute node which just before the RCD node.
This is the code in that compute node which is just before RCD node.
SET OutputRoot.Properties.MessageSet = 'Messagesetname';
SET OutputRoot.Properties.MessageType= 'MessageFormatname';
SET OutputRoot.Properties.MessageFormat='TDS';
I am having multiple (3) message types to be parsed in the same flow, that is why this approached is used (single RCD).
FYI : For other 2 messages types the above flow and code is working fine
the Trace node op is
(
(0x01000000):Properties = (
(0x03000000):MessageSet = 'IS_MS_IDX_2007'
(0x03000000):MessageType = 'TRADEMESSAGE'
(0x03000000):MessageFormat = 'TDS'
(0x03000000):Encoding = 546
(0x03000000):CodedCharSetId = 437
(0x03000000):Transactional = TRUE
(0x03000000):Persistence = FALSE
(0x03000000):CreationTime = GMTTIMESTAMP '2007-05-09 04:44:35.660'
(0x03000000):ExpirationTime = -1
(0x03000000):Priority = 0
(0x03000000):ReplyIdentifier = X'000000000000000000000000000000000000000000000000'
(0x03000000):ReplyProtocol = 'MQ'
(0x03000000):Topic = NULL
(0x03000000):ContentType = ''
)
(0x01000000):MQMD = (
(0x03000000):SourceQueue = 'TESTIN'
(0x03000000):Transactional = TRUE
(0x03000000):Encoding = 546
(0x03000000):CodedCharSetId = 437
(0x03000000):Format = 'MQHRF2 '
(0x03000000):Version = 2
(0x03000000):Report = 0
(0x03000000):MsgType = 8
(0x03000000):Expiry = -1
(0x03000000):Feedback = 0
(0x03000000):Priority = 0
(0x03000000):Persistence = 0
(0x03000000):MsgId = X'414d512042524b514d4752202020202002f23f4620083205'
(0x03000000):CorrelId = X'000000000000000000000000000000000000000000000000'
(0x03000000):BackoutCount = 0
(0x03000000):ReplyToQ = ' '
(0x03000000):ReplyToQMgr = 'BRKQMGR '
(0x03000000):UserIdentifier = '154121 '
(0x03000000):AccountingToken = X'16010515000000e07b3c460068001818494617cae4030000000000000000000b'
(0x03000000):ApplIdentityData = ' '
(0x03000000):PutApplType = 11
(0x03000000):PutApplName = 's\154121\Desktop\rfhutil.exe'
(0x03000000):PutDate = DATE '2007-05-09'
(0x03000000):PutTime = GMTTIME '04:44:35.660'
(0x03000000):ApplOriginData = ' '
(0x03000000):GroupId = X'000000000000000000000000000000000000000000000000'
(0x03000000):MsgSeqNumber = 1
(0x03000000):Offset = 0
(0x03000000):MsgFlags = 0
(0x03000000):OriginalLength = -1
)
(0x01000000):MQRFH2 = (
(0x03000000):Version = 2
(0x03000000):Format = ' '
(0x03000000):Encoding = 546
(0x03000000):CodedCharSetId = 437
(0x03000000):Flags = 0
(0x03000000):NameValueCCSID = 1208
(0x01000000):usr = (
(0x01000000):filename = (
(0x02000000): = 'tradeExp.idx'
)
)
(0x01000000):mcd = (
(0x01000000):Msd = (
(0x02000000): = 'mrm'
)
(0x01000000):Set = (
(0x02000000): = 'IS_MS_IDX_2007'
)
(0x01000000):Type = (
(0x02000000): = 'TRADEMESSAGE'
)
(0x01000000):Fmt = (
(0x02000000): = 'TDS'
)
)
)
(0x01000021):MRM = (
(0x01000013):TradeMessageBody = (
(0x0300000B):AAA-CODE = 'code2'
(0x0300000B):BBBB-CODE = 'EA'
(0x0300000B):CCCC-DATE = '070117'
.
.
.
.
.
and so on
(0x01000013):TradeMessageBody = (
(0x0300000B):AAA-CODE = 'code1'
(0x0300000B):BBBB-CODE = 'AIR EUR'
(0x0300000B):CCCC-DATE = '070117'
.
.
.
.
.
and so on
regards |
|
Back to top |
|
 |
datspats |
Posted: Wed May 09, 2007 3:48 am Post subject: |
|
|
Voyager
Joined: 12 Apr 2007 Posts: 80 Location: Mumbai
|
Refresh...Please repond as this is very urgent issue.
regards |
|
Back to top |
|
 |
jefflowrey |
Posted: Wed May 09, 2007 3:58 am Post subject: |
|
|
Grand Poobah
Joined: 16 Oct 2002 Posts: 19981
|
So what you're saying is, given the message you showed the trace of, when you execute the code
SET something = InputRoot.MRM.TradeMessageBody[1]."AAA-CODE";
Then the "something" variable is NULL, and not 'code2'? _________________ I am *not* the model of the modern major general. |
|
Back to top |
|
 |
sarat |
Posted: Wed May 09, 2007 4:02 am Post subject: |
|
|
 Centurion
Joined: 29 Jun 2005 Posts: 136 Location: India
|
Try using FIELDVALUE....... _________________ With Regards,
Sarat. |
|
Back to top |
|
 |
datspats |
Posted: Wed May 09, 2007 6:31 am Post subject: |
|
|
Voyager
Joined: 12 Apr 2007 Posts: 80 Location: Mumbai
|
SET something = "InputRoot"."MRM"."TradeMessageBody"[1]."AAA-CODE"; then something is null.
anyways USER Trace shows also the same as NULL is assigned to the something.
regards |
|
Back to top |
|
 |
mlafleur |
Posted: Wed May 09, 2007 6:37 am Post subject: |
|
|
Acolyte
Joined: 19 Feb 2004 Posts: 73
|
|
Back to top |
|
 |
santy |
Posted: Thu May 10, 2007 6:11 am Post subject: |
|
|
Centurion
Joined: 03 Nov 2006 Posts: 141
|
Hi datspats,
Can you try this code:
SET temp = InputRoot.MRM.DataMessageBody[1] ;
------
Else
SET temp = InputBody.DataMessageBody[1] ; |
|
Back to top |
|
 |
|