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, 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
Observações
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.