Comando LOOP
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.
Sintaxe
LOOP WHILE teste
comando
<...n>
END
Parâmetros
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. |
Exemplos
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ê:
- Usa um comando GROUP para processar a tabela registro a registro.
- Calcula o número de departamentos (n) associados a cada registro.
- 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, com cada iteração do loop extraindo o registro com um código único para a tabela resultado1
END
GROUP
v_quantidade_departamentos = OCCURS(Código_Depto;',')
v_contador = 0
LOOP WHILE v_contador <= v_quantidade_departamentos
v_depto = SPLIT(Código_Depto; ','; (v_contador + 1))
EXTRACT FIELDS Número_Fatura, Valor, v_depto AS "Departamento" TO resultado1
v_contador = v_contador + 1
END
END
Observações
Dica
Para ver tutoriais detalhados cobrindo os comandos LOOP e GROUP, consulte Estruturas de controle e 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.