En este módulo, aprenderemos sobre los subprogramas en COBOL, una característica esencial para la programación modular y la reutilización de código. Los subprogramas permiten dividir un programa grande en partes más pequeñas y manejables, facilitando la lectura, el mantenimiento y la depuración del código.
¿Qué es un Subprograma?
Un subprograma en COBOL es un bloque de código que realiza una tarea específica y puede ser llamado desde otros programas o subprogramas. Los subprogramas ayudan a:
- Reutilizar código: Evitar la duplicación de código al reutilizar funciones comunes.
- Modularidad: Dividir el programa en módulos más pequeños y manejables.
- Mantenimiento: Facilitar la actualización y el mantenimiento del código.
Estructura de un Subprograma
Un subprograma en COBOL tiene una estructura similar a la de un programa principal, pero con algunas diferencias clave. A continuación, se muestra la estructura básica de un subprograma:
IDENTIFICATION DIVISION.
PROGRAM-ID. nombre-del-subprograma.
DATA DIVISION.
WORKING-STORAGE SECTION.
* Declaraciones de variables locales
LINKAGE SECTION.
* Declaraciones de variables pasadas desde el programa principal
PROCEDURE DIVISION USING variable1 variable2.
* Código del subprograma
...
EXIT PROGRAM.Explicación de la Estructura
- IDENTIFICATION DIVISION: Define el nombre del subprograma.
- DATA DIVISION:
- WORKING-STORAGE SECTION: Declara las variables locales del subprograma.
- LINKAGE SECTION: Declara las variables que se pasan desde el programa principal.
- PROCEDURE DIVISION: Contiene el código del subprograma. La cláusula
USINGespecifica las variables que se pasan al subprograma.
Ejemplo Práctico
A continuación, se muestra un ejemplo de un subprograma que calcula el cuadrado de un número:
Programa Principal
IDENTIFICATION DIVISION.
PROGRAM-ID. MainProgram.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 NUMERO PIC 9(2) VALUE 5.
01 RESULTADO PIC 9(4).
PROCEDURE DIVISION.
DISPLAY "Llamando al subprograma para calcular el cuadrado de " NUMERO.
CALL 'SquareSubprogram' USING NUMERO RESULTADO.
DISPLAY "El cuadrado de " NUMERO " es " RESULTADO.
STOP RUN.Subprograma
IDENTIFICATION DIVISION.
PROGRAM-ID. SquareSubprogram.
DATA DIVISION.
WORKING-STORAGE SECTION.
LINKAGE SECTION.
01 NUMERO PIC 9(2).
01 RESULTADO PIC 9(4).
PROCEDURE DIVISION USING NUMERO RESULTADO.
COMPUTE RESULTADO = NUMERO * NUMERO.
EXIT PROGRAM.Explicación del Ejemplo
-
Programa Principal:
- Declara las variables
NUMEROyRESULTADO. - Llama al subprograma
SquareSubprogramusando la sentenciaCALLy pasa las variablesNUMEROyRESULTADO. - Muestra el resultado en la pantalla.
- Declara las variables
-
Subprograma:
- Recibe las variables
NUMEROyRESULTADOa través de la cláusulaUSING. - Calcula el cuadrado de
NUMEROy almacena el resultado enRESULTADO. - Termina la ejecución con
EXIT PROGRAM.
- Recibe las variables
Ejercicio Práctico
Ejercicio 1: Crear un Subprograma para Calcular el Factorial de un Número
Instrucciones:
- Escribe un programa principal que solicite al usuario un número y llame a un subprograma para calcular el factorial de ese número.
- El subprograma debe recibir el número, calcular su factorial y devolver el resultado al programa principal.
Solución:
Programa Principal
IDENTIFICATION DIVISION.
PROGRAM-ID. MainProgram.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 NUMERO PIC 9(2).
01 FACTORIAL PIC 9(6).
PROCEDURE DIVISION.
DISPLAY "Ingrese un número: ".
ACCEPT NUMERO.
CALL 'FactorialSubprogram' USING NUMERO FACTORIAL.
DISPLAY "El factorial de " NUMERO " es " FACTORIAL.
STOP RUN.Subprograma
IDENTIFICATION DIVISION.
PROGRAM-ID. FactorialSubprogram.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 I PIC 9(2).
01 TEMP PIC 9(6).
LINKAGE SECTION.
01 NUMERO PIC 9(2).
01 FACTORIAL PIC 9(6).
PROCEDURE DIVISION USING NUMERO FACTORIAL.
MOVE 1 TO FACTORIAL.
PERFORM VARYING I FROM 1 BY 1 UNTIL I > NUMERO
MULTIPLY FACTORIAL BY I GIVING TEMP
MOVE TEMP TO FACTORIAL
END-PERFORM.
EXIT PROGRAM.Explicación del Ejercicio
-
Programa Principal:
- Solicita al usuario un número y lo almacena en
NUMERO. - Llama al subprograma
FactorialSubprogrampasandoNUMEROyFACTORIAL. - Muestra el resultado en la pantalla.
- Solicita al usuario un número y lo almacena en
-
Subprograma:
- Inicializa
FACTORIALa 1. - Utiliza un bucle
PERFORMpara calcular el factorial multiplicandoFACTORIALpor cada número desde 1 hastaNUMERO. - Devuelve el resultado al programa principal.
- Inicializa
Conclusión
En esta lección, hemos aprendido qué son los subprogramas en COBOL, su estructura y cómo utilizarlos para crear programas modulares y reutilizables. Los subprogramas son una herramienta poderosa para mejorar la organización y el mantenimiento del código. En la próxima lección, exploraremos la sentencia CALL en detalle y cómo pasar parámetros a los subprogramas.
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
