Prevención y diagnóstico de bucles AdvPL
Explicita avance, condición de salida y límite del bucle.
Descripción general
Antes de optimizar, identifique qué cambia la condición de continuidad. En consultas, Eof y DbSkip deben usar el alias de la consulta aunque el cuerpo posicione otra tabla. Loop puede omitir el avance al final del cuerpo: cada camino debe avanzar o salir. El ejemplo en memoria incluye un límite y termina antes por la condición de negocio. Diagnostique con contadores e identificadores técnicos sin datos personales; revise reintentos ilimitados, bloqueos y validaciones reentrantes. (Fuentes: refs. 1–2.)
Ejemplo comentado
#Include "Protheus.ch"
User Function Ed597()
Local nPaso := 0
Local nLimite := 10
// Cada pasada avanza; el límite acota el trabajo.
While nPaso < nLimite
nPaso++
If nPaso == 3
Exit
EndIf
EndDo
ConOut(nPaso)
Return NilImprime 3 con avance y salida explícitos. El límite no sustituye errores ni cancelación. En revisión: ejemplo editorial no compilado ni ejecutado en Protheus. Comprobar includes, release, RDD y contexto antes de probar.
- Un contador no interrumpe una llamada interna bloqueada. Mida el tramo lento y compruebe cada alias.
- En revisión: ejemplo editorial no compilado ni ejecutado en Protheus. Comprobar includes, release, RDD y contexto antes de probar.

Comentarios
Todavía no hay comentarios aprobados.
Inicia sesión con Google o Microsoft para comentar.