Ir al contenido principal

Cobol: bloques

Un bloque en Cobol es similar a una función. Un bloque nos ayuda a dividir nuestro código y hacerlo más legible. Recordemos un poco la estructura básica de un programa en Cobol.

IDENTIFICATION DIVISION.
PROGRAM-ID. NOMBRE.
AUTHOR AUTOR.
INSTALLATION. ALQUIMISTA.
DATE-WRITTEN. dd/mm/yy.
DATE-COMPILED.
SECURITY. NO ES CONFIDENCIAL.

*>BLOQUE DE DATOS
DATA DIVISION.
WORKING-STORAGE SECTION.

*> BLOQUE PRINCIPAL
PROCEDURE DIVISION.

STOP RUN.

Recordar también que la extensión de un programa Cobol es *.cbl y/o *.cob.

¿Cómo podemos crear un bloque en Cobol? 

La sintaxis es la siguiente:

BLOQUE.
*> CÓDIGO.

¿Cómo podemos definir una variable y qué tipo está permitido?

*> PARA COLOCAR VARIABLES
DATA DIVISION.
WORKING-STORAGE SECTION.
*> SE PUEDE USAR PIC O PICTURE
*> EJEMPLOS:
*> NÚMERO CON SIGNO, VALUE PARA ASIGNAR UN VALOR AL INICIO
01 WS-NUMERO PICTURE S9(05)V99 VALUE -33.11.
*> CARACTERES ALFANUMÉRICOS
01 WS-NOMBRE PIC X(10).
*>...


Ejemplo. Se requiere un programa donde introduciremos datos de un empleado.

Definimos sus datos: nombre, apellido paterno, apellido materno y salario.

DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-DATOS-TRAB.
   02 WS-NOMBRE-TRAB PIC X(50).
   02 WS-APELLIDO-PAT PIC X(50).
   02 WS-APELLIDO-MAT PIC X(50).
   02 WS-SALARIO PIC S9(05)V99.
   


Definimos un bloque donde solicitaremos esos datos:

DATOS.
   DISPLAY "[NOMINA TRABAJADORES]".
   DISPLAY "INTRODUCE NOMBRE:".
   ACCEPT WS-NOMBRE-TRAB.
   DISPLAY "INTRODUCE APELLIDO PATERNO:".
   ACCEPT WS-APELLIDO-PAT.
   DISPLAY "INTRODUCE APELLIDO MATERNO:".
   ACCEPT WS-APELLIDO-MAT.
   DISPLAY "INTRODUCE SALARIO:".
   ACCEPT WS-SALARIO.
  

En muchos casos necesitaremos mostrar esos datos respetando el formato. Para imprimir en mayúsculas empleamos la siguiente función:
FUNCTION  UPPER-CASE()

Además podemos asignar ese nuevo valor a una variable ya definida. Así tendremos:

*> MOVEMOS EL RESULTADO A LA VARIABLE YA DEFINIDA, AHORRANDO CREAR OTRA NUEVA.
MOVE FUNCTION  UPPER-CASE(WS-NOMBRE-TRAB) to WS-NOMBRE-TRAB.
MOVE FUNCTION  UPPER-CASE(WS-APELLIDO-PAT) to WS-APELLIDO-PAT.
MOVE FUNCTION  UPPER-CASE(WS-APELLIDO-MAT) to WS-APELLIDO-MAT.


Nota:

WS-DATOS-TRAB.
Es la variable que guarda todo los datos introducidos por teclado.

¿Cómo invocamos un bloque?

PERFORM BLOQUE.

Sería entonces:

PROCEDURE DIVISION.
   MAIN SECTION.
   PERFORM DATOS.
   STOP RUN.


Programa completo:

progtrab.cbl

IDENTIFICATION DIVISION.
PROGRAM-ID. PROG-TRAB.
AUTHOR ALQUIMISTA.
INSTALLATION. ALQUIMISTA.
DATE-WRITTEN. 26/04/19.
DATE-COMPILED.
SECURITY. NO ES CONFIDENCIAL.

DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-DATOS-TRAB.
   02 WS-NOMBRE-TRAB PIC X(50).
   02 WS-APELLIDO-PAT PIC X(50).
   02 WS-APELLIDO-MAT PIC X(50).
   02 WS-SALARIO PIC S9(05)V99.
 


