Executa repetidamente uma série de comandos do ACLScript em um registro enquanto uma condição especificada é avaliada como verdadeira.

Nota

O comando LOOP deve estar incluído dentro do comando GROUP.

LOOP WHILE teste
  comando
  <...n>
END
Nome Descrição
WHILE teste

O teste que deve ser avaliado como verdadeiro para que os comandos dentro do comando LOOP sejam executados. Se o teste for avaliado como verdadeiro, os comandos serão executados repetidamente até que o teste seja avaliado como falso.

comando <...n>

Um ou mais comandos para execução.

Você pode inserir vários comandos dentro do comando LOOP. Cada comando deve iniciar em uma nova linha.

END O final do comando LOOP.

Divisão de um campo delimitado por vírgula

Você tem uma tabela com dados de fatura e precisa isolar informações específicas para valores de fatura por departamento. Uma fatura pode ser relacionada a mais de um departamento, e os códigos de departamento são armazenados em formato delimitado por vírgulas na tabela.

Para extrair os valores de fatura por departamento, você:

  1. Usa um comando GROUP para processar a tabela registro a registro.
  2. Calcula o número de departamentos (n) associados a cada registro.
  3. Usa o comando LOOP para iterar o registro n vezes para extrair dados de cada departamento associado ao registro.

 

COMMENT
Usa GROUP para contar vírgulas em cada campo de código de departamento como forma de identificar quantos departamentos estão associados ao registro
Executa LOOP em cada registro para cada código do campo, extraindo cada código em seu próprio registro
END
GROUP
  v_quantidade_departamentos = OCCURS(Código_Departamento;',')
  v_contador = 0
  LOOP WHILE v_contador <= v_quantidade_departamentos
    v_depto = SPLIT(Código_Departamento; ','; (v_contador + 1))
    EXTRACT FIELDS Número_Fatura, Valor_Fatura, v_depto AS "Departamento" TO resultado1
    v_contador = v_contador + 1		
  END
END

Dica

Para ver um tutorial detalhado cobrindo os comandos LOOP e GROUP, consulte Agrupamento e loops.

Quando usar LOOP

Os loops são utilizados com frequência quando um registro contém segmentos de dados repetidos que você quer processar.

Como funciona?

Cada comando LOOP deve especificar uma condição WHILE para a ser testada e ser fechado com uma instrução END. Os comandos entre LOOP e END serão executados repetidamente para o registro atual enquanto o teste especificado for verdadeiro.

Se inicialmente o resultado do teste for falso, os comandos não serão executados.

Como evitar loops infinitos

Para evitar a criação de um "loop infinito", certifique-se de que o teste especificado eventualmente retornará falso. Você também pode usar o comando SET LOOP para evitar um loop infinito.