Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

Sintaxis

 

DO CASE

         CASE <condição>

                    ...

                    < instruções >

                    ...

 

         [ CASE <condição> ]

                    ...

                    < instruções >

                    ...

 

          [ OTHERWISE ]

                    ...

                    < instruções >

                    ...

ENDCASE

 

 

Propósito

 

El comando DO CASE ... ENDCASE es un comando de programación estructurada que selecciona solamente una alternativa entre un conjunto de caminos para el curso del flujo de ejecución. El camino seleccionado es el primero para el que se evalúa una condición especificada como verdadera.

 

 

Argumentos

 

CASE <condição >

 

Define un bloque de instrucciones que se ejecutará si la condición especificada se evalúa como verdadera (.T.).

 

OTHERWISE

 

Define un bloque de instrucciones que se ejecutará si ninguna de las cláusulas CASE <condição> se evalúa como verdadera.

 

 

Utilización

 

El DO CASE es un comando de control que se debe utilizar para determinar la selección de uno entre varios bloques de instrucciones. El bloque ejecutado es aquel cuya condición especificada en la cláusula
CASE se evalúa como verdadera. La ejecución del bloque seleccionado continúa hasta que se encuentre el próximo CASE, OTHERWISE o ENDCASE. Cuando una cláusula CASE se evalúa como verdadera, no se evaluará ninguna otra.

 

Después de la ejecución de las instrucciones contenidas en el bloque seleccionado, el flujo de ejecución se desvía hacia la línea de instrucción inmediatamente después del ENDCASE. Por lo tanto, es obligatoria la existencia del ENDCASE (final del DO CASE) al final de la estructura del comando DO CASE.

 

La cláusula OTHERWISE es un camino alternativo que se seguirá si ninguna condición especificada en las cláusulas CASE se ha evaluado como verdadera. Por lo tanto, si todas las condiciones especificadas en las cláusulas CASE son falsas y existe el comando OTHERWISE, se ejecutará el bloque de instrucciones entre la cláusula OTHERWISE y ENDCASE. Si la cláusula OTHERWISE no se especificó, el flujo de ejecución se desvía a la primera línea de instrucciones después del ENDCASE.

 

Varios comandos DO CASE intercalados están permitidos, es decir, unos dentro de otros, siempre y cuando la intercalación se haga correctamente.

 

Al incluir pares de otras estructuras de control, como el DO CASE ... ENDCASE, IF ... ENDIF, WHILE ... ENDDO y FOR ... NEXT dentro de un DO CASE principal, estas se deben intercalar correctamente. Es decir, se deben iniciar y finalizar dentro de la estructura DO CASE ... ENDCASE principal.

 

No hay limitaciones para el número de estructuras de control que se pueden intercalar. También no hay límite para el número de cláusulas CASE que pueden existir dentro de una estructura DO CASE ... ENDCASE.

 

 

Sugerencias

 

La cláusula CASE <condição> define una declaración condicional que se avaluará como falsa o verdadera. Esta condición debe ser una expresión lógica, tal como los ejemplos abajo:

 

  • A == B
  • nVar1 < 11
  • nVop == 1
  • cNome == “Cosentino”

 

En situaciones en que puede haber sólo una condición evaluada como verdadera o en que solamente se debe ejecutar la primera condición, el uso del DO CASE es más indicado que el comando IF ... ENDIF.

 

Por otro lado, el comando IF ... ELSEIF ... ENDIF se puede utilizar como sustituto del comando DO CASE ... ENDCASE. Su funcionamiento es equivalente: cada CASE corresponde a un ELSEIF y el OTHERWISE al ELSE.

 

Siempre se debe seguir la técnica de sangría. Cada bloque de instrucciones debe estar sangrado (contenido) dentro de un CASE, de acuerdo con el siguiente ejemplo ilustrado.

 

 

Ejemplos

 

La función a continuación, decide sobre el porcentaje de descuento que se aplicará sobre el sueldo de los empleados, de acuerdo con cada rango de sueldo:

 

FUNCTION CalcDesc(nSalario)

 

LOCAL nDescont := 0

 

DO CASE

         CASE nSalario > 12000 .AND. nSalario < 20000

                    nDescont := nSalario * 0.10

 

         CASE nSalario >= 20000 .AND. nSalario < 40000

                    nDescont := nSalario * 0.15

 

         CASE nSalario >= 40000 .AND. nSalario < 60000

                    nDescont := nSalario * 0.20

 

         CASE nSalario >= 60000 .AND. nSalario < 90000

                    nDescont := nSalario * 0.25

 

         CASE nSalario >= 90000 .AND. nSalario < 150000

                    nDescont := nSalario * 0.30

 

         CASE nSalario >= 150000 .AND. nSalario < 200000

                    nDescont := nSalario * 0.40

 

         OTHERWISE

                    nDescont := nSalario * 0.50

ENDCASE

 

RETURN nDescont