En aquest tema, aprendrem com passar paràmetres a subprogrames en COBOL. Els subprogrames són una part essencial de la programació modular, ja que permeten dividir el codi en parts més petites i manejables. Passar paràmetres és una manera de transferir dades entre el programa principal i els subprogrames.

Conceptes Clau

  1. Subprogrames: Són blocs de codi que es poden cridar des d'altres parts del programa.
  2. Paràmetres: Són variables que es passen als subprogrames per proporcionar dades necessàries per a la seva execució.
  3. CALL Statement: Utilitzada per cridar un subprograma i passar-li paràmetres.

Tipus de Paràmetres

  1. Paràmetres per Valor (BY VALUE): Es passa una còpia del valor de la variable.
  2. Paràmetres per Referència (BY REFERENCE): Es passa l'adreça de la variable, permetent que el subprograma modifiqui el valor original.

Estructura Bàsica

Programa Principal

IDENTIFICATION DIVISION.
PROGRAM-ID. MainProgram.

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

PROCEDURE DIVISION.
    DISPLAY "Calling Subprogram to Add Numbers".
    CALL 'AddNumbers' USING WS-NUM1 WS-NUM2 WS-RESULT.
    DISPLAY "Result: " WS-RESULT.
    STOP RUN.

Subprograma

IDENTIFICATION DIVISION.
PROGRAM-ID. AddNumbers.

DATA DIVISION.
LINKAGE SECTION.
01 LK-NUM1 PIC 9(2).
01 LK-NUM2 PIC 9(2).
01 LK-RESULT PIC 9(2).

PROCEDURE DIVISION USING LK-NUM1 LK-NUM2 LK-RESULT.
    COMPUTE LK-RESULT = LK-NUM1 + LK-NUM2.
    EXIT PROGRAM.

Explicació del Codi

  1. Programa Principal:

    • Declara les variables WS-NUM1, WS-NUM2 i WS-RESULT.
    • Utilitza la sentència CALL per cridar el subprograma AddNumbers i passa les variables com a paràmetres.
    • Mostra el resultat retornat pel subprograma.
  2. Subprograma:

    • Declara les variables en la secció LINKAGE.
    • Utilitza la sentència USING per rebre els paràmetres.
    • Realitza l'operació de suma i emmagatzema el resultat en LK-RESULT.
    • Utilitza EXIT PROGRAM per tornar al programa principal.

Exercicis Pràctics

Exercici 1: Multiplicació de Nombres

Objectiu: Escriu un subprograma que multipliqui dos nombres i retorni el resultat.

Programa Principal:

IDENTIFICATION DIVISION.
PROGRAM-ID. MainProgram.

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

PROCEDURE DIVISION.
    DISPLAY "Calling Subprogram to Multiply Numbers".
    CALL 'MultiplyNumbers' USING WS-NUM1 WS-NUM2 WS-RESULT.
    DISPLAY "Result: " WS-RESULT.
    STOP RUN.

Subprograma:

IDENTIFICATION DIVISION.
PROGRAM-ID. MultiplyNumbers.

DATA DIVISION.
LINKAGE SECTION.
01 LK-NUM1 PIC 9(2).
01 LK-NUM2 PIC 9(2).
01 LK-RESULT PIC 9(2).

PROCEDURE DIVISION USING LK-NUM1 LK-NUM2 LK-RESULT.
    COMPUTE LK-RESULT = LK-NUM1 * LK-NUM2.
    EXIT PROGRAM.

Exercici 2: Concatenació de Cadenes

Objectiu: Escriu un subprograma que concateni dues cadenes i retorni el resultat.

Programa Principal:

IDENTIFICATION DIVISION.
PROGRAM-ID. MainProgram.

DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-STR1 PIC X(10) VALUE 'Hello'.
01 WS-STR2 PIC X(10) VALUE 'World'.
01 WS-RESULT PIC X(20).

PROCEDURE DIVISION.
    DISPLAY "Calling Subprogram to Concatenate Strings".
    CALL 'ConcatStrings' USING WS-STR1 WS-STR2 WS-RESULT.
    DISPLAY "Result: " WS-RESULT.
    STOP RUN.

Subprograma:

IDENTIFICATION DIVISION.
PROGRAM-ID. ConcatStrings.

DATA DIVISION.
LINKAGE SECTION.
01 LK-STR1 PIC X(10).
01 LK-STR2 PIC X(10).
01 LK-RESULT PIC X(20).

PROCEDURE DIVISION USING LK-STR1 LK-STR2 LK-RESULT.
    STRING LK-STR1 DELIMITED BY SPACE
           LK-STR2 DELIMITED BY SPACE
           INTO LK-RESULT.
    EXIT PROGRAM.

Errors Comuns i Solucions

  1. No Coincidència de Tipus de Dades: Assegura't que els tipus de dades dels paràmetres en el programa principal i el subprograma coincideixin.
  2. No Inicialització de Variables: Inicialitza les variables abans de passar-les com a paràmetres per evitar resultats inesperats.
  3. Manca de USING en el Subprograma: Sempre utilitza la sentència USING per rebre els paràmetres en el subprograma.

Resum

En aquest tema, hem après com passar paràmetres a subprogrames en COBOL utilitzant la sentència CALL. Hem vist exemples pràctics de com passar paràmetres per valor i per referència, i hem practicat amb exercicis per reforçar els conceptes apresos. Passar paràmetres és una tècnica fonamental per a la programació modular, permetent una millor organització i reutilització del codi.

© Copyright 2024. Tots els drets reservats