En COBOL, los subprogramas permiten la modularización del código, lo que facilita la reutilización y el mantenimiento. Una parte crucial de trabajar con subprogramas es la capacidad de pasar parámetros entre el programa principal y los subprogramas. En esta sección, aprenderemos cómo pasar parámetros en COBOL, los diferentes métodos disponibles y las mejores prácticas para hacerlo.
Conceptos Clave
- Subprograma (CALLed Program): Un programa que es invocado por otro programa.
- Programa Principal (CALLing Program): El programa que invoca al subprograma.
- Parámetros: Datos que se pasan entre el programa principal y el subprograma.
Métodos para Pasar Parámetros
En COBOL, los parámetros se pasan utilizando la sentencia CALL
y la cláusula USING
. Los parámetros pueden ser pasados por valor o por referencia.
Pasar Parámetros por Referencia
Cuando se pasan parámetros por referencia, el subprograma recibe la dirección de memoria de los datos, lo que permite modificar los datos originales.
Ejemplo de Pasar Parámetros por Referencia
Programa Principal (CALLing Program):
IDENTIFICATION DIVISION. PROGRAM-ID. MainProgram. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-NUMBER1 PIC 9(4) VALUE 1000. 01 WS-NUMBER2 PIC 9(4) VALUE 2000. 01 WS-RESULT PIC 9(4). PROCEDURE DIVISION. DISPLAY "Calling SubProgram..." CALL 'SubProgram' USING WS-NUMBER1 WS-NUMBER2 WS-RESULT DISPLAY "Result from SubProgram: " WS-RESULT STOP RUN.
Subprogram (CALLed Program):
IDENTIFICATION DIVISION. PROGRAM-ID. SubProgram. DATA DIVISION. LINKAGE SECTION. 01 LK-NUMBER1 PIC 9(4). 01 LK-NUMBER2 PIC 9(4). 01 LK-RESULT PIC 9(4). PROCEDURE DIVISION USING LK-NUMBER1 LK-NUMBER2 LK-RESULT. COMPUTE LK-RESULT = LK-NUMBER1 + LK-NUMBER2 EXIT PROGRAM.
Pasar Parámetros por Valor
Cuando se pasan parámetros por valor, el subprograma recibe una copia de los datos, lo que significa que cualquier modificación no afectará los datos originales en el programa principal.
Ejemplo de Pasar Parámetros por Valor
Programa Principal (CALLing Program):
IDENTIFICATION DIVISION. PROGRAM-ID. MainProgram. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-NUMBER1 PIC 9(4) VALUE 1000. 01 WS-NUMBER2 PIC 9(4) VALUE 2000. 01 WS-RESULT PIC 9(4). PROCEDURE DIVISION. DISPLAY "Calling SubProgram..." CALL 'SubProgram' USING BY VALUE WS-NUMBER1 BY VALUE WS-NUMBER2 BY REFERENCE WS-RESULT DISPLAY "Result from SubProgram: " WS-RESULT STOP RUN.
Subprogram (CALLed Program):
IDENTIFICATION DIVISION. PROGRAM-ID. SubProgram. DATA DIVISION. LINKAGE SECTION. 01 LK-NUMBER1 PIC 9(4). 01 LK-NUMBER2 PIC 9(4). 01 LK-RESULT PIC 9(4). PROCEDURE DIVISION USING BY VALUE LK-NUMBER1 BY VALUE LK-NUMBER2 BY REFERENCE LK-RESULT. COMPUTE LK-RESULT = LK-NUMBER1 + LK-NUMBER2 EXIT PROGRAM.
Ejercicio Práctico
Ejercicio 1: Suma de Tres Números
Objetivo: Crear un programa principal que pase tres números a un subprograma. El subprograma debe sumar los tres números y devolver el resultado al programa principal.
Programa Principal (CALLing Program):
IDENTIFICATION DIVISION. PROGRAM-ID. MainProgram. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-NUMBER1 PIC 9(4) VALUE 100. 01 WS-NUMBER2 PIC 9(4) VALUE 200. 01 WS-NUMBER3 PIC 9(4) VALUE 300. 01 WS-RESULT PIC 9(4). PROCEDURE DIVISION. DISPLAY "Calling SubProgram..." CALL 'SubProgram' USING WS-NUMBER1 WS-NUMBER2 WS-NUMBER3 WS-RESULT DISPLAY "Result from SubProgram: " WS-RESULT STOP RUN.
Subprogram (CALLed Program):
IDENTIFICATION DIVISION. PROGRAM-ID. SubProgram. DATA DIVISION. LINKAGE SECTION. 01 LK-NUMBER1 PIC 9(4). 01 LK-NUMBER2 PIC 9(4). 01 LK-NUMBER3 PIC 9(4). 01 LK-RESULT PIC 9(4). PROCEDURE DIVISION USING LK-NUMBER1 LK-NUMBER2 LK-NUMBER3 LK-RESULT. COMPUTE LK-RESULT = LK-NUMBER1 + LK-NUMBER2 + LK-NUMBER3 EXIT PROGRAM.
Solución del Ejercicio
Al ejecutar el programa principal, deberías ver la siguiente salida:
Resumen
En esta sección, hemos aprendido cómo pasar parámetros entre un programa principal y un subprograma en COBOL. Hemos cubierto los métodos de pasar parámetros por referencia y por valor, y hemos visto ejemplos prácticos de cada uno. Además, hemos realizado un ejercicio práctico para reforzar los conceptos aprendidos.
En la siguiente sección, exploraremos técnicas de programación modular en COBOL, que nos permitirán escribir programas más organizados y mantenibles.
Curso de Programación COBOL
Módulo 1: Introducción a COBOL
- ¿Qué es COBOL?
- Historia de COBOL
- Configuración del Entorno COBOL
- Estructura Básica de un Programa COBOL
Módulo 2: Sintaxis Básica de COBOL y Tipos de Datos
Módulo 3: Estructuras de Control
Módulo 4: Trabajando con Datos
- Manejo de Archivos en COBOL
- Procesamiento de Archivos Secuenciales
- Procesamiento de Archivos Indexados
- Procesamiento de Archivos Relativos
Módulo 5: Manejo Avanzado de Datos
Módulo 6: Subprogramas y Programación Modular
Módulo 7: Manejo de Errores y Depuración
Módulo 8: COBOL y Bases de Datos
Módulo 9: Temas Avanzados
- COBOL Orientado a Objetos
- COBOL y Servicios Web
- Optimización del Rendimiento
- Mejores Prácticas en Programación COBOL