COBOL es un lenguaje de programación que sigue dando de que hablar. Los programadores Java, C#, Python, etc. saben que aún existen aplicaciones hechas en COBOL y es difícil que éstas migren a un lenguaje más actual. Es por esa y otras razones que muchos han pensado en aprender este lenguaje 'obsoleto'.
¡COBOL is the king, no ha muerto!
¡A desempolvar los libros de nuestros abuelos, tíos o maestros!
¿Qué debemos hacer para aprender COBOL y no morir en el intento?
Para empezar necesitas:
- Tener bases de programación (obvio).
- Conseguir un compilador dependiendo del sistema operativo que uses (si usas Windows puedes usar Visual Studio e instalar un compilador; si usas Linux puedes usar Gnu OpenCOBOL, nosotros usaremos éste último en el blog).
- Saber qué extensión se usa para crear un programa COBOL (.cb, cbl, .cb). Nosotros usaremos .cbl
- Comprender la estructura de un programa COBOL.
- Conocer las estructuras de control y estructuras de datos en COBOL.
- Practicar.
ESTRUCTURA DE UN PROGRAMA (BÁSICO) EN COBOL:
IDENTIFICATION DIVISION. *> AQUÍ VA INFORMACIÓN DE PROGRAMA Y EL AUTOR *> DONDE DECLARAMOS LAS VARIABLES DATA DIVISION. WORKING-STORAGE SECTION. *> MAIN DEL PROGRAMA PROCEDURE DIVISION. MAIN. STOP RUN.
Información del programa:
IDENTIFICATION DIVISION. PROGRAM-ID. MIPROGRAMA. AUTHOR ALQUIMISTA DE CODIGO. INSTALLATION. ALQUIMISTA DE CODIGO. DATE-WRITTEN. 23/06/19. DATE-COMPILED. SECURITY. NO ES CONFIDENCIAL.
Las variables en COBOL:
*> AQUI DECLARO LAS VARIABLES DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-NUM-A PICTURE 9(5). 01 WS-NOMBRE PIC X(10).
¿Cómo se asigna valores a una variable?
Desde el STORAGE:
*> DESDE EL STORAGE DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-NUM-A PICTURE 9(5) VALUE 45. 01 WS-NOMBRE PICTURE X(10) VALUE 'ROMAN'.
*> MAIN DEL PROGRAMA PROCEDURE DIVISION. MAIN. *> MOVEMOS UN VALOR A UNA VARIABLE MOVE 20 TO WS-NUM-A. MOVE 'JUAN' TO WS-NOMBRE.
La hora de hacer un ejercicio.
Requerimiento: Calcular el volumen de un toroide y la área de un paralelogramo. Para eso usaremos COMPUTE, para realizar las operaciones necesarias.
Veamos cómo usar COMPUTE:
*> SUMA COMPUTE WS-RESULTADO = WS-NUM-a + WS-NUM-B. *> RESTA COMPUTE WS-RESULTADO = WS-NUM-a - WS-NUM-B. *> PRODUCTO COMPUTE WS-RESULTADO = WS-NUM-a + WS-NUM-B. *> POTENCIACION COMPUTE WS-RESULTADO = WS-NUM-a ** WS-NUM-B. *> LONGITUD DE UNA CADENA COMPUTE WS-LONGITUD = FUNCTION LENGTH(WS-CADENA).
Ahora el código completo:
calculos.cbl
IDENTIFICATION DIVISION. PROGRAM-ID. MIPROGRAMA. AUTHOR ALQUIMISTA DE CODIGO. INSTALLATION. ALQUIMISTA DE CODIGO. DATE-WRITTEN. 23/06/19. DATE-COMPILED. SECURITY. NO ES CONFIDENCIAL. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-NUM-A PICTURE 9(5). 01 WS-NUM-B PICTURE 9(5). 01 WS-VOLUMEN PICTURE 9(9). 01 WS-AREA PICTURE 9(9). *> MAIN DEL PROGRAMA PROCEDURE DIVISION. MAIN. MOVE 20 TO WS-NUM-A. MOVE 40 TO WS-NUM-B. DISPLAY '*** CALCULOS ***'. COMPUTE WS-VOLUMEN = 2 * (3.14159 ** 2) * WS-NUM-B * (WS-NUM-A ** 2) DISPLAY 'R ='WS-NUM-B', r = 'WS-NUM-A. DISPLAY 'VOLUMEN DE UN TOROIDE : 'WS-VOLUMEN. DISPLAY 'b = 'WS-NUM-B', h ='WS-NUM-A. MOVE 30 TO WS-NUM-A. MOVE 45 TO WS-NUM-B. COMPUTE WS-AREA = WS-NUM-B * WS-NUM-A. DISPLAY 'BASE ='WS-NUM-B', ALTURA = 'WS-NUM-A. DISPLAY 'AREA DE UN PARALELOGRAMO ='WS-AREA. STOP RUN.
Si usas OpenCOBOL, compilamos con:
$ cobc -x -free calculos.cbl -o calculos.exe
Ejecutamos el programa con:
$ ./calculos.exe
Vemos en pantalla el resultado:
*** CALCULOS *** R =00040, r = 00020 VOLUMEN DE UN TOROIDE : 000315826 b = 00040, h =00020 BASE =00045, ALTURA = 00030 AREA DE UN PARALELOGRAMO =000001350
IF-ELSE
Si condición entonces en COBOL. En cualquier lenguaje deprgramación existen sentencias que se cumplen si cumplen alguna condición previamente definida. Imaginemos un escenario donde el usuario introduce un nombre (cadena ó STRING) en el programa.En COBOL, ACCEPT se usa para introducir datos.
*> INTRODUCIR DATOS CON 'ACCEPT' DISPLAY 'INTRODUCE NOMBRE:' ACCEPT WS-NOMBRE IF WS-NOMBRE EQUAL "ALFIE" THEN DISPLAY 'HOLA, 'WS-NOMBRE ELSE DISPLAY 'BIENVENIDO, 'WS-NOMBRE END-IF.
Nota: Usamos PICTURE X(10) para definir una variable alfanumérica.
*> STORAGE DATA DIVISION. WORKING-STORAGE SECTION. *> DEFINIR UNA VARIABLE 'STRING' 01 WS-NOMBRE PICTURE X(10).
Programa completo:
condicional.cbl
IDENTIFICATION DIVISION. PROGRAM-ID. TEST6. AUTHOR ALQUIMISTA DE CÓDIGO. INSTALLATION. ALQUIMISTA DE CÓDIGO. DATE-WRITTEN. 25/06/19. DATE-COMPILED. SECURITY. NO ES CONFIDENCIAL. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-NOMBRE PICTURE X(10). *> MAIN DEL PROGRAMA PROCEDURE DIVISION. MAIN. DISPLAY 'INTRODUCE NOMBRE:' ACCEPT WS-NOMBRE IF WS-NOMBRE EQUAL "FERNANDO" THEN DISPLAY 'HOLA, 'WS-NOMBRE ELSE DISPLAY 'BIENVENIDO, 'WS-NOMBRE END-IF. STOP RUN.
Más ejemplos para el siguiente post.
El 1er programa se llama calculos.cbl y lo compilas y ejecutas como test ???
ResponderEliminarGracias por la corrección.
Eliminar