Usina BRAdvPL Guia
Entrar
← Todos os tópicos
COMANDOPublicado

DO CASE ... ENDCASE

DO CASE ... CASE <expressão lógica> ... [OTHERWISE ...] ENDCASE

Seleciona e executa o primeiro bloco cuja expressão CASE resultar em verdadeiro.

DecisãoControle de fluxoComandos
01 · VISÃO GERAL

Visão geral

DO CASE ... ENDCASE organiza decisões com várias alternativas. As expressões CASE são avaliadas na ordem em que aparecem e somente o bloco associado à primeira condição verdadeira (.T.) é executado. As condições seguintes são ignoradas. A cláusula opcional OTHERWISE trata a situação em que nenhum CASE é verdadeiro.

02 · SINTAXE

Sintaxe

DO CASE ... CASE <expressão lógica> ... [OTHERWISE ...] ENDCASE

Parâmetros

CASE expressão
LógicoObrigatório

Condição avaliada em sequência. O primeiro resultado .T. seleciona o bloco que será executado.

comandos
Instruções AdvPLObrigatório

Instruções pertencentes à alternativa selecionada.

OTHERWISE
CláusulaOpcional

Bloco opcional executado quando todas as condições CASE resultarem em .F.

03 · EXEMPLO PRÁTICO

Classificação por trimestre

User Function ExPeriodo()
    Local nMes := Month(Date())
    Local cPeriodo := ""

    Do Case
    Case nMes <= 3
        cPeriodo := "Primeiro trimestre"
    Case nMes <= 6
        cPeriodo := "Segundo trimestre"
    Case nMes <= 9
        cPeriodo := "Terceiro trimestre"
    Otherwise
        cPeriodo := "Quarto trimestre"
    EndCase

    MsgInfo(cPeriodo)
Return
Resultado esperado

Como os meses são testados em ordem crescente, o primeiro limite atendido determina o trimestre. OTHERWISE cobre os meses restantes.

04 · EXEMPLO PRÁTICO

Condições específicas antes das gerais

User Function ExPrioridade(nTotal)
    Local cFaixa := ""

    Do Case
    Case nTotal > 100000
        cFaixa := "Especial"
    Case nTotal > 50000
        cFaixa := "Alta"
    Case nTotal > 10000
        cFaixa := "Média"
    Otherwise
        cFaixa := "Padrão"
    EndCase
Return cFaixa
Resultado esperado

O maior limite aparece primeiro. Se a condição geral fosse colocada antes, as faixas superiores nunca seriam alcançadas.

BOAS PRÁTICAS
  • Ordene as condições da mais específica para a mais abrangente.
  • Use OTHERWISE para tratar valores inesperados ou fornecer um comportamento padrão.
  • Mantenha cada CASE curto e com uma responsabilidade clara.
  • Prefira DO CASE a vários IF independentes quando apenas uma alternativa puder ser executada.
  • Use IF ... ELSEIF ... ELSE ... ENDIF quando essa forma deixar a decisão mais legível para a equipe.
ARMADILHAS COMUNS
  • Somente o primeiro CASE verdadeiro é executado, mesmo que outras condições também sejam verdadeiras.
  • Uma condição abrangente colocada primeiro pode tornar alternativas posteriores inalcançáveis.
  • Sem OTHERWISE, nenhuma instrução interna é executada quando todos os CASE forem falsos.
  • Cada DO CASE precisa ser encerrado com ENDCASE.
  • Condições com efeitos colaterais dificultam compreender a ordem da decisão e devem ser evitadas.

Conteúdos relacionados

REFERÊNCIAS
  1. TOTVS. O Comando DO CASE...ENDCASE. TDN. Criado por Rafaela Rocha Hikiji; última alteração em 21 maio 2012.
  2. TOTVS. Estruturas de Decisão no AdvPL. TDN.
Situação
Publicado
Página criada em
Última revisão em
Idioma original
Português
Revisão
Usina.BR