Curso de Cobol y PowerCobol

¿Qué son los IF de clase de COBOL?

Capítulo 33: IF de clase

En esta ocasión, vamos a ver los IF de clase.

IF de clase

Los IF de clase o tipo, son aquellos que evalúan el tipo de dato. Si es numérico, si es alfabético, etc.

Aquí entra en juego también SPECIAL-NAMES que vimos anteriormente, para hacer tus propios tipos.

Metalenguaje de IF de clase o tipo

Pasaremos un literal, expresión aritmética o identificador al IF. Después, puedes utilizar opcionalmente la negación con NOT y debes indicar un tipo de dato definido en el lenguaje COBOL o uno propio con SPECIAL-NAMES. Si no recuerdas como funciona, ves al capítulo 7.

Metalenguaje de IF de clase en COBOL

IF de clase con valor literal

Empecemos con un ejemplo de valor literal.

⁠⁠       IDENTIFICATION DIVISION.
       PROGRAM-ID. Capitulo33.
       ENVIRONMENT DIVISION.
       DATA DIVISION.
       FILE SECTION.
       WORKING-STORAGE SECTION.

       PROCEDURE DIVISION.
       RelacionClase.
       IF 10 IS NUMERIC THEN
           DISPLAY "Es un número."
       END-IF
       STOP RUN.
       END PROGRAM Capitulo33.
Es un número.

IF de clase con valor de identificador

Por supuesto, una de las mejores formas de usar esto, es con identificadores en lugar de con valores literales.

⁠⁠       IDENTIFICATION DIVISION.
       PROGRAM-ID. Capitulo33.
       ENVIRONMENT DIVISION.
       DATA DIVISION.
       FILE SECTION.
       WORKING-STORAGE SECTION.
       77  SitioWeb PIC X(25) VALUE "PROGRAMACION FACIL".

       PROCEDURE DIVISION.
       RelacionClase.
       IF  SitioWeb IS ALPHABETIC-UPPER THEN
           DISPLAY "El texto está todo en mayúsculas."
       END-IF
       STOP RUN.
       END PROGRAM Capitulo33.
El texto está todo en mayúsculas.

IF de clase con operaciones aritméticas

Aunque no tenga mucho sentido, se permite evaluar si una expresión aritmética en la propia expresión del IF. Obviamente, siempre va a ser NUMERIC, por eso no tiene mucho sentido hacer esto, pero para que sepas que se puede hacer.

⁠⁠       IDENTIFICATION DIVISION.
       PROGRAM-ID. Capitulo33.

       ENVIRONMENT DIVISION.
       DATA DIVISION.
       FILE SECTION.
       WORKING-STORAGE SECTION.

       PROCEDURE DIVISION.
       RelacionClase.
       IF  10*10 IS NUMERIC THEN
           DISPLAY "Es un valor numérico."
       END-IF
       STOP RUN.
       END PROGRAM Capitulo33.
Es un valor numérico.

IF de clase con tipo definido en SPECIAL-NAMES

En este caso, podemos utilizar CLASS propias con el fin de crear condiciones que no lleva de por sí el lenguaje COBOL. De esta forma tan sencilla, podemos crear una regla para detectar números hexadecimales. La regla Decimal no es realmente necesaria, ya que si le dices a COBOL, IF Numero2 IS NUMERIC THEN, va a ser lo mismo. Pero creo que así verás un poco más las posibilidades de CLASS, no hay límites, podemos escribir tantas CLASS como queramos para dotar de nuevas funcionalidades a nuestros programas.

⁠⁠       IDENTIFICATION DIVISION.
       PROGRAM-ID. Capitulo33.

       ENVIRONMENT DIVISION.
       CONFIGURATION SECTION.
       SPECIAL-NAMES.
      *> Especificamos dos clases para tipos de números.
           CLASS Hexadecimal IS "A" THRU "F", "0" THRU "9".
           CLASS Decimal IS "0" THRU "9".
       DATA DIVISION.
       FILE SECTION.
       WORKING-STORAGE SECTION.
       77  Numero1 PIC X(4) VALUE "A07F".
       77  Numero2 PIC 9(5) VALUE 41087.

       PROCEDURE DIVISION.
       RelacionClase.
       IF Numero1 IS Hexadecimal THEN
           DISPLAY Numero1 " Es un valor hexadecimal."
       END-IF

       IF Numero2 IS Decimal THEN
           DISPLAY Numero2 " Es un valor decimal."
       END-IF
       STOP RUN.
       END PROGRAM Capitulo33.
A07F Es un valor hexadecimal.
41087 Es un valor decimal.

Comentarios

Si te quedan dudas sobre el temario, sobre Cobol, o cualquier otra cosa relacionada o simplemente quieres agradecer, aquí tienes tu sitio para dejar tu granito de arena. Gracias por tus comentarios y por darle vida a este sitio web.

Programación Fácil YouTube

Suscríbete

Si te ha gustado este curso y crees que el trabajo merece la pena, te agradeceré eternamente que te suscribas a mi canal de YouTube para apoyarme y que pueda seguir haciendo cursos gratuitos.

Además, si te encanta la programación, tienes un montón más de cursos gratuitos para ver.

No solo eso, podrás participar enviándome comentarios con tus sugerencias para temas específicos o cursos completos o incluso las dudas que tengas y las intentaré ir resolviendo en los cursos que estén todavía abiertos.