Você pode utilizar uma variável de tipo REFERENCE como uma referência dinâmica para navegar por uma árvore de mensagens. Isso atua de maneira semelhante a um cursor de mensagem ou ponteiro de variável. Geralmente, é mais simples e mais eficiente utilizar variáveis de preferência em vez de índices matriciais ao acessar estruturas repetitivas. As variáveis de referência são aceitas em qualquer lugar. As referências de campos são aceitas e são fornecidas com um conjunto de instruções e funções para permitir a manipulação detalhada de árvores de mensagens.
Você deve declarar uma referência dinâmica antes de utilizá-la. Uma referência dinâmica é declarada e inicializada e uma única instrução. O exemplo a seguir mostra como criar e utilizar uma referência.
-- Declare the dynamic reference DECLARE myref REFERENCE TO OutputRoot.XML.Invoice.Purchases.Item[1]; -- Continue processing for each item in the array WHILE LASTMOVE(myref)=TRUE DO -- Add 1 to each item in the array SET myref = myref + 1; -- Move the dynamic reference to the next item in the array MOVE myref NEXTSIBLING; END WHILE;
Esse exemplo declara uma referência dinâmica, myref, que aponta para o primeiro item na matriz em Purchases.O valor no primeiro item é incrementado em um e o ponteiro (referência dinâmica) é movido para o próximo item. Mais uma vez o valor do item é incrementado em um. Esse processo continua até o ponteiro mover para fora do escopo da matriz da mensagem (todos os itens dessa matriz foram processados) e a função LASTMOVE retornar FALSE.
O exemplo abaixo mostra exemplos adicionais.
DECLARE ref1 REFERENCE TO InputBody.Invoice.Purchases.Item[1]; DECLARE ref2 REFERENCE TO InputBody.Invoice.Purchases.NonExistentField; DECLARE scalar1 CHARACTER; DECLARE ref3 REFERENCE TO scalar1;
No segundo exemplo, ref2 está definido para apontar para InputBody, porque o campo especificado não existe.
Com exceção da instrução MOVE, que altera a posição da referência dinâmica, você pode utilizar uma referência dinâmica em qualquer local em que utiliza uma referência estática. O valor da referência dinâmica em qualquer expressão ou instrução é o valor do campo ou variável para o qual ela aponta. Por exemplo, utilizando a mensagem em Mensagem de Exemplo, o valor de Invoice.Customer.FirstName será Andrew. Se a referência dinâmica myref for definida para apontar para o campo FirstName da seguinte maneira:
DECLARE myref REFERENCE TO Invoice.Customer;
o valor de myref é Andrew. Você também pode estender essa referência dinâmica da seguinte forma:
SET myref.Billing.Address[1] = 'Oaklands';
Isso altera o endereço no exemplo para Oaklands Hursley Village Hampshire SO213JR.
A posição de uma referência dinâmica permanece fixa mesmo se uma árvore for modificada. Para ilustrar este ponto, as etapas a seguir utilizam a mensagem ilustrada em Mensagem de Exemplo como sua mensagem de entrada e criam uma versão modificada dessa mensagem como uma de saída:
DECLARE ref1 REFERENCE TO OutputRoot.XML.Invoice.Purchases.Item[1];
CREATE PREVIOUSSIBLING OF ref1 VALUES 'Item';
Conceitos relacionados
Fluxos de Mensagem
ESQL
Modelagem de Mensagens
Tarefas relacionadas
Projetando um Fluxo de Mensagens
Definindo o Conteúdo do Fluxo de Mensagens
Gerenciando Arquivos ESQL
Referências relacionadas
Nó Compute
Nó Database
Nó Filter
ESQL
Instrução DECLARE
Instrução IF
Função LASTMOVE
Instrução MOVE
Instrução SET
Instrução WHILE
Mensagem de Exemplo
Avisos |
Marcas |
Downloads |
Biblioteca |
Suporte |
Feedback
![]() ![]() |
ak04864_ |