En aquest tema, aprendrem sobre el processament d'arxius relatius en COBOL. Els arxius relatius són una forma d'emmagatzematge de dades on cada registre té una posició relativa dins de l'arxiu. Això permet accedir directament a qualsevol registre si es coneix la seva posició relativa.
Objectius
- Entendre què són els arxius relatius.
- Aprendre a definir i utilitzar arxius relatius en COBOL.
- Realitzar operacions bàsiques com llegir, escriure, actualitzar i esborrar registres en arxius relatius.
Què són els Arxius Relatius?
Els arxius relatius són arxius on cada registre es pot accedir directament mitjançant un número de registre relatiu (RRN - Relative Record Number). Això permet un accés ràpid i eficient als registres, ja que no cal llegir l'arxiu seqüencialment per trobar un registre específic.
Característiques dels Arxius Relatius
- Accés Directe: Es pot accedir directament a qualsevol registre si es coneix el seu número de registre relatiu.
- Eficient: L'accés directe fa que les operacions siguin més ràpides en comparació amb els arxius seqüencials.
- Flexibilitat: Permet operacions com la inserció, actualització i esborrat de registres de manera eficient.
Definició d'Arxius Relatius en COBOL
Per treballar amb arxius relatius en COBOL, cal definir l'arxiu en la secció FILE-CONTROL
i la seva estructura en la secció DATA DIVISION
.
Exemple de Definició d'un Arxiu Relatiu
IDENTIFICATION DIVISION. PROGRAM-ID. RelativeFileExample. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT relative-file ASSIGN TO "relative.dat" ORGANIZATION IS RELATIVE ACCESS MODE IS RANDOM RECORD KEY IS relative-key FILE STATUS IS file-status. DATA DIVISION. FILE SECTION. FD relative-file. 01 relative-record. 05 relative-key PIC 9(4). 05 relative-data PIC X(20). WORKING-STORAGE SECTION. 01 file-status PIC XX. 01 ws-relative-key PIC 9(4). 01 ws-relative-data PIC X(20). PROCEDURE DIVISION. OPEN OUTPUT relative-file MOVE 1 TO ws-relative-key MOVE "First Record" TO ws-relative-data WRITE relative-record MOVE 2 TO ws-relative-key MOVE "Second Record" TO ws-relative-data WRITE relative-record CLOSE relative-file STOP RUN.
Explicació del Codi
- FILE-CONTROL: Defineix l'arxiu relatiu amb
ORGANIZATION IS RELATIVE
iACCESS MODE IS RANDOM
. - FILE SECTION: Defineix l'estructura del registre amb un camp clau (
relative-key
) i un camp de dades (relative-data
). - WORKING-STORAGE SECTION: Defineix variables de treball per gestionar els registres.
- PROCEDURE DIVISION: Obre l'arxiu en mode de sortida (
OUTPUT
), escriu dos registres i tanca l'arxiu.
Operacions Bàsiques amb Arxius Relatius
Llegir un Registre
Per llegir un registre específic, cal moure el número de registre relatiu a la clau i utilitzar la sentència READ
.
OPEN INPUT relative-file MOVE 1 TO ws-relative-key READ relative-file INVALID KEY DISPLAY "Record not found" END-READ DISPLAY "Key: " ws-relative-key " Data: " ws-relative-data CLOSE relative-file.
Escriure un Registre
Per escriure un nou registre, cal moure el número de registre relatiu a la clau i utilitzar la sentència WRITE
.
OPEN OUTPUT relative-file MOVE 3 TO ws-relative-key MOVE "Third Record" TO ws-relative-data WRITE relative-record CLOSE relative-file.
Actualitzar un Registre
Per actualitzar un registre existent, cal llegir el registre, modificar les dades i utilitzar la sentència REWRITE
.
OPEN I-O relative-file MOVE 2 TO ws-relative-key READ relative-file INVALID KEY DISPLAY "Record not found" END-READ MOVE "Updated Record" TO ws-relative-data REWRITE relative-record CLOSE relative-file.
Esborrar un Registre
Per esborrar un registre, cal moure el número de registre relatiu a la clau i utilitzar la sentència DELETE
.
OPEN I-O relative-file MOVE 2 TO ws-relative-key DELETE relative-file INVALID KEY DISPLAY "Record not found" END-DELETE CLOSE relative-file.
Exercicis Pràctics
Exercici 1: Crear i Escriure en un Arxiu Relatiu
- Defineix un arxiu relatiu amb una estructura de registre que contingui un camp clau i un camp de dades.
- Escriu un programa COBOL que creï l'arxiu i escrigui tres registres en ell.
Exercici 2: Llegir i Actualitzar un Registre
- Escriu un programa COBOL que llegeixi un registre específic d'un arxiu relatiu.
- Actualitza el camp de dades del registre llegit i guarda els canvis.
Exercici 3: Esborrar un Registre
- Escriu un programa COBOL que esborri un registre específic d'un arxiu relatiu.
- Verifica que el registre ha estat esborrat intentant llegir-lo després de l'esborrat.
Solucions als Exercicis
Solució a l'Exercici 1
IDENTIFICATION DIVISION. PROGRAM-ID. CreateRelativeFile. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT relative-file ASSIGN TO "relative.dat" ORGANIZATION IS RELATIVE ACCESS MODE IS RANDOM RECORD KEY IS relative-key FILE STATUS IS file-status. DATA DIVISION. FILE SECTION. FD relative-file. 01 relative-record. 05 relative-key PIC 9(4). 05 relative-data PIC X(20). WORKING-STORAGE SECTION. 01 file-status PIC XX. 01 ws-relative-key PIC 9(4). 01 ws-relative-data PIC X(20). PROCEDURE DIVISION. OPEN OUTPUT relative-file MOVE 1 TO ws-relative-key MOVE "First Record" TO ws-relative-data WRITE relative-record MOVE 2 TO ws-relative-key MOVE "Second Record" TO ws-relative-data WRITE relative-record MOVE 3 TO ws-relative-key MOVE "Third Record" TO ws-relative-data WRITE relative-record CLOSE relative-file STOP RUN.
Solució a l'Exercici 2
IDENTIFICATION DIVISION. PROGRAM-ID. ReadUpdateRelativeFile. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT relative-file ASSIGN TO "relative.dat" ORGANIZATION IS RELATIVE ACCESS MODE IS RANDOM RECORD KEY IS relative-key FILE STATUS IS file-status. DATA DIVISION. FILE SECTION. FD relative-file. 01 relative-record. 05 relative-key PIC 9(4). 05 relative-data PIC X(20). WORKING-STORAGE SECTION. 01 file-status PIC XX. 01 ws-relative-key PIC 9(4). 01 ws-relative-data PIC X(20). PROCEDURE DIVISION. OPEN I-O relative-file MOVE 2 TO ws-relative-key READ relative-file INVALID KEY DISPLAY "Record not found" END-READ DISPLAY "Before Update - Key: " ws-relative-key " Data: " ws-relative-data MOVE "Updated Record" TO ws-relative-data REWRITE relative-record DISPLAY "After Update - Key: " ws-relative-key " Data: " ws-relative-data CLOSE relative-file STOP RUN.
Solució a l'Exercici 3
IDENTIFICATION DIVISION. PROGRAM-ID. DeleteRelativeFileRecord. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT relative-file ASSIGN TO "relative.dat" ORGANIZATION IS RELATIVE ACCESS MODE IS RANDOM RECORD KEY IS relative-key FILE STATUS IS file-status. DATA DIVISION. FILE SECTION. FD relative-file. 01 relative-record. 05 relative-key PIC 9(4). 05 relative-data PIC X(20). WORKING-STORAGE SECTION. 01 file-status PIC XX. 01 ws-relative-key PIC 9(4). 01 ws-relative-data PIC X(20). PROCEDURE DIVISION. OPEN I-O relative-file MOVE 2 TO ws-relative-key DELETE relative-file INVALID KEY DISPLAY "Record not found" END-DELETE MOVE 2 TO ws-relative-key READ relative-file INVALID KEY DISPLAY "Record successfully deleted" END-READ CLOSE relative-file STOP RUN.
Conclusió
En aquest tema, hem après què són els arxius relatius i com treballar amb ells en COBOL. Hem vist com definir, llegir, escriure, actualitzar i esborrar registres en arxius relatius. Els exercicis pràctics proporcionats ajuden a reforçar els conceptes apresos i a adquirir experiència pràctica en el processament d'arxius relatius.
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