COBOL, acrónimo de "COmmon Business Oriented Language", es un lenguaje de programación desarrollado en la década de 1950, enfocado principalmente en aplicaciones comerciales, financieras y administrativas. A pesar de su antigüedad, COBOL sigue siendo ampliamente utilizado en sistemas heredados que requieren un alto nivel de estabilidad y procesamiento de transacciones.
Uno de los conceptos fundamentales en la programación estructurada es la capacidad de dividir el código en subprogramas o rutinas reutilizables. En COBOL, esto se realiza principalmente a través de las instrucciones CALL
y PROCEDURE
. Este artículo profundiza en cómo se utilizan estos elementos para modularizar y gestionar el código en COBOL.
El uso del comando CALL
en COBOL permite la invocación de un subprograma externo. Un subprograma es un módulo de código independiente que realiza una tarea específica y se puede llamar desde diferentes partes del programa principal o de otros subprogramas.
CALL 'nombre-subprograma' USING argumento1 argumento2 ...
'nombre-subprograma'
: Es el nombre del subprograma a invocar.USING
: Es una cláusula opcional que permite pasar argumentos al subprograma.CALL 'CALCULAR_IMPUESTOS' USING MONTO-BRUTO MONTO-IMPUESTOS.
En este ejemplo, 'CALCULAR_IMPUESTOS'
es un subprograma que recibe el MONTO-BRUTO
y devuelve el MONTO-IMPUESTOS
.
La división de un programa COBOL en secciones y párrafos facilita la creación de subprogramas dentro del código. La cláusula PROCEDURE
es utilizada para definir el punto de entrada y la estructura lógica del subprograma.
PROCEDURE DIVISION.
PARAGRAFO-UNO.
... código ...
PARAGRAFO-DOS.
... código ...
Cada párrafo (PARAGRAFO-UNO
, PARAGRAFO-DOS
, etc.) actúa como un bloque de código que puede ser invocado desde otras partes del programa utilizando la instrucción PERFORM
.
PROCEDURE DIVISION.
CALCULAR-IMPUESTOS.
MULTIPLY MONTO-BRUTO BY 0.15 GIVING MONTO-IMPUESTOS.
En este bloque, CALCULAR-IMPUESTOS
es un párrafo que puede ser llamado para calcular el 15% de impuestos sobre el MONTO-BRUTO
.
Los argumentos se pasan por referencia mediante la cláusula USING
en el CALL
. Esto significa que el subprograma trabaja directamente con las direcciones de memoria de los argumentos, permitiendo que los cambios se reflejen en el programa que hizo la llamada.
CALL 'PROCESAR_DATOS' USING CLIENTE-REGISTRO TRANSACCION-REGISTRO.
En este caso, CLIENTE-REGISTRO
y TRANSACCION-REGISTRO
son argumentos pasados al subprograma PROCESAR_DATOS
.
En COBOL, los subprogramas pueden ser:
Supongamos que tenemos un programa principal que necesita validar números de seguridad social. Podemos crear un subprograma para realizar esta tarea.
CALL 'VALIDAR_SSN' USING NUMERO-SSN VALIDEZ-SSN.
IF VALIDEZ-SSN IS TRUE
DISPLAY 'SSN VÁLIDO'
ELSE
DISPLAY 'SSN INVÁLIDO'.
PROCEDURE DIVISION USING NUMERO-SSN VALIDEZ-SSN.
VALIDAR.
IF NUMERO-SSN IS NUMERIC
MOVE TRUE TO VALIDEZ-SSN
ELSE
MOVE FALSE TO VALIDEZ-SSN.
En este caso, el subprograma VALIDAR_SSN
recibe el número a validar y un indicador de validez, que actualiza según la comprobación realizada.
El uso de subprogramas en COBOL mediante CALL
y PROCEDURE
es una técnica poderosa para estructurar programas de manera clara, modular y eficiente. Permite una mejor organización del código, facilita el mantenimiento y promueve la reutilización de componentes de software. A pesar de la edad de COBOL, estas prácticas de programación siguen siendo relevantes y aplicables en el desarrollo de software contemporáneo.
Para más información sobre la programación en COBOL, puedes consultar las siguientes fuentes:
Estos recursos ofrecen documentación detallada, ejemplos y guías para profundizar en el lenguaje COBOL y sus características.