Acessando Várias Ocorrências Conhecidas de um Elemento

Ao referir-se a ou criar o conteúdo de mensagens, é muito provável que os dados contenham campos de repetição. Se souber quantas instâncias existem de um campo de repetição, e desejar acessar uma instância específica de tal campo, será possível utilizar um índice de matriz como parte de uma referência de campo.

Por exemplo, talvez você queira filtrar a primeira linha de um endereço para encaminhar a entrega de um pedido. Três instâncias do elemento Billling.Address estão sempre presentes na mensagem de amostra. Para testar a primeira linha, grave uma expressão, tal como:

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

O índice da matriz [1] indica que esta é a primeira instância do campo de repetição de seu interesse (os índices da matriz começam com 1). Um índice da matriz como esse pode ser utilizado em qualquer ponto em uma referência de campo, portanto, você pode, por exemplo, filtrar o seguinte teste:

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

Você pode fazer referência à última instância de um campo de repetição, utilizando o índice de matriz especial [<] e as instâncias relativas à última (por exemplo, a penúltima), da seguinte forma:

Você também pode utilizar o índice da matriz [>] para representar o primeiro elemento e elementos relativos ao primeiro elemento de forma semelhante.

Os exemplos a seguir se referem à mensagem Invoice utilizando estes índices:

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

Você também pode utilizar esses índices especiais para elementos que se repetem um número de vezes desconhecido.

Excluindo Campos de Repetição

Se você transmitir uma mensagem com várias repetições de um elemento através de um fluxo de mensagens e desejar excluir algumas delas, lembre-se de que a numeração das repetições é reordenada após cada exclusão. Por exemplo, se você tiver uma mensagem com cinco repetições de um elemento específico e tiver o seguinte ESQL no fluxo de mensagens:

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

Você pode esperar que os elementos um e quatro sejam excluídos. No entanto, como os elementos de repetição estão armazenados em uma pilha, quando você exclui um, o que está acima dele fica em seu lugar. Isso significa que, no exemplo acima, os elementos um e cinco serão excluídos. Para evitar esse problema, é recomendável fazer exclusões na ordem inversa, ou seja, excluir o elemento quatro primeiro, em seguida, excluir o elemento um.

Avisos | Marcas Registradas | Downloads | Biblioteca | Suporte | Feedback
Direitos Autorais IBM Corporation 1999, 2006 Última Atualização: 1 Sep 2006
ak04862_