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 » Index issue

Post new topic  Reply to topic
 Index issue « View previous topic :: View next topic » 
Author Message
LH33
PostPosted: Thu Oct 02, 2003 8:32 am    Post subject: Index issue Reply with quote

Master

Joined: 21 Nov 2002
Posts: 200

I have a message flow that needs to check two separate indexes for certain values. My problem arises when the first index is sent in with no value.

What I want as ouput is the following:

<Filters>
<Filter index="1">OMSUNKNOWN</Filter>
<Filter index="2">BELAIR</Filter>
</Filters>

What I actually get is the follwoing:

<Filters>
<Filter index="1">OMSUNKNOWN</Filter>
<Filter index="2">UNKNOWN</Filter>
</Filters>

Her is my input XML, followed by my code. Can someone help me determine what I am doing wrong?

Thanks!! Lisa


<CreateJob environment="Test" revision="1.0.0">
<ApplicationArea>
<Sender>
<Component>OMS</Component>
<Confirmation>Always</Confirmation>
<AuthorizationId>OMS Interface</AuthorizationId>
</Sender>
<CreationDateTime>2003-08-28T10:40:03</CreationDateTime>
<BODId>{270F340A-6A8A-4572-A4EC-E7D7317F982C}</BODId>
</ApplicationArea>
<DataArea>
<Create confirm="Always"/>
<Job>
<ExternalNumbers>
<ExternalNumber index="1">OMS:600044</ExternalNumber>
</ExternalNumbers>
<Filters>
<Filter index="1"></Filter>
<Filter index="2">Belair</Filter>
</Filters>
</Job>
</DataArea>
</CreateJob>


Here is the code:

DECLARE FIL1 CHAR;
SET FIL1 = THE ( SELECT ITEM R FROM InputRoot.XML.CreateJob.DataArea.Job.Filters.Filter[] as R where
R.(XML.Attribute)index = '1');

DECLARE FIL2 CHAR;
SET FIL2 = THE ( SELECT ITEM R FROM InputRoot.XML.CreateJob.DataArea.Job.Filters.Filter[] as R where
R.(XML.Attribute)index = '2');

IF FIL1 IS NOT NULL THEN
SET OutputRoot.XML.CreateJob.DataArea.Job.Filters.Filter[1] =
CASE FIL1
WHEN 'TR' THEN 'TR'
WHEN 'CN' THEN 'CN'
WHEN 'CC' THEN 'CC'
WHEN 'ED' THEN 'EDRC'
WHEN 'FR' THEN 'FR'
WHEN 'LP' THEN 'LP'
WHEN 'MI' THEN 'MI'
WHEN 'PT' THEN 'PT'
WHEN 'UG' THEN 'UG'
END;
SET OutputRoot.XML.CreateJob.DataArea.Job.Filters.Filter[1].(XML.Attribute)index=1;
IF ( OutputRoot.XML.CreateJob.DataArea.Job.Filters.Filter[1] <> 'TR' and
OutputRoot.XML.CreateJob.DataArea.Job.Filters.Filter[1] <> 'CN' and
OutputRoot.XML.CreateJob.DataArea.Job.Filters.Filter[1] <> 'CC' and
OutputRoot.XML.CreateJob.DataArea.Job.Filters.Filter[1] <> 'EDRC' and
OutputRoot.XML.CreateJob.DataArea.Job.Filters.Filter[1] <> 'FR' and
OutputRoot.XML.CreateJob.DataArea.Job.Filters.Filter[1] <> 'LP' and
OutputRoot.XML.CreateJob.DataArea.Job.Filters.Filter[1] <> 'MI' and
OutputRoot.XML.CreateJob.DataArea.Job.Filters.Filter[1] <> 'PT' and
OutputRoot.XML.CreateJob.DataArea.Job.Filters.Filter[1] <> 'UG' and
FIL1 IS NOT NULL) THEN
SET OutputRoot.XML.CreateJob.DataArea.Job.Filters.Filter[1] = 'OMSUNKNOWN';
SET OutputRoot.XML.CreateJob.DataArea.Job.Filters.Filter[1].(XML.Attribute)index=1;
END IF;

ELSE
IF FIL1 IS NULL THEN
SET OutputRoot.XML.CreateJob.DataArea.Job.Filters.Filter[1] = 'OMSUNKNOWN';
SET OutputRoot.XML.CreateJob.DataArea.Job.Filters.Filter[1].(XML.Attribute)index=1;
END IF;
END IF;

IF FIL2 IS NOT NULL THEN
DECLARE NEWFIL2 CHAR;
SET NEWFIL2 =
CASE FIL2
WHEN 'Annapolis' THEN 'ANNAPOLIS'
WHEN 'Belair' THEN 'BELAIR'
WHEN 'Cockeysville' THEN 'COCKEYSVIL'
WHEN 'Front Street' THEN 'FRONTST'
WHEN 'Glen Burnie' THEN 'GLENBURNIE'
WHEN 'Howard' THEN 'HOWARD'
WHEN 'Westminster' THEN 'WESTMINSTE'
END;

DECLARE searchRef REFERENCE TO OutputRoot.XML.CreateJob.DataArea.Job.Filters.Filter[1];
DECLARE fieldFound BOOLEAN;
SET fieldFound = 'FALSE';
WHILE ((LASTMOVE(searchRef) = TRUE) AND (fieldFound = FALSE)) DO
IF searchRef.index = '2' THEN
SET searchRef = NEWFIL2;
SET fieldFound = TRUE;
ELSE
MOVE searchRef NEXTSIBLING;
END IF;
SET OutputRoot.XML.CreateJob.DataArea.Job.Filters.Filter[2] = searchRef;
SET OutputRoot.XML.CreateJob.DataArea.Job.Filters.Filter[2].(XML.Attribute)index=2;
END WHILE;
IF ((OutputRoot.XML.CreateJob.DataArea.Job.Filters.Filter[2] <> 'ANNAPOLIS' and
OutputRoot.XML.CreateJob.DataArea.Job.Filters.Filter[2] <> 'BELAIR' and
OutputRoot.XML.CreateJob.DataArea.Job.Filters.Filter[2] <> 'COCKEYSVIL' and
OutputRoot.XML.CreateJob.DataArea.Job.Filters.Filter[2] <> 'FRONTST' and
OutputRoot.XML.CreateJob.DataArea.Job.Filters.Filter[2] <> 'GLENBURNIE' and
OutputRoot.XML.CreateJob.DataArea.Job.Filters.Filter[2] <> 'HOWARD' and
OutputRoot.XML.CreateJob.DataArea.Job.Filters.Filter[2] <> 'WESTMINSTE') or
OutputRoot.XML.CreateJob.DataArea.Job.Filters.Filter[2] IS NULL) THEN
SET OutputRoot.XML.CreateJob.DataArea.Job.Filters.Filter[2] = 'UNKNOWN';
SET OutputRoot.XML.CreateJob.DataArea.Job.Filters.Filter[2].(XML.Attribute)index=2;
END IF;
ELSE
IF FIL2 IS NULL THEN
CREATE FIELD OutputRoot.XML.CreateJob.DataArea.Job.Filters.Filter[2];
SET OutputRoot.XML.CreateJob.DataArea.Job.Filters.Filter[2] = 'UNKNOWN';
SET OutputRoot.XML.CreateJob.DataArea.Job.Filters.Filter[2].(XML.Attribute)index=2;
END IF;
END IF;
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 » Index issue
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.