Declaraciones condicionales en COBOL

Mientras escribe un programa, un programador necesita verificar varias condiciones, si la condición es verdadera, entonces se ejecuta un bloque particular de declaraciones, o bien se ejecuta otro bloque de declaraciones. Para comprobar estas condiciones utilizamos declaraciones condicionales . Estas declaraciones devuelven verdadero o falso. Hay varios tipos de sentencias condicionales en Cobol:

  1. Condición relacional.
  2. Estado de la firma.
  3. condición de clase.
  4. Condición de nombre de condición.
  5. Condición negada.
  6. Condición compuesta.
  7. Si condición.
  8. Condición if-else.
  9. Condición If anidada.

Condición relacional:

 Si el programador quiere hacer una comparación relacional entre operando/s o literal/es, entonces usamos operadores relacionales, es decir, < , > , < = , >= , ==. Podemos usar el símbolo relacional particular o podemos deletrearlo en palabras. 

Por ejemplo : 

  • (a > b ) también se puede escribir como (a MAYOR QUE b).
  • (a !< b) también se puede escribir como (a NO ES MENOR QUE b).
  • (a == b) también se puede escribir como (a ES IGUAL A b).

Sintaxis:

Operand-1 [IS][NOT] relational-operator Operand-2.

Ejemplo:

Cobol

IDENTIFICATION DIVISION.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
    77 OPERAND1 PIC 99.
    77 OPERAND2 PIC 99.
    77 OPERAND3 PIC 99.
    77 OPERAND4 PIC 99.
PROCEDURE DIVISION.
    MOVE 8 TO OPERAND1.
    MOVE 5 TO OPERAND2.
    MOVE 4 TO OPERAND3.
    MOVE 4 TO OPERAND4.
    IF (OPERAND1 > OPERAND2)
            DISPLAY "OPERAND1 IS GREATER THAN OPERAND2"
    ELSE
            DISPLAY "OPERAND2 IS GREATER THAN OPERAND2".
    IF (OPERAND3 IS EQUAL TO OPERAND4)
            DISPLAY "OPERAND3 AND OPERAND4 ARE EQUAL"
    ELSE
            DISPLAY "OPERAND3 AND OPERAND4 ARE NOT EQUAL".
    STOP RUN.

Producción:

OPERAND1 IS GREATER THAN OPERAND2
OPERAND3 AND OPERAND4 ARE EQUAL

Estado de la señal: 

La condición de signo determina si un operando particular o una expresión aritmética es Positivo, Negativo o Cero. En la condición Signo, se determina que la condición Positiva es verdadera solo cuando el valor del operando es estrictamente verdadero, es decir, el valor Cero no se trata positivamente en este caso.

Sintaxis:

Operand1/Arithmetic expression IS [NOT] POSITIVE/NEGATIVE/ZERO

Ejemplo:

Cobol

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLOWORLD.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
    77 OPERAND1 PIC 99.
    77 OPERAND2 PIC 99.
PROCEDURE DIVISION.
    MOVE 8 TO OPERAND1.
    MOVE 5 TO OPERAND2.
    IF (OPERAND1 IS POSITIVE)
            DISPLAY "OPERAND1 IS POSITIVE".
    IF (OPERAND2 IS NOT ZERO)
            DISPLAY "OPERAND2 IS NOT ZER0".
    STOP RUN.

Producción:

OPERAND1 IS POSITIVE
OPERAND2 IS NOT ZERO

Condición de clase: 

 Si el programador quiere verificar si un valor ingresado es alfabético o numérico, entonces usamos Condiciones de clase. Ayuda a comprobar si el valor introducido es válido o no. La condición numérica es verdadera solo cuando el valor ingresado contiene dígitos del 0 al 9 (independientemente del signo) o es alfanumérico. De manera similar, la condición alfabética es verdadera solo cuando el valor ingresado contiene letras de la A a la Z o es alfanumérico.

Sintaxis:

Operand IS [NOT] NUMERIC/ALPHABETIC

Ejemplo:

Cobol

IDENTIFICATION DIVISION.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
    77 OPERAND PIC X9.
PROCEDURE DIVISION.
    DISPLAY "ENTER ANY ALPHABET/NUMBER".
    ACCEPT OPERAND.
    IF (OPERAND IS ALPHABETIC)
            DISPLAY "ALPHABET"
    ELSE
            DISPLAY "NUMBER".
    STOP RUN.

Producción: 

ENTER ANY ALPHABET/NUMBER
C
ALPHABET

Condición de nombre de condición: 

 Condition-name es una condición en sí misma y contiene valores verdaderos o falsos . El nombre de la condición siempre debe declararse dentro de un nombre de datos llamado Variable condicional , es decir, no se puede definir de forma independiente. El nombre de la condición se vuelve verdadero solo si la variable condicional asume cualquiera de los valores asignados. El LEVEL 88 se usa para declarar condition-name.

Por ejemplo;

77 EXPERIENCE PIC 9.
88 BEGINNER VALUE IS 1.
88 INTERMEDIATE VALUE IS 3.
88 PROFESSIONAL VALUES ARE 5,6,7.

Explicación:  En el ejemplo anterior, «EXPERIENCIA» es una variable condicional con nivel 77, mientras que «PRINCIPIO», «INTERMEDIO», «PROFESIONAL» son nombre de condición con nivel 88. Ahora la condición PRINCIPIANTE será verdadera solo cuando el valor de EXPERIENCIA es 1 y de manera similar, la condición INTERMEDIA será verdadera solo cuando el valor de EXPERIENCIA sea 3, y la condición PROFESIONAL será verdadera solo cuando el valor de EXPERIENCIA sea 5 o 6 o 7.

Sintaxis:

77 Conditional Variable PIC 9/A/X.
88 Condition-name1 {VALUE IS/VALUES ARE} Literal-1 [ {THRU/THROUGH} Literal-2][,Literal-3 [{THRU/THROUGH} Literal-4]]
88 Condition-name2 {VALUE IS/VALUES ARE} Literal-1 [ {THRU/THROUGH} Literal-2][,Literal-3 [{THRU/THROUGH} Literal-4]]

Ejemplo:

Cobol

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLOWORD.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
      77 WEXP PIC 99.
      88 PROFESSIONAL VALUE 10.
      88 HIGH VALUE 9.
      88 INTERMEDIATE VALUES ARE 6,7,8.
      88 BEGINNER VALUES ARE 1 THRU 5.
      88 UNEXP VALUE IS 0.
PROCEDURE DIVISION.
      DISPLAY "ENTER EXPERIENCE".
      ACCEPT WEXP.
      IF PROFESSIONAL
             DISPLAY "PROFESSIONAL".
      IF HIGH
             DISPLAY "HIGHLY EXPERIENCED".
      IF INTERMEDIATE
               DISPLAY "INTERMEDIATE LEVEL".
      IF  BEGINNER
               DISPLAY "BEGINNER".
      IF UNEXP
               DISPLAY "UNEXPERIENCED".
STOP RUN.

Producción:

ENTER EXPERIENCE
7
INTERMEDIATE LEVEL

Condición negada: 

Cualquier condición que tenga un operador NOT precedido se conoce como condición negada. Esta condición siempre produce lo contrario de la condición, es decir, si la condición es verdadera , la salida final será falsa y viceversa. El operador NOT se puede utilizar de dos formas:

  1. Como parte de la condición, como hemos visto en las condiciones anteriores.
  2. Simplemente puede preceder a cualquier condición y convertirla en una Condición Negada.

Sintaxis:

NOT Condition

Ejemplo:

Cobol

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLOWORD.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
    77 OPERAND1 PIC 99.
    77 OPERAND2 PIC 99.
PROCEDURE DIVISION.
    MOVE 10 TO OPERAND1.
    MOVE 8 TO OPERAND2.
    IF NOT OPERAND1 > OPERAND2
            DISPLAY "TRUE CONDITION REVERSED"
    ELSE
            DISPLAY "FALSE CONDITION REVERSED".
    STOP RUN.

Producción:

FALSE CONDITION REVERSED

Condición compuesta: 

Cuando el programador tiene que verificar dos o más condiciones como una sola condición, usamos operadores lógicos, Y u O, dos combinan las condiciones. En el caso de AND, la condición compuesta devuelve un valor verdadero solo si todas las condiciones constituyentes son verdaderas ; de lo contrario, devuelve falso . En el caso de OR, la condición compuesta devuelve el valor verdadero si alguna de las condiciones constituyentes es verdadera , de lo contrario, devuelve falso

Sintaxis:

Condition1 AND/OR Condition2 [AND/OR Condition3....];

Ejemplo:

Cobol

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLOWORD.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
    77 OPERAND1 PIC 9.
    77 OPERAND2 PIC 9.
PROCEDURE DIVISION.
    MOVE 7 TO OPERAND1.
    MOVE 0 TO OPERAND2.
    IF  OPERAND1 IS POSITIVE AND OPERAND2 IS POSITIVE
            DISPLAY "BOTH OPERANDS ARE POSITIVE"
    ELSE
            DISPLAY "BOTH OPERANDS ARE NOT POSITIVE".
    STOP RUN.

Producción:

BOTH OPERANDS ARE NOT POSITIVE

Si condición: 

Si la declaración condicional verifica las condiciones, si una condición particular devuelve un valor verdadero solo entonces se ejecuta un conjunto particular de declaraciones. Estas sentencias pueden ser sentencias simples o sentencias compuestas. Si la condición devuelve un valor falso , el control no entra en el bloque IF . En este caso, recuerde siempre que PERIOD(.) solo se utilizará al final de la última declaración, para terminar el bloque IF.

Sintaxis:

IF (Condition/s)
  Set of statements
[END IF]

Ejemplo:

Cobol

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLOWORD.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
    77 OPERAND1 PIC 99.
    77 OPERAND2 PIC 99.
PROCEDURE DIVISION.
    MOVE 10 TO OPERAND1.
    MOVE 8 TO OPERAND2.
    IF OPERAND1 > OPERAND2
            DISPLAY "OPERAND1 IS GREATER".
 
    STOP RUN.

Producción:

    OPERAND1 IS GREATER

Condición if-else:  

La declaración condicional If-else verifica la(s) condición(es), si la condición es verdadera, entonces ejecuta las declaraciones del bloque IF, si la condición es falsa, entonces ejecuta la declaración del bloque ELSE. En este caso, recuerde siempre que PERIOD(.) solo se utilizará al final de la última declaración, para terminar el bloque IF-ELSE.

Sintaxis:

IF (Condition/s)
    Set of Statements
ELSE
    Set of statements
[END IF].

Ejemplo:

Cobol

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLOWORD.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
    77 OPERAND1 PIC 99.
    77 OPERAND2 PIC 99.
PROCEDURE DIVISION.
    MOVE 3 TO OPERAND1.
    MOVE 8 TO OPERAND2.
    IF OPERAND1 > OPERAND2
            DISPLAY "OPERAND1 IS GREATER"
    ELSE
              DISPLAY "OPERAND2 IS GREATER".
    STOP RUN.

Producción: 

OPERAND2 IS GREATER

La siguiente sintaxis también se usa para las declaraciones de condición condicional anidadas en COBOL:

Sintaxis:

    IF (Condition1)
        IF (Condition2)
            Set of statement/s
        ELSE
            Set of statement/s
        END-IF
    ELSE
        Set of statement/s
    END-IF.    

Ejemplo:

Cobol

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLOWORD.
ENVIRONMENT DIVISION.
DATA DIVISION.
      WORKING-STORAGE SECTION.
          77 OPERAND1 PIC 99.
PROCEDURE DIVISION.
      MOVE 12 TO OPERAND1.
      IF OPERAND1 IS NUMERIC
              DISPLAY "OPERAND IS NUMERIC"
              IF OPERAND1 IS POSITIVE
                  DISPLAY " OPERAND IS POSITIVE"
              ELSE
                  IF OPERAND1 IS NEGATIVE
                      DISPLAY "OPERAND IS NEGATIVE"
                  ELSE
                      DISPLAY "OPERAND IS ZERO"
                  END-IF
              END-IF
      ELSE
              DISPLAY "OPERAND IS NOT NUMERIC"
    END-IF.
STOP RUN.

Producción:

OPERAND IS NUMERIC
OPERAND IS POSITIVE

Publicación traducida automáticamente

Artículo escrito por deepika92 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *