Las sentencias condicionales en COBOL permiten que un programa tome decisiones y ejecute diferentes bloques de código en función de ciertas condiciones. Este es un concepto fundamental en la programación, ya que permite que los programas sean dinámicos y respondan a diferentes situaciones.

Conceptos Clave

  1. IF-ELSE: La estructura básica de decisión en COBOL.
  2. EVALUATE: Similar a la sentencia switch en otros lenguajes de programación.
  3. CONDICIONES: Cómo definir y utilizar condiciones en COBOL.

IF-ELSE

La sentencia IF-ELSE en COBOL se utiliza para ejecutar un bloque de código si una condición es verdadera y otro bloque si la condición es falsa.

Sintaxis

IF condition
    THEN
        statement-1
    ELSE
        statement-2
END-IF.

Ejemplo

IDENTIFICATION DIVISION.
PROGRAM-ID. IfElseExample.

DATA DIVISION.
WORKING-STORAGE SECTION.
01 NUM1 PIC 9(2) VALUE 10.
01 NUM2 PIC 9(2) VALUE 20.
01 RESULT PIC X(20).

PROCEDURE DIVISION.
    IF NUM1 > NUM2
        THEN
            MOVE "NUM1 is greater" TO RESULT
        ELSE
            MOVE "NUM2 is greater" TO RESULT
    END-IF.

    DISPLAY RESULT.
    STOP RUN.

Explicación

  • IDENTIFICATION DIVISION: Define el nombre del programa.
  • DATA DIVISION: Declara las variables NUM1, NUM2 y RESULT.
  • PROCEDURE DIVISION: Contiene la lógica del programa. La sentencia IF compara NUM1 y NUM2 y mueve el resultado correspondiente a la variable RESULT.

EVALUATE

La sentencia EVALUATE en COBOL es similar a la sentencia switch en otros lenguajes de programación. Permite evaluar una expresión y ejecutar diferentes bloques de código basados en el valor de esa expresión.

Sintaxis

EVALUATE expression
    WHEN value-1
        statement-1
    WHEN value-2
        statement-2
    WHEN OTHER
        statement-3
END-EVALUATE.

Ejemplo

IDENTIFICATION DIVISION.
PROGRAM-ID. EvaluateExample.

DATA DIVISION.
WORKING-STORAGE SECTION.
01 DAY-OF-WEEK PIC 9 VALUE 3.
01 DAY-NAME PIC X(10).

PROCEDURE DIVISION.
    EVALUATE DAY-OF-WEEK
        WHEN 1
            MOVE "Monday" TO DAY-NAME
        WHEN 2
            MOVE "Tuesday" TO DAY-NAME
        WHEN 3
            MOVE "Wednesday" TO DAY-NAME
        WHEN 4
            MOVE "Thursday" TO DAY-NAME
        WHEN 5
            MOVE "Friday" TO DAY-NAME
        WHEN 6
            MOVE "Saturday" TO DAY-NAME
        WHEN 7
            MOVE "Sunday" TO DAY-NAME
        WHEN OTHER
            MOVE "Invalid" TO DAY-NAME
    END-EVALUATE.

    DISPLAY DAY-NAME.
    STOP RUN.

Explicación

  • DAY-OF-WEEK: Variable que contiene el día de la semana como un número.
  • EVALUATE: Evalúa el valor de DAY-OF-WEEK y mueve el nombre correspondiente del día a DAY-NAME.

Condiciones

Las condiciones en COBOL se utilizan para comparar valores y pueden ser simples o compuestas.

Condiciones Simples

IF NUM1 = NUM2
    THEN
        DISPLAY "NUM1 is equal to NUM2"
END-IF.

Condiciones Compuestas

IF NUM1 > 10 AND NUM2 < 20
    THEN
        DISPLAY "NUM1 is greater than 10 and NUM2 is less than 20"
END-IF.

Ejercicios Prácticos

Ejercicio 1

Escribe un programa COBOL que lea un número del usuario y determine si es positivo, negativo o cero.

Solución

IDENTIFICATION DIVISION.
PROGRAM-ID. PositiveNegativeZero.

DATA DIVISION.
WORKING-STORAGE SECTION.
01 USER-NUMBER PIC S9(4).

PROCEDURE DIVISION.
    DISPLAY "Enter a number: " WITH NO ADVANCING.
    ACCEPT USER-NUMBER.

    IF USER-NUMBER > 0
        THEN
            DISPLAY "The number is positive."
        ELSE IF USER-NUMBER < 0
            THEN
                DISPLAY "The number is negative."
            ELSE
                DISPLAY "The number is zero."
    END-IF.

    STOP RUN.

Ejercicio 2

Escribe un programa COBOL que determine el mayor de tres números.

Solución

IDENTIFICATION DIVISION.
PROGRAM-ID. LargestOfThree.

DATA DIVISION.
WORKING-STORAGE SECTION.
01 NUM1 PIC 9(2).
01 NUM2 PIC 9(2).
01 NUM3 PIC 9(2).
01 LARGEST PIC 9(2).

PROCEDURE DIVISION.
    DISPLAY "Enter first number: " WITH NO ADVANCING.
    ACCEPT NUM1.
    DISPLAY "Enter second number: " WITH NO ADVANCING.
    ACCEPT NUM2.
    DISPLAY "Enter third number: " WITH NO ADVANCING.
    ACCEPT NUM3.

    IF NUM1 >= NUM2 AND NUM1 >= NUM3
        THEN
            MOVE NUM1 TO LARGEST
        ELSE IF NUM2 >= NUM1 AND NUM2 >= NUM3
            THEN
                MOVE NUM2 TO LARGEST
            ELSE
                MOVE NUM3 TO LARGEST
    END-IF.

    DISPLAY "The largest number is: " LARGEST.

    STOP RUN.

Conclusión

En esta sección, hemos aprendido sobre las sentencias condicionales en COBOL, incluyendo IF-ELSE y EVALUATE. Estas estructuras permiten que los programas tomen decisiones basadas en condiciones, lo que es fundamental para crear programas dinámicos y flexibles. Asegúrate de practicar con los ejercicios proporcionados para reforzar tu comprensión de estos conceptos. En el próximo módulo, exploraremos los constructos de bucle en COBOL.

© Copyright 2024. Todos los derechos reservados