Usina BRAdvPL Guia
Entrar
← Todos os tópicos
GUIA PRÁTICOEm revisão

Prevenção e diagnóstico de loops em AdvPL

Torna explícitos o avanço, a condição de saída e o limite de um laço.

Prevenção e diagnóstico de loops em AdvPLAdvPL
01 · VISÃO GERAL

Visão geral

Antes de otimizar um laço, identifique o que muda a condição de continuidade. Em consultas, Eof e DbSkip devem atuar no alias da consulta mesmo quando o corpo posiciona outra tabela. Um Loop pode saltar o avanço colocado no fim do corpo; prefira organizar o fluxo para que cada caminho avance ou encerre. O exemplo usa memória e um limite de trabalho: a condição de negócio encerra antes do teto. Para diagnosticar, registre contadores e identificadores técnicos sem dados pessoais, compare o último progresso e procure tentativas sem limite, travas e validações reentrantes. (Fontes: refs. 1–2.)

03 · EXEMPLO PRÁTICO

Exemplo comentado

#Include "Protheus.ch"

User Function Ed597()
    Local nPasso := 0
    Local nLimite := 10
    // O incremento ocorre em toda passagem; o teto limita o trabalho.
    While nPasso < nLimite
        nPasso++
        If nPasso == 3
            Exit
        EndIf
    EndDo
    ConOut(nPasso)
Return Nil
Resultado esperado

Imprime 3: há progresso e saída explícitos. O teto não substitui tratamento de erro ou cancelamento. Em revisão: exemplo editorial não compilado nem executado em Protheus. Conferir includes, release, RDD e contexto antes de homologar.

BOAS PRÁTICAS
  • Um contador não interrompe uma chamada interna bloqueada. Meça o trecho lento e confira o alias de cada operação.
  • Em revisão: exemplo editorial não compilado nem executado em Protheus. Conferir includes, release, RDD e contexto antes de homologar.

Conteúdos relacionados

REFERÊNCIAS
  1. TOTVS. Desenvolvendo queries no Protheus. Seções de varredura e query de recno. Consulta em 2026-10-27.
  2. Atilio. dan-atilio/AdvPL. Maratona de Exemplos/Exemplo_421_Funcao_RetSQLName.prw. Arquivo completo consultado; adaptação editorial. Consulta em 2026-10-27.
Situação
Em revisão
Página criada em
Última revisão em
Idioma original
Português
Revisão
Usina.BR
0 comentário(s) aprovado(s)

Comentários

Ainda não há comentários aprovados.

Entre com Google ou Microsoft para comentar.

Powered by Usina Docs · Alpha