访问元素的已知的多次出现

当您引用或创建消息内容时,很有可能软件包含重复字段。 如果您知道重复字段有多少个实例,且要访问这样的字段的特定实例,可以将数组下标用作为字段引用的一部分。

例如,您可能希望在地址的第一行伤进行过滤,以加快订单的发货速度。 元素 Billling.Address 的三个实例总是显示在同一消息中。 要测试第一行,请编写如下表达式:

IF Body.Invoice.Customer.Billing.Address[1] = 'Patent Office' THEN
      DO;
        -- more ESQL --
END IF;

数组下标 [1] 表明它是您感兴趣的重复字段的第一个实例(数组下标从 1 开始)。这样的数组下标可在字段引用的任何点上使用,因此,例如,可下面测试上的过滤器中使用:

IF Body.Invoice."Item"[1].Quantity > 2 THEN
      DO;
        -- more ESQL --
END IF;

使用特殊的 [<] 数组下标,您可以引用重复字段的最后一个实例,并引用与最后一个(例如,倒数第二个)相关的实例,如下:

还可以使用数组下标 [>] 来表示第一个元素,以及以类似方式与第一个元素相关的元素。

下例使用这些下标引用发票消息:

IF Body.Invoice.Customer.Billing.Address[<] = 'Hampshire' THEN
         DO;
        -- more ESQL --
END IF;
IF Body.Invoice.Customer.Billing.Address[<2 ] = 'Southampton' THEN
      DO;
        -- more ESQL --
END IF;

还可以使用重复未知次数的元素的特殊下标。

删除重复字段

如果在消息流中传递带有多个重复元素的消息,且您要删除一些重复元素,您应该知道每次删除后将重新排序重复的编号。例如,如果您的消息中特定元素重复了五次,且在消息流中您有以下 ESQL:

SET OutputRoot.MRM.e_PersonName[1] = NULL;
SET OutputRoot.MRM.e_PersonName[4] = NULL;

您可能期待元素一和四被删除。但是,因为重复元素存储在堆栈中,您删除一个元素后,它上面的元素将取代它的位置。这意味着在上面的示例中,元素一和五将被删除。要避免此问题,建议您以相反的顺序进行删除,即先删除元素四再删除元素一。

声明 | 商标 | 下载 | 书库 | 支持 | 反馈
Copyright IBM Corporation 1999, 2006 最后一次更新时间:2006/08/14
ak04862_