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
- Subprogrames: Són blocs de codi que es poden cridar des d'altres parts del programa.
- Paràmetres: Són variables que es passen als subprogrames per proporcionar dades necessàries per a la seva execució.
- CALL Statement: Utilitzada per cridar un subprograma i passar-li paràmetres.
Tipus de Paràmetres
- Paràmetres per Valor (BY VALUE): Es passa una còpia del valor de la variable.
- 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
-
Programa Principal:
- Declara les variables
WS-NUM1,WS-NUM2iWS-RESULT. - Utilitza la sentència
CALLper cridar el subprogramaAddNumbersi passa les variables com a paràmetres. - Mostra el resultat retornat pel subprograma.
- Declara les variables
-
Subprograma:
- Declara les variables en la secció
LINKAGE. - Utilitza la sentència
USINGper rebre els paràmetres. - Realitza l'operació de suma i emmagatzema el resultat en
LK-RESULT. - Utilitza
EXIT PROGRAMper tornar al programa principal.
- Declara les variables en la secció
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
- 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.
- No Inicialització de Variables: Inicialitza les variables abans de passar-les com a paràmetres per evitar resultats inesperats.
- Manca de
USINGen el Subprograma: Sempre utilitza la sentènciaUSINGper 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.
Curs de Programació COBOL
Mòdul 1: Introducció al COBOL
- Què és el COBOL?
- Història del COBOL
- Configuració de l'Entorn COBOL
- Estructura Bàsica d'un Programa COBOL
Mòdul 2: Sintaxi Bàsica del COBOL i Tipus de Dades
Mòdul 3: Estructures de Control
Mòdul 4: Treballant amb Dades
- Gestió d'Arxius en COBOL
- Processament d'Arxius Seqüencials
- Processament d'Arxius Indexats
- Processament d'Arxius Relatius
Mòdul 5: Gestió Avançada de Dades
Mòdul 6: Subprogrames i Programació Modular
Mòdul 7: Gestió d'Errors i Depuració
Mòdul 8: COBOL i Bases de Dades
Mòdul 9: Temes Avançats
- COBOL Orientat a Objectes
- COBOL i Serveis Web
- Optimització del Rendiment
- Millors Pràctiques en Programació COBOL
