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

  1. IDENTIFICATION DIVISION: Define el nombre del subprograma.
  2. DATA DIVISION:
    • WORKING-STORAGE SECTION: Declara las variables locales del subprograma.
    • LINKAGE SECTION: Declara las variables que se pasan desde el programa principal.
  3. 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

  1. Programa Principal:

    • Declara las variables NUMERO y RESULTADO.
    • Llama al subprograma SquareSubprogram usando la sentencia CALL y pasa las variables NUMERO y RESULTADO.
    • Muestra el resultado en la pantalla.
  2. Subprograma:

    • Recibe las variables NUMERO y RESULTADO a través de la cláusula USING.
    • Calcula el cuadrado de NUMERO y almacena el resultado en RESULTADO.
    • Termina la ejecución con EXIT PROGRAM.

Ejercicio Práctico

Ejercicio 1: Crear un Subprograma para Calcular el Factorial de un Número

Instrucciones:

  1. Escribe un programa principal que solicite al usuario un número y llame a un subprograma para calcular el factorial de ese número.
  2. 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

  1. Programa Principal:

    • Solicita al usuario un número y lo almacena en NUMERO.
    • Llama al subprograma FactorialSubprogram pasando NUMERO y FACTORIAL.
    • Muestra el resultado en la pantalla.
  2. Subprograma:

    • Inicializa FACTORIAL a 1.
    • Utiliza un bucle PERFORM para calcular el factorial multiplicando FACTORIAL por cada número desde 1 hasta NUMERO.
    • Devuelve el resultado al programa principal.

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.

© Copyright 2024. Todos los derechos reservados