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

  1. Subprograma (CALLed Program): Un programa que es invocado por otro programa.
  2. Programa Principal (CALLing Program): El programa que invoca al subprograma.
  3. 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:

Calling SubProgram...
Result from SubProgram: 600

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.

© Copyright 2024. Todos los derechos reservados