Fluid Attacks logo
Contact Us
Young hacker smiling
Zero false positives

Expert intelligence + effective automation

Usar Estructuras Condicionales

Necesidad

Usar estructuras condicionales contemplando todos los escenarios posibles y valores por defecto en COBOL.

Contexto

A continuación se describe las circunstancias bajo las cuales la siguiente solución tiene sentido:

  1. Se dispone de una aplicación desarrollada en COBOL.

  2. El código debe ser invocado en algún escenario[1].

  3. El código debe de inicializar las variables que se crean[2].

Solución

  1. En cada estructura condicional empleada en una aplicación COBOL, se recomienda contemplar todos los posibles escenarios como se muestra en esta entrada. A continuación, se inicia la aplicación de prueba declarando la división IDENTIFICATION DIVISION:

    cobolcond.cbl
    1
    2
    3
    4
    5
           IDENTIFICATION DIVISION.
          ******************
          * Identification *
          ******************
           PROGRAM-ID. COBOLCOND.
    

    En el anterior bloque de código, mediante la sentencia PROGRAM-ID se estable el nombre del programa a COBOLCOND.

  2. La división de datos DATA DIVISION contiene dos variables: PLANET-NUMBER de tipo numérico con dos dígitos y PLANET-NAME con soporte para ocho caracteres. Además, en cumplimiento del requisito: "El código debe de inicializar las variables que crea.", se deben inicializar todos los valores de las variables a través del uso de la palabra clave VALUE. Para este caso, "3" y "Tierra" son los valores iniciales para las variables PLANET-NUMBER y PLANET-NAME respectivamente:

    1
    2
    3
    4
    5
    6
    7
    8
          ********
          * Data *
          ********
           DATA DIVISION.
           WORKING-STORAGE SECTION.
           01 PLANET.
               05 PLANET-NUMBER PIC 9(2) VALUE 3.
               05 PLANET-NAME   PIC X(8) VALUE "Tierra".
    
  3. En la división PROCEDURE DIVISION se encuentra la lógica del programa:

    1
    2
    3
    4
    5
          ********
          * Main *
          ********
           PROCEDURE DIVISION.
           MAIN.
    
  4. En un ciclo escogemos los planetas impares (El valor inicial del número es 3 por lo que al ir sumando 2 vemos los impares), mostramos su número y su nombre. En la primer visualización, el programa debe imprimir los valores por defecto inicializados en la división DATA DIVISION:

    1
    2
    3
    4
           DISPLAY PLANET-NUMBER, " - ", PLANET-NAME.
    
           PERFORM 3 TIMES
               COMPUTE PLANET-NUMBER = PLANET-NUMBER + 2
    
  5. Con la palabra clave EVALUATE[3],[4] se determina el nombre del planeta según su número, note como se toma en cuenta el escenario por defecto a través de la palabra clave OTHER (El escenario por defecto es cuando el número no coincide con el de algún planeta):

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
               EVALUATE PLANET-NUMBER
                   WHEN 1 MOVE "Mercurio" TO PLANET-NAME
                   WHEN 2 MOVE "Venus   " TO PLANET-NAME
                   WHEN 3 MOVE "Tierra  " TO PLANET-NAME
                   WHEN 4 MOVE "Marte   " TO PLANET-NAME
                   WHEN 5 MOVE "Jupiter " TO PLANET-NAME
                   WHEN 6 MOVE "Saturno " TO PLANET-NAME
                   WHEN 7 MOVE "Urano   " TO PLANET-NAME
                   WHEN 8 MOVE "Neptuno " TO PLANET-NAME
                   WHEN OTHER MOVE "Invalido" TO PLANET-NAME
               END-EVALUATE
    
               DISPLAY PLANET-NUMBER, " - ", PLANET-NAME
           END-PERFORM.
    
  6. Por medio de la instrucción ACCEPT se obtiene el número ingresado por el usuario:

    1
    2
           DISPLAY "Ingrese un numero de planeta".
           ACCEPT PLANET-NUMBER.
    
  7. Usando el condicional IF[5],[6] se determina el tipo de planeta, observe nuevamente como se deben considerar todos los escenarios por defecto a través del uso de la sentencia ELSE:

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
           IF PLANET-NUMBER IS >= 1 AND PLANET-NUMBER IS <= 8
               IF PLANET-NUMBER IS < 5
                   DISPLAY "Planeta interior"
               ELSE
                   DISPLAY "Planeta exterior"
               END-IF
           ELSE
               DISPLAY "Tipo de planeta desconocido"
           END-IF
    
           STOP RUN.
    
  8. La salida para el anterior programa es la siguiente:

    1
    2
    3
    4
    5
    6
    7
           03 - Tierra
           05 - Jupiter
           07 - Urano
           09 - Invalido
           Ingrese un numero de planeta
           10
           Tipo de planeta desconocido
    

Descargas

Puedes descargar el código fuente pulsando en el siguiente enlace:

  1. cobolcond.cbl contiene la implementación del código anterior.


Service status - Terms of Use