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-NUM2
iWS-RESULT
. - Utilitza la sentència
CALL
per cridar el subprogramaAddNumbers
i 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
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.
- 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
USING
en el Subprograma: Sempre utilitza la sentènciaUSING
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.
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