En aquest tema, aprendrem com gestionar arxius indexats en COBOL. Els arxius indexats són una estructura de dades que permet accedir ràpidament a registres individuals mitjançant una clau d'índex. Això és especialment útil quan es treballa amb grans volums de dades on l'accés ràpid i eficient és crucial.
Objectius
- Entendre què són els arxius indexats.
- Aprendre a definir i utilitzar arxius indexats en COBOL.
- Realitzar operacions bàsiques com la creació, lectura, escriptura i actualització de registres en arxius indexats.
Què és un Arxiu Indexat?
Un arxiu indexat és un tipus d'arxiu que permet l'accés directe als registres mitjançant una clau d'índex. Cada registre en l'arxiu té una clau única que es pot utilitzar per accedir ràpidament a aquest registre.
Característiques dels Arxius Indexats
- Accés Ràpid: Permet accedir directament a un registre específic mitjançant la seva clau.
- Clau d'Índex: Cada registre té una clau única que s'utilitza per indexar i accedir al registre.
- Estructura Flexible: Permet l'addició, eliminació i actualització de registres de manera eficient.
Definició d'un Arxiu Indexat en COBOL
Per treballar amb arxius indexats en COBOL, primer hem de definir l'arxiu en la secció FILE-CONTROL
i després descriure la seva estructura en la secció FILE SECTION
.
Exemple de Definició d'un Arxiu Indexat
IDENTIFICATION DIVISION. PROGRAM-ID. IndexedFileExample. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT EmployeeFile ASSIGN TO 'employee.dat' ORGANIZATION IS INDEXED ACCESS MODE IS DYNAMIC RECORD KEY IS EmployeeID FILE STATUS IS WS-FileStatus. DATA DIVISION. FILE SECTION. FD EmployeeFile. 01 EmployeeRecord. 05 EmployeeID PIC X(10). 05 EmployeeName PIC X(30). 05 EmployeePosition PIC X(20). 05 EmployeeSalary PIC 9(5)V99. WORKING-STORAGE SECTION. 01 WS-FileStatus PIC XX. PROCEDURE DIVISION. OPEN OUTPUT EmployeeFile IF WS-FileStatus NOT = '00' DISPLAY 'Error opening file' STOP RUN END-IF. MOVE 'E001' TO EmployeeID. MOVE 'John Doe' TO EmployeeName. MOVE 'Manager' TO EmployeePosition. MOVE 50000 TO EmployeeSalary. WRITE EmployeeRecord. CLOSE EmployeeFile. STOP RUN.
Explicació del Codi
- FILE-CONTROL: Defineix l'arxiu
EmployeeFile
com un arxiu indexat amb accés dinàmic. La clau d'índex ésEmployeeID
. - FILE SECTION: Descriu l'estructura del registre
EmployeeRecord
amb els campsEmployeeID
,EmployeeName
,EmployeePosition
iEmployeeSalary
. - WORKING-STORAGE SECTION: Defineix una variable
WS-FileStatus
per gestionar l'estat de l'arxiu. - PROCEDURE DIVISION:
- Obre l'arxiu en mode
OUTPUT
. - Crea un registre amb dades d'exemple i l'escriu a l'arxiu.
- Tanca l'arxiu.
- Obre l'arxiu en mode
Operacions Bàsiques amb Arxius Indexats
Creació d'un Arxiu Indexat
Per crear un arxiu indexat, utilitzem la sentència OPEN OUTPUT
i després escrivim els registres utilitzant la sentència WRITE
.
Lectura d'un Arxiu Indexat
Per llegir registres d'un arxiu indexat, utilitzem la sentència READ
amb la clau d'índex.
OPEN I-O EmployeeFile IF WS-FileStatus NOT = '00' DISPLAY 'Error opening file' STOP RUN END-IF. MOVE 'E001' TO EmployeeID. READ EmployeeFile INVALID KEY DISPLAY 'Record not found' END-READ. DISPLAY 'Employee Name: ' EmployeeName. DISPLAY 'Employee Position: ' EmployeePosition. DISPLAY 'Employee Salary: ' EmployeeSalary. CLOSE EmployeeFile.
Actualització d'un Registre
Per actualitzar un registre, primer el llegim i després utilitzem la sentència REWRITE
.
MOVE 'E001' TO EmployeeID. READ EmployeeFile INVALID KEY DISPLAY 'Record not found' END-READ. MOVE 'Senior Manager' TO EmployeePosition. REWRITE EmployeeRecord. CLOSE EmployeeFile.
Eliminació d'un Registre
Per eliminar un registre, utilitzem la sentència DELETE
.
MOVE 'E001' TO EmployeeID. READ EmployeeFile INVALID KEY DISPLAY 'Record not found' END-READ. DELETE EmployeeFile INVALID KEY DISPLAY 'Error deleting record' END-DELETE. CLOSE EmployeeFile.
Exercicis Pràctics
Exercici 1: Creació i Lectura d'un Arxiu Indexat
- Crea un programa COBOL que defineixi un arxiu indexat per emmagatzemar informació de productes (ProductID, ProductName, ProductPrice).
- Escriu diversos registres a l'arxiu.
- Llegeix i mostra un registre específic utilitzant la clau
ProductID
.
Solució
IDENTIFICATION DIVISION. PROGRAM-ID. ProductFileExample. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT ProductFile ASSIGN TO 'product.dat' ORGANIZATION IS INDEXED ACCESS MODE IS DYNAMIC RECORD KEY IS ProductID FILE STATUS IS WS-FileStatus. DATA DIVISION. FILE SECTION. FD ProductFile. 01 ProductRecord. 05 ProductID PIC X(10). 05 ProductName PIC X(30). 05 ProductPrice PIC 9(5)V99. WORKING-STORAGE SECTION. 01 WS-FileStatus PIC XX. PROCEDURE DIVISION. OPEN OUTPUT ProductFile IF WS-FileStatus NOT = '00' DISPLAY 'Error opening file' STOP RUN END-IF. MOVE 'P001' TO ProductID. MOVE 'Laptop' TO ProductName. MOVE 1500.00 TO ProductPrice. WRITE ProductRecord. MOVE 'P002' TO ProductID. MOVE 'Smartphone' TO ProductName. MOVE 800.00 TO ProductPrice. WRITE ProductRecord. CLOSE ProductFile. OPEN I-O ProductFile IF WS-FileStatus NOT = '00' DISPLAY 'Error opening file' STOP RUN END-IF. MOVE 'P001' TO ProductID. READ ProductFile INVALID KEY DISPLAY 'Record not found' END-READ. DISPLAY 'Product Name: ' ProductName. DISPLAY 'Product Price: ' ProductPrice. CLOSE ProductFile. STOP RUN.
Resum
En aquest tema, hem après a treballar amb arxius indexats en COBOL. Hem vist com definir un arxiu indexat, com realitzar operacions bàsiques com la creació, lectura, escriptura, actualització i eliminació de registres. Els arxius indexats són una eina poderosa per gestionar grans volums de dades de manera eficient.
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