expressão lógicaCondição reavaliada antes de cada iteração. O laço continua somente enquanto seu resultado for .T.
AdvPL GuiaWHILE <expressão lógica> ... ENDDORepete um bloco de comandos enquanto uma expressão lógica permanecer verdadeira.
A estrutura WHILE ... ENDDO avalia a condição antes de cada iteração. Se o resultado for verdadeiro (.T.), o bloco é executado; quando for falso (.F.), o processamento continua após ENDDO. EXIT encerra imediatamente o laço e LOOP retorna ao WHILE, reavaliando a condição sem executar o restante do bloco atual.
WHILE <expressão lógica> ... ENDDOexpressão lógicaCondição reavaliada antes de cada iteração. O laço continua somente enquanto seu resultado for .T.
comandosInstruções executadas em cada passagem enquanto a condição permanecer verdadeira.
User Function ExWhilePares()
Local nNumero := 0
Local nSoma := 0
While nNumero <= 100
nSoma += nNumero
nNumero += 2
EndDo
MsgInfo("Soma dos pares: " + CValToChar(nSoma))
ReturnA condição é verificada antes de cada passagem. nNumero avança de dois em dois até ultrapassar 100.
User Function ExWhileTabela()
DbSelectArea("SA1")
SA1->(DbGoTop())
While !SA1->(Eof())
ConOut(SA1->A1_COD + " - " + SA1->A1_NOME)
SA1->(DbSkip())
EndDo
ReturnO laço processa cada registro até EOF() indicar o fim da área. DbSkip() é indispensável para avançar.
User Function ExWhileControle()
Local nItem := 0
While nItem < 20
nItem++
If nItem % 2 != 0
Loop
EndIf
If nItem > 10
Exit
EndIf
ConOut(CValToChar(nItem))
EndDo
ReturnO contador é atualizado antes de LOOP. Valores ímpares são ignorados e EXIT encerra o laço após o limite desejado.
© 2026 Usina.BR. Todos os direitos reservados. TOTVS, Protheus, Microsiga e seus respectivos logotipos são marcas de titularidade da TOTVS S.A. AdvPL é uma linguagem de programação desenvolvida pela TOTVS. O AdvPL Guia é um projeto independente, sem vínculo, representação, patrocínio ou afiliação com a TOTVS S.A., suas franquias ou representantes.