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 » Using Cardinality for Repeating Segments in XML.

Post new topic  Reply to topic
 Using Cardinality for Repeating Segments in XML. « View previous topic :: View next topic » 
Author Message
Kool-Aid
PostPosted: Thu Sep 16, 2004 12:31 pm    Post subject: Using Cardinality for Repeating Segments in XML. Reply with quote

Novice

Joined: 22 Apr 2004
Posts: 22

Using ESQL in WMQI 2.1 I am trying to pass along 4 XML fields (TABNAM, IDOCTYP, SNDPRN, and PLANT) and 3 additional XML fields (SEGNAM, NAME_CHAR, CHAR_VALUE) that come from a repeating segment into string data. I have been successful at getting the first set of non repeating fields but I have not been able to get the repeating fields. There is something wrong in my cardinality logic in my ESQL code (see below). When I complete a debug session there is no presence of the repeating segments. Are there any suggestions:

Sample of Input data (The is evaluated by the XML Parser):
<ZPROCMES>
<IDOC BEGIN="1">
<EDI_DC40 SEGMENT="1">
<TABNAM>EDI_DC40</TABNAM>
<IDOCTYP>ZPROCMES</IDOCTYP>
<SNDPRN>RM06_PMX</SNDPRN>
</EDI_DC40>
<ZRCOMHAPI SEGMENT="1">
<PLANT></PLANT>
<ZRCOMEAPI SEGMENT="1">
<SEGNAM>ZRCOMEAPI</SEGNAM>
<NAME_CHAR>PPPI_PROCESS_ORDER</NAME_CHAR>
<CHAR_VALUE>DWI033</CHAR_VALUE>
</ZRCOMEAPI>
<ZRCOMEAPI SEGMENT="1">
<SEGNAM>ZRCOMEAPI</SEGNAM>
<NAME_CHAR>PPPI_PHASE</NAME_CHAR>
<CHAR_VALUE>20</CHAR_VALUE>
</ZRCOMEAPI><ZRCOMEAPI SEGMENT="1">
<SEGNAM>ZRCOMEAPI</SEGNAM>
<NAME_CHAR>PPPI_START_DATE</NAME_CHAR>
<CHAR_VALUE>20040813</CHAR_VALUE>
</ZRCOMEAPI>

Current Output:
EDI_DC40 ZPROCMES RM06_PMX 000000
*As you can see I don't get any of the repeating fields.*

What I expect to see:
EDI_DC40 ZPROCMES RM06_PMX 000000
ZRCOMEAPIPPPI_PROCESS_ORDERDWI033
ZRCOMEAPIPPPI_PHASE20
ZRCOMEAPIPPPI_START_DATE20040813

My ESQL Code is as follows (I built a message set for the output message):
SET OutputRoot.Properties.MessageFormat = 'CWF';

DECLARE HOLDING INTEGER;
DECLARE A INTEGER;
DECLARE Num_of_Repeaters_SAP INTEGER;

SET "OutputRoot"."MRM"."ZPROCMES_NON_REPEAT_SEG"."TABNAM"
= "InputBody"."ZPROCMES"."IDOC"."EDI_DC40"."TABNAM" ;
SET "OutputRoot"."MRM"."ZPROCMES_NON_REPEAT_SEG"."IDOCTYP" = "InputBody"."ZPROCMES"."IDOC"."EDI_DC40"."IDOCTYP" ;
SET "OutputRoot"."MRM"."ZPROCMES_NON_REPEAT_SEG"."SNDPRN" = "InputBody"."ZPROCMES"."IDOC"."EDI_DC40"."SNDPRN" ;
SET "OutputRoot"."MRM"."ZPROCMES_NON_REPEAT_SEG"."PLANT" = "InputBody"."ZPROCMES"."IDOC"."ZRCOMHAPI"."PLANT" ;

--Repeating ZRCOMEAPI Segment (M/R)
SET HOLDING = CARDINALITY("InputRoot"."ZPROCMES"."IDOC"."ZRCOMHAPI"."ZRCOMEAPI"[]);

SET A = 1;
SET Num_of_Repeaters_SAP = 0;

WHILE A <= HOLDING DO

SET "OutputRoot"."MRM"."ZPROCMES_HEADER_SEGMENT"."ZPROCMES_REPEATER_SEGMENT"."SEGNAM" = "InputBody"."ZPROCMES"."IDOC"."ZRCOMHAPI"."ZRCOMEAPI"[A]."SEGNAM" ;
SET "OutputRoot"."MRM"."ZPROCMES_HEADER_SEGMENT"."ZPROCMES_REPEATER_SEGMENT"."PROC_MESS_ID_TMP" = "InputBody"."ZPROCMES"."IDOC"."ZRCOMHAPI"."ZRCOMEAPI"[A]."PROC_MESS_ID_TMP" ;
SET "OutputRoot"."MRM"."ZPROCMES_HEADER_SEGMENT"."ZPROCMES_REPEATER_SEGMENT"."NAME_CHAR" = "InputBody"."ZPROCMES"."IDOC"."ZRCOMHAPI"."ZRCOMEAPI"[A]."NAME_CHAR" ;
SET "OutputRoot"."MRM"."ZPROCMES_HEADER_SEGMENT"."ZPROCMES_REPEATER_SEGMENT"."CHAR_VALUE" = "InputBody"."ZPROCMES"."IDOC"."ZRCOMHAPI"."ZRCOMEAPI"[A]."CHAR_VALUE" ;
SET "OutputRoot"."MRM"."ZPROCMES_HEADER_SEGMENT"."ZPROCMES_REPEATER_SEGMENT"."DATA_TYPE" = "InputBody"."ZPROCMES"."IDOC"."ZRCOMHAPI"."ZRCOMEAPI"[A]."DATA_TYPE" ;

SET Num_of_Repeaters_SAP = Num_of_Repeaters_SAP + 1;

SET A = A + 1;
END WHILE;

SET "OutputRoot"."MRM"."ZPROCMES_HEADER_SEGMENT"."REPEATS_EAPI" = Num_of_Repeaters_SAP;
SET "OutputRoot"."MRM"."ZPROCMES_HEADER_SEGMENT"."COUNT_EAPI" = Num_of_Repeaters_SAP;

*Note REPEATS_EAPI and COUNT_EAPI never get populated. There value is "0" when it should be "3" for the three repeating segments in the input data*
Back to top
View user's profile Send private message
JT
PostPosted: Thu Sep 16, 2004 12:39 pm    Post subject: Reply with quote

Padawan

Joined: 27 Mar 2003
Posts: 1564
Location: Hartford, CT.

Try:
Quote:
SET HOLDING = CARDINALITY("InputRoot"."XML"."ZPROCMES"."IDOC"."ZRCOMHAPI"."ZRCOMEAPI"[]);
Back to top
View user's profile Send private message
EddieA
PostPosted: Thu Sep 16, 2004 2:59 pm    Post subject: Reply with quote

Jedi

Joined: 28 Jun 2001
Posts: 2453
Location: Los Angeles

Or, more likely, you meant:
Quote:
SET HOLDING = CARDINALITY("InputBody"."ZPROCMES"."IDOC"."ZRCOMHAPI"."ZRCOMEAPI"[]);

Cheers,
_________________
Eddie Atherton
IBM Certified Solution Developer - WebSphere Message Broker V6.1
IBM Certified Solution Developer - WebSphere Message Broker V7.0
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 » Using Cardinality for Repeating Segments in XML.
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.