Acceso a las diferentes apariciones conocidas de un elemento

Cuando hace referencia a o cuando crea el contenido de los mensajes, es muy probable que los datos contengan campos de repetición. Si sabe el número de instancias de una campo que se repite y desea acceder a una instancia específica de dicho campo, puede utilizar un índice de matriz como parte de una referencia de campo.

Por ejemplo, es posible que desee filtrar la primera línea de una dirección, para acelerar la entrega de un pedido. En el mensaje de ejemplo, siempre aparecen tres instancias del elemento Billling.Address. Para comprobar la primera línea, escriba una expresión similar a la siguiente:

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

El índice de matriz [1] indica que es la primera instancia del campo de repetición en el que está interesado (los índices de matriz comienzan por el 1). Se puede utilizar un índice de matriz como este en cualquier punto de una referencia de campo para, por ejemplo, filtrar la prueba siguiente:

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

Puede hacer referencia a la última instancia de un campo de repetición utilizando el índice de matriz especial [<] y también a instancias relativas a la última (por ejemplo, la antepenúltima), como se indica a continuación.

También puede utilizar el índice de matriz [>] para representar el primer elemento y los elementos relativos al primer elemento del mismo modo.

Los ejemplos siguientes hacen referencia al mensaje Invoice utilizando estos índices:

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;   

También puede utilizar estos índices especiales para elementos que se repiten un número de veces desconocido.

Supresión de campos que se repiten

Si pasa un mensaje con varias repeticiones de un elemento a través de un flujo de mensajes y desea suprimir algunas de las repeticiones, tenga en cuenta que el orden de la numeración de las repeticiones se modifica después de cada supresión. Por ejemplo, si tiene un mensaje con cinco repeticiones de un elemento determinado y en el flujo de mensajes tiene el ESQL siguiente:

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

Es posible que espere que los elementos uno y cuatro se supriman. No obstante, debido a que los elementos de repetición se almacenan en una pila, cuando suprime uno, el anterior ocupa su lugar. Esto significa que en el ejemplo anterior los elementos uno y cinco se suprimen. Para evitar este problema, suprima en orden inverso, esto es, suprime en primer lugar el elemento cuatro y, a continuación, suprima el elemento uno.

Avisos | Marcas registradas | Descargas | Biblioteca | Soporte | Su opinión
Copyright IBM Corporation 1999, 2006 Última actualización: 22/08/2006
ak04862_