La programació modular és una tècnica que permet dividir un programa gran en parts més petites i manejables, anomenades mòduls o subprogrames. Aquesta tècnica facilita la gestió, manteniment i depuració del codi, així com la seva reutilització. En aquest tema, explorarem les tècniques de programació modular en COBOL.
Objectius
- Comprendre els avantatges de la programació modular.
- Aprendre a crear i utilitzar subprogrames en COBOL.
- Conèixer les tècniques per passar paràmetres entre subprogrames.
- Aplicar les millors pràctiques en la programació modular.
Avantatges de la Programació Modular
- Mantenibilitat: Els mòduls més petits són més fàcils de mantenir i actualitzar.
- Reutilització: Els mòduls poden ser reutilitzats en diferents parts del programa o en altres programes.
- Depuració: Els errors són més fàcils de localitzar i corregir en mòduls més petits.
- Col·laboració: Facilita el treball en equip, ja que diferents programadors poden treballar en diferents mòduls simultàniament.
Creació de Subprogrames en COBOL
Definició d'un Subprograma
Un subprograma en COBOL es defineix en una secció separada del programa principal. Aquí teniu un exemple bàsic:
IDENTIFICATION DIVISION. PROGRAM-ID. MAINPROGRAM. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-NUMBER1 PIC 9(2) VALUE 10. 01 WS-NUMBER2 PIC 9(2) VALUE 20. 01 WS-RESULT PIC 9(2). PROCEDURE DIVISION. CALL 'SUBPROGRAM' USING WS-NUMBER1 WS-NUMBER2 WS-RESULT. DISPLAY 'Result: ' WS-RESULT. STOP RUN. IDENTIFICATION DIVISION. PROGRAM-ID. SUBPROGRAM. DATA DIVISION. LINKAGE SECTION. 01 LK-NUMBER1 PIC 9(2). 01 LK-NUMBER2 PIC 9(2). 01 LK-RESULT PIC 9(2). PROCEDURE DIVISION USING LK-NUMBER1 LK-NUMBER2 LK-RESULT. COMPUTE LK-RESULT = LK-NUMBER1 + LK-NUMBER2. EXIT PROGRAM.
Explicació del Codi
-
Programa Principal (MAINPROGRAM):
- Declara les variables
WS-NUMBER1
,WS-NUMBER2
iWS-RESULT
en la secció de treball. - Utilitza la sentència
CALL
per cridar el subprogramaSUBPROGRAM
i passa les variables com a paràmetres. - Mostra el resultat retornat pel subprograma.
- Declara les variables
-
Subprograma (SUBPROGRAM):
- Declara les variables de connexió
LK-NUMBER1
,LK-NUMBER2
iLK-RESULT
en la secció de connexió. - Defineix la divisió de procediment amb els paràmetres d'entrada
USING
. - Realitza el càlcul i assigna el resultat a
LK-RESULT
. - Utilitza
EXIT PROGRAM
per tornar al programa principal.
- Declara les variables de connexió
Passant Paràmetres entre Subprogrames
Els paràmetres es passen entre el programa principal i els subprogrames mitjançant la secció de connexió (LINKAGE SECTION
) i la sentència USING
. És important assegurar-se que els tipus de dades i les longituds dels paràmetres coincideixin entre el programa principal i el subprograma.
Exemple de Passant Paràmetres per Referència
En COBOL, els paràmetres es passen per referència, el que significa que el subprograma pot modificar els valors de les variables passades des del programa principal.
IDENTIFICATION DIVISION. PROGRAM-ID. MAINPROGRAM. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-NUMBER1 PIC 9(2) VALUE 10. 01 WS-NUMBER2 PIC 9(2) VALUE 20. 01 WS-RESULT PIC 9(2). PROCEDURE DIVISION. CALL 'SUBPROGRAM' USING WS-NUMBER1 WS-NUMBER2 WS-RESULT. DISPLAY 'Result: ' WS-RESULT. STOP RUN. IDENTIFICATION DIVISION. PROGRAM-ID. SUBPROGRAM. DATA DIVISION. LINKAGE SECTION. 01 LK-NUMBER1 PIC 9(2). 01 LK-NUMBER2 PIC 9(2). 01 LK-RESULT PIC 9(2). PROCEDURE DIVISION USING LK-NUMBER1 LK-NUMBER2 LK-RESULT. COMPUTE LK-RESULT = LK-NUMBER1 + LK-NUMBER2. EXIT PROGRAM.
Millors Pràctiques en Programació Modular
- Nomenclatura Clara: Utilitza noms descriptius per als subprogrames i les variables.
- Documentació: Documenta cada subprograma amb comentaris que expliquin la seva funció i els seus paràmetres.
- Modularitat: Divideix el codi en mòduls lògics i independents.
- Reutilització: Escriu subprogrames que puguin ser reutilitzats en diferents parts del programa o en altres projectes.
- Proves: Prova cada subprograma de manera independent abans d'integrar-lo en el programa principal.
Exercici Pràctic
Enunciat
Crea un programa COBOL que calculi la suma, resta, multiplicació i divisió de dos nombres. Utilitza subprogrames per a cada operació aritmètica.
Solució
IDENTIFICATION DIVISION. PROGRAM-ID. MAINPROGRAM. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-NUMBER1 PIC 9(2) VALUE 10. 01 WS-NUMBER2 PIC 9(2) VALUE 5. 01 WS-RESULT PIC 9(2). PROCEDURE DIVISION. CALL 'ADD-SUBPROGRAM' USING WS-NUMBER1 WS-NUMBER2 WS-RESULT. DISPLAY 'Sum: ' WS-RESULT. CALL 'SUBTRACT-SUBPROGRAM' USING WS-NUMBER1 WS-NUMBER2 WS-RESULT. DISPLAY 'Difference: ' WS-RESULT. CALL 'MULTIPLY-SUBPROGRAM' USING WS-NUMBER1 WS-NUMBER2 WS-RESULT. DISPLAY 'Product: ' WS-RESULT. CALL 'DIVIDE-SUBPROGRAM' USING WS-NUMBER1 WS-NUMBER2 WS-RESULT. DISPLAY 'Quotient: ' WS-RESULT. STOP RUN. IDENTIFICATION DIVISION. PROGRAM-ID. ADD-SUBPROGRAM. DATA DIVISION. LINKAGE SECTION. 01 LK-NUMBER1 PIC 9(2). 01 LK-NUMBER2 PIC 9(2). 01 LK-RESULT PIC 9(2). PROCEDURE DIVISION USING LK-NUMBER1 LK-NUMBER2 LK-RESULT. COMPUTE LK-RESULT = LK-NUMBER1 + LK-NUMBER2. EXIT PROGRAM. IDENTIFICATION DIVISION. PROGRAM-ID. SUBTRACT-SUBPROGRAM. DATA DIVISION. LINKAGE SECTION. 01 LK-NUMBER1 PIC 9(2). 01 LK-NUMBER2 PIC 9(2). 01 LK-RESULT PIC 9(2). PROCEDURE DIVISION USING LK-NUMBER1 LK-NUMBER2 LK-RESULT. COMPUTE LK-RESULT = LK-NUMBER1 - LK-NUMBER2. EXIT PROGRAM. IDENTIFICATION DIVISION. PROGRAM-ID. MULTIPLY-SUBPROGRAM. DATA DIVISION. LINKAGE SECTION. 01 LK-NUMBER1 PIC 9(2). 01 LK-NUMBER2 PIC 9(2). 01 LK-RESULT PIC 9(2). PROCEDURE DIVISION USING LK-NUMBER1 LK-NUMBER2 LK-RESULT. COMPUTE LK-RESULT = LK-NUMBER1 * LK-NUMBER2. EXIT PROGRAM. IDENTIFICATION DIVISION. PROGRAM-ID. DIVIDE-SUBPROGRAM. DATA DIVISION. LINKAGE SECTION. 01 LK-NUMBER1 PIC 9(2). 01 LK-NUMBER2 PIC 9(2). 01 LK-RESULT PIC 9(2). PROCEDURE DIVISION USING LK-NUMBER1 LK-NUMBER2 LK-RESULT. IF LK-NUMBER2 NOT = 0 COMPUTE LK-RESULT = LK-NUMBER1 / LK-NUMBER2 ELSE MOVE 0 TO LK-RESULT. EXIT PROGRAM.
Explicació del Codi
- Programa Principal (MAINPROGRAM): Crida quatre subprogrames diferents per realitzar les operacions aritmètiques i mostra els resultats.
- Subprogrames (ADD-SUBPROGRAM, SUBTRACT-SUBPROGRAM, MULTIPLY-SUBPROGRAM, DIVIDE-SUBPROGRAM): Cada subprograma realitza una operació aritmètica específica i retorna el resultat al programa principal.
Conclusió
La programació modular en COBOL permet dividir un programa en parts més petites i manejables, facilitant la seva gestió, manteniment i depuració. Mitjançant l'ús de subprogrames i la tècnica de passar paràmetres, podem crear codi més clar, reutilitzable i fàcil de mantenir. Practicar aquestes tècniques és essencial per convertir-se en un programador COBOL eficient i efectiu.
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