Usina BRGuía AdvPL
Ingresar
← Todos los temas
COMANDOPublicado

DO CASE ... ENDCASE

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

Selecciona y ejecuta el primer bloque cuya expresión CASE resulte verdadera.

DecisiónControl de flujoComandos
01 · DESCRIPCIÓN GENERAL

Descripción general

DO CASE ... ENDCASE organiza decisiones con varias alternativas. Las expresiones CASE se evalúan en orden y solo se ejecuta el bloque asociado a la primera condición verdadera (.T.). Las condiciones siguientes se ignoran. La cláusula opcional OTHERWISE trata la situación en la que ningún CASE es verdadero.

02 · SINTAXIS

Sintaxis

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

Parámetros

CASE expressão
LógicoObligatorio

Condición evaluada en secuencia. El primer resultado .T. selecciona el bloque que se ejecutará.

comandos
Instruções AdvPLObligatorio

Instrucciones AdvPL pertenecientes a la alternativa seleccionada.

OTHERWISE
CláusulaOpcional

Bloque opcional ejecutado cuando todas las condiciones CASE devuelven .F.

03 · EJEMPLO PRÁCTICO

Clasificación por trimestre

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

    Do Case
    Case nMes <= 3
        cPeriodo := "Primer trimestre"
    Case nMes <= 6
        cPeriodo := "Segundo trimestre"
    Case nMes <= 9
        cPeriodo := "Tercer trimestre"
    Otherwise
        cPeriodo := "Cuarto trimestre"
    EndCase

    MsgInfo(cPeriodo)
Return
Resultado esperado

Como los meses se prueban en orden ascendente, el primer límite cumplido determina el trimestre. OTHERWISE cubre los meses restantes.

04 · EJEMPLO PRÁCTICO

Condiciones específicas antes de las generales

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

El límite mayor aparece primero. Si la condición general estuviera antes, los niveles superiores nunca se alcanzarían.

BUENAS PRÁCTICAS
  • Ordena las condiciones desde la más específica hasta la más general.
  • Utiliza OTHERWISE para tratar valores inesperados o proporcionar un comportamiento predeterminado.
  • Mantén cada CASE corto y con una responsabilidad clara.
  • Prefiere DO CASE a varios IF independientes cuando solo una alternativa pueda ejecutarse.
  • Utiliza IF ... ELSEIF ... ELSE ... ENDIF cuando esa forma sea más clara para el equipo.
ERRORES COMUNES
  • Solo se ejecuta el primer CASE verdadero, aunque otras condiciones también sean verdaderas.
  • Una condición amplia colocada primero puede hacer inalcanzables las alternativas posteriores.
  • Sin OTHERWISE, no se ejecuta ninguna instrucción interna cuando todos los CASE son falsos.
  • Cada DO CASE debe terminar con ENDCASE.
  • Las condiciones con efectos secundarios dificultan comprender el orden de la decisión y deben evitarse.

Contenido relacionado

REFERENCIAS
  1. TOTVS. El comando DO CASE...ENDCASE. TDN. Creado por Rafaela Rocha Hikiji; última modificación el 21 de mayo de 2012.
  2. TOTVS. Estructuras de decisión en AdvPL. TDN.
Estado
Publicado
Página creada el
Última revisión el
Idioma original
Portugués
Revisión
Usina.BR