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

  1. FILE-CONTROL: Defineix l'arxiu EmployeeFile com un arxiu indexat amb accés dinàmic. La clau d'índex és EmployeeID.
  2. FILE SECTION: Descriu l'estructura del registre EmployeeRecord amb els camps EmployeeID, EmployeeName, EmployeePosition i EmployeeSalary.
  3. WORKING-STORAGE SECTION: Defineix una variable WS-FileStatus per gestionar l'estat de l'arxiu.
  4. PROCEDURE DIVISION:
    • Obre l'arxiu en mode OUTPUT.
    • Crea un registre amb dades d'exemple i l'escriu a l'arxiu.
    • Tanca l'arxiu.

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

  1. Crea un programa COBOL que defineixi un arxiu indexat per emmagatzemar informació de productes (ProductID, ProductName, ProductPrice).
  2. Escriu diversos registres a l'arxiu.
  3. 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.

© Copyright 2024. Tots els drets reservats