Els subprogrames són una part fonamental de la programació modular en COBOL. Permeten dividir un programa gran en parts més petites i manejables, facilitant la seva comprensió, manteniment i reutilització. En aquest tema, explorarem què són els subprogrames, com es defineixen i com es criden des d'altres parts del programa.

Què és un Subprograma?

Un subprograma és un bloc de codi independent que realitza una tasca específica i que pot ser cridat des de diferents parts d'un programa principal o d'altres subprogrames. Els subprogrames en COBOL es defineixen en seccions separades del codi i poden rebre paràmetres per treballar amb dades específiques.

Avantatges dels Subprogrames

  1. Reutilització del Codi: Permeten reutilitzar el mateix codi en diferents parts del programa o en diferents programes.
  2. Mantenibilitat: Faciliten la localització i correcció d'errors, ja que el codi està organitzat en blocs més petits.
  3. Claredat: Milloren la llegibilitat del codi, ja que cada subprograma té una funció específica.
  4. Modularitat: Permeten dividir el programa en mòduls independents, facilitant el treball en equip i la gestió del projecte.

Definició d'un Subprograma

En COBOL, els subprogrames es defineixen en una secció separada del codi, normalment després del programa principal. A continuació es mostra l'estructura bàsica d'un subprograma:

IDENTIFICATION DIVISION.
PROGRAM-ID. Subprogram-Name.

DATA DIVISION.
WORKING-STORAGE SECTION.
* Declaració de variables locals

PROCEDURE DIVISION.
* Codi del subprograma
    EXIT PROGRAM.

Exemple de Subprograma

A continuació es mostra un exemple senzill d'un subprograma que calcula la suma de dos nombres:

IDENTIFICATION DIVISION.
PROGRAM-ID. SumSubprogram.

DATA DIVISION.
WORKING-STORAGE SECTION.
01 NUM1 PIC 9(4).
01 NUM2 PIC 9(4).
01 RESULT PIC 9(4).

PROCEDURE DIVISION USING NUM1, NUM2.
    ADD NUM1 TO NUM2 GIVING RESULT.
    DISPLAY "The sum is: " RESULT.
    EXIT PROGRAM.

Crida a un Subprograma

Per cridar un subprograma des d'un programa principal, s'utilitza la sentència CALL. La sintaxi bàsica és la següent:

CALL 'Subprogram-Name' USING Argument1, Argument2, ... .

Exemple de Crida a un Subprograma

A continuació es mostra un exemple de com cridar el subprograma SumSubprogram des d'un programa principal:

IDENTIFICATION DIVISION.
PROGRAM-ID. MainProgram.

DATA DIVISION.
WORKING-STORAGE SECTION.
01 NUM1 PIC 9(4) VALUE 10.
01 NUM2 PIC 9(4) VALUE 20.
01 RESULT PIC 9(4).

PROCEDURE DIVISION.
    CALL 'SumSubprogram' USING NUM1, NUM2.
    STOP RUN.

Exercicis Pràctics

Exercici 1: Crear un Subprograma per Calcular el Producte de Dos Nombres

  1. Defineix un subprograma anomenat ProductSubprogram que calculi el producte de dos nombres.
  2. Crida aquest subprograma des d'un programa principal i mostra el resultat.

Solució

Subprograma:

IDENTIFICATION DIVISION.
PROGRAM-ID. ProductSubprogram.

DATA DIVISION.
WORKING-STORAGE SECTION.
01 NUM1 PIC 9(4).
01 NUM2 PIC 9(4).
01 RESULT PIC 9(4).

PROCEDURE DIVISION USING NUM1, NUM2.
    MULTIPLY NUM1 BY NUM2 GIVING RESULT.
    DISPLAY "The product is: " RESULT.
    EXIT PROGRAM.

Programa Principal:

IDENTIFICATION DIVISION.
PROGRAM-ID. MainProgram.

DATA DIVISION.
WORKING-STORAGE SECTION.
01 NUM1 PIC 9(4) VALUE 5.
01 NUM2 PIC 9(4) VALUE 4.
01 RESULT PIC 9(4).

PROCEDURE DIVISION.
    CALL 'ProductSubprogram' USING NUM1, NUM2.
    STOP RUN.

Exercici 2: Crear un Subprograma per Calcular el Quocient de Dos Nombres

  1. Defineix un subprograma anomenat QuotientSubprogram que calculi el quocient de dos nombres.
  2. Crida aquest subprograma des d'un programa principal i mostra el resultat.

Solució

Subprograma:

IDENTIFICATION DIVISION.
PROGRAM-ID. QuotientSubprogram.

DATA DIVISION.
WORKING-STORAGE SECTION.
01 NUM1 PIC 9(4).
01 NUM2 PIC 9(4).
01 RESULT PIC 9(4).

PROCEDURE DIVISION USING NUM1, NUM2.
    DIVIDE NUM1 BY NUM2 GIVING RESULT.
    DISPLAY "The quotient is: " RESULT.
    EXIT PROGRAM.

Programa Principal:

IDENTIFICATION DIVISION.
PROGRAM-ID. MainProgram.

DATA DIVISION.
WORKING-STORAGE SECTION.
01 NUM1 PIC 9(4) VALUE 20.
01 NUM2 PIC 9(4) VALUE 4.
01 RESULT PIC 9(4).

PROCEDURE DIVISION.
    CALL 'QuotientSubprogram' USING NUM1, NUM2.
    STOP RUN.

Conclusió

Els subprogrames són una eina poderosa en COBOL que permeten escriure codi més modular, mantenible i reutilitzable. En aquest tema, hem après què són els subprogrames, com es defineixen i com es criden des d'altres parts del programa. A més, hem practicat amb exemples i exercicis per reforçar els conceptes apresos. En el següent tema, explorarem la sentència CALL en més detall i veurem com passar paràmetres entre subprogrames.

© Copyright 2024. Tots els drets reservats