PROCEDURE DIVISION.
   MAIN SECTION.
   PERFORM DATOS.
   STOP RUN.


   DATOS.
   DISPLAY "[NOMINA TRABAJADORES]".
   DISPLAY "INTRODUCE NOMBRE:".
   ACCEPT WS-NOMBRE-TRAB.
   DISPLAY "INTRODUCE APELLIDO PATERNO:".
   ACCEPT WS-APELLIDO-PAT.
   DISPLAY "INTRODUCE APELLIDO MATERNO:".
   ACCEPT WS-APELLIDO-MAT.
   DISPLAY "INTRODUCE SALARIO:".
   ACCEPT WS-SALARIO.
   MOVE FUNCTION  UPPER-CASE(WS-NOMBRE-TRAB) to WS-NOMBRE-TRAB.
   MOVE FUNCTION  UPPER-CASE(WS-APELLIDO-PAT) to WS-APELLIDO-PAT.
   MOVE FUNCTION  UPPER-CASE(WS-APELLIDO-MAT) to WS-APELLIDO-MAT.
   DISPLAY WS-DATOS-TRAB.


Compilamos y ejecutamos (desde terminal):

$ cobc -x -free progtrab.cbl -o progtrab.exe

$ ./progtrab.exe

Links:
https://alquimistadecodigo.blogspot.com/2019/04/cobol-en-un-vistazo.html
https://alquimistadecodigo.blogspot.com/2019/04/cobol-estructura.html
https://alquimistadecodigo.blogspot.com/2019/04/instalando-open-cobol.html

Comentarios

Entradas populares de este blog

Odin language: el lenguaje de programación orientado a datos para un desarrollo de software sensato

En esta serie sobre lenguajes de programación hablamos de Odin , un lenguaje orientado a datos. Un nuevo lenguaje de programación que nos podrá recordar a lenguajes como C++, Python, Golang o hasta Rust. Instalación (Windows): 1 2 3 4 $ git clone https://github.com/odin-lang/Odin $ cd Odin $ git pull $ build.bat release Debemos asegurarnos de crear la variable de entorno: Nombre: ODIN_HOME Valor: C:\Users\HP\Documents\pruebasOdin\Odin Ejemplo 1. Como primer programa tendremos al clásico "Hola, mundo". holamundo.odin package holamundo import " core:fmt " main : : proc ( ) { fmt . println ( " ¡Hola, mundo desde Odin! " ) } Construimos: $ odin build holamundo . odin - file Ejecutamos: $ holamundo .exe Recordar que si usamos Visual Studio Code podemos instalar el plugin de Odin Language: https://marketplace.visualstudio.com/items?itemName=DanielGavin.ols Ejemplo 2. Programa que muestre las variables que pod...

Programación Windows Batch (CMD) parte 3

Crear ciclos para efectuar operaciones tediosas nos ahorrará tiempo para realizar otras tareas. En está ocasión veremos ciclos con FOR . ¿Cuál es la síntaxis de bucle FOR en Windows Batch? Si está dentro de un archivo *.bat : FOR %%variable IN (seq) DO operaciones Si lo ejecutamos en una terminal: FOR %variable IN (seq) DO operaciones Ejemplo 1 . Recorrer una secuencia de números del 0 al 5: recorrer.bat @ echo off FOR %%i in ( 0 1 2 3 4 5 ) DO echo Hola no. %%i pause Nos imprimirá en pantalla: Hola no. 0 Hola no. 1 Hola no. 2 Hola no. 3 Hola no. 4 Hola no. 5 ¿Puedo usar contadores? Si, se pueden usar. Ejemplo 2 . Uso de contadores: contador.bat @ echo off set numeros = 1 2 3 4 5 6 7 8 9 10 set cont = 0 for %%a in ( %numeros% ) do ( echo Hola no. %%a :: Contador set /a cont+ = 1 ) echo Total: %cont% Este código nos imprimirá, además de los mensajes Hola no. 0 ..., el total de valores conta...

z/OS, ¿Qué es? y ¿Cuáles son sus herramientas?

  En este post veremos las herramientas de z/OS de IBM. z/OS es un sistema operativo de mainframe desarrollado por IBM.  Es parte de la serie IBM z Systems (anteriormente conocida como System z), que se utiliza en los sistemas mainframe de IBM. z/OS es uno de los sistemas operativos más utilizados en el mundo empresarial para ejecutar aplicaciones críticas y procesar grandes volúmenes de datos. Características clave de z/OS: Escalabilidad : z/OS es conocido por su capacidad para manejar grandes cargas de trabajo y escalabilidad vertical, lo que permite agregar recursos de hardware para satisfacer las demandas de procesamiento. Confiabilidad y disponibilidad : z/OS está diseñado para ofrecer alta disponibilidad y confiabilidad. Incorpora características como redundancia y recuperación ante fallas para garantizar la continuidad de las operaciones. Seguridad : Proporciona una amplia gama de funciones de seguridad, como autenticación, autorización y auditoría, para proteger los...