Lecciones del módulo (2/2)
Decisiones con IF y EVALUATE
La toma de decisiones en COBOL se realiza principalmente mediante la instrucción condicional IF y la estructura de selección múltiple EVALUATE (análoga a switch o match en los lenguajes modernos).
La instrucción condicional IF
La sintaxis fundamental de la instrucción IF es:
IF condición
instrucciones-si-verdadero
ELSE
instrucciones-si-falso
END-IF.
En las versiones modernas de COBOL (COBOL-85 y posteriores), la instrucción debe finalizar explícitamente con END-IF. en lugar de confiar únicamente en el punto final ., lo que reduce significativamente los errores de parsing y de lógica.
Condiciones comunes
- Mayor que:
>oGREATER THAN - Menor que:
<oLESS THAN - Igual a:
=oEQUAL TO - Mayor o igual que:
>=oGREATER THAN OR EQUAL TO - Menor o igual que:
<=oLESS THAN OR EQUAL TO
IF WS-BALANCE < 0
DISPLAY "CONTO IN ROSSO"
ELSE
DISPLAY "CONTO ATTIVO"
END-IF.
La instrucción EVALUATE
Cuando necesitamos comparar una variable con múltiples valores discretos, el uso de varios IF anidados puede volverse complejo. La instrucción EVALUATE resuelve este problema estructurando las opciones de forma ordenada:
EVALUATE WS-USER-ROLE
WHEN "ADMIN"
DISPLAY "ACCESSO COMPLETO"
WHEN "EDITOR"
DISPLAY "ACCESSO EDIT"
WHEN OTHER
DISPLAY "ACCESSO LIMITATO"
END-EVALUATE.
WHEN OTHER: Identifica la rama de fallback (equivalente adefaulto alelsefinal).END-EVALUATE.: Concluye la estructura.
Pruébalo tú mismo
Escribe un bloque IF-ELSE-END-IF que verifique si la variable WS-USER-AGE es mayor o igual a 18. En caso afirmativo imprime 'ADULT', de lo contrario imprime 'MINOR' usando DISPLAY.
Mostrar pista
Usa >= para la comparación, DISPLAY para la salida, y finalmente END-IF. (con el punto al final del bloque).
Solución disponible después de 3 intentos
Completa la estructura EVALUATE para verificar la variable WS-STATUS. Si el valor es 'A' imprime 'ACTIVE', si es 'I' imprime 'INACTIVE', de lo contrario para cualquier otro valor imprime 'UNKNOWN'.
Mostrar pista
Escribe las ramas WHEN individuales seguidas por el DISPLAY correspondiente, y usa WHEN OTHER para gestionar la opción por defecto.
Solución disponible después de 3 intentos