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
USING
especifica 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
NUMERO
yRESULTADO
. - Llama al subprograma
SquareSubprogram
usando la sentenciaCALL
y pasa las variablesNUMERO
yRESULTADO
. - Muestra el resultado en la pantalla.
- Declara las variables
-
Subprograma:
- Recibe las variables
NUMERO
yRESULTADO
a través de la cláusulaUSING
. - Calcula el cuadrado de
NUMERO
y 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
FactorialSubprogram
pasandoNUMERO
yFACTORIAL
. - Muestra el resultado en la pantalla.
- Solicita al usuario un número y lo almacena en
-
Subprograma:
- Inicializa
FACTORIAL
a 1. - Utiliza un bucle
PERFORM
para calcular el factorial multiplicandoFACTORIAL
por 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