
¿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.

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.