En este tema, aprenderemos sobre el procesamiento de archivos indexados en COBOL. Los archivos indexados son una estructura de datos que permite el acceso rápido a registros mediante el uso de índices. Este tipo de archivo es muy útil cuando se necesita buscar, insertar o eliminar registros de manera eficiente.

Conceptos Clave

  1. Archivos Indexados: Archivos que utilizan índices para permitir el acceso rápido a los registros.
  2. Llave Primaria: Un campo o conjunto de campos que identifican de manera única un registro en el archivo.
  3. Llave Alternativa: Campos adicionales que pueden ser utilizados para acceder a los registros.
  4. Acceso Secuencial y Aleatorio: Métodos para leer registros en orden o directamente mediante una llave.

Estructura de un Archivo Indexado en COBOL

Un archivo indexado en COBOL se define en la DIVISION DATA y se maneja en la DIVISION PROCEDURE. A continuación, se muestra un ejemplo básico de cómo definir y utilizar un archivo indexado.

Definición del Archivo

IDENTIFICATION DIVISION.
PROGRAM-ID. IndexedFileExample.

ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
    SELECT EmployeeFile ASSIGN TO 'employee.dat'
        ORGANIZATION IS INDEXED
        ACCESS MODE IS RANDOM
        RECORD KEY IS EmployeeID
        FILE STATUS IS FileStatus.

DATA DIVISION.
FILE SECTION.
FD EmployeeFile.
01 EmployeeRecord.
   05 EmployeeID       PIC X(5).
   05 EmployeeName     PIC X(20).
   05 EmployeePosition PIC X(15).

WORKING-STORAGE SECTION.
01 FileStatus          PIC XX.
01 WS-EmployeeID       PIC X(5).
01 WS-EmployeeName     PIC X(20).
01 WS-EmployeePosition PIC X(15).

PROCEDURE DIVISION.
    OPEN OUTPUT EmployeeFile
    MOVE '00001' TO EmployeeID
    MOVE 'John Doe' TO EmployeeName
    MOVE 'Manager' TO EmployeePosition
    WRITE EmployeeRecord
    CLOSE EmployeeFile
    STOP RUN.

Explicación del Código

  1. IDENTIFICATION DIVISION: Define el nombre del programa.
  2. ENVIRONMENT DIVISION: Define el archivo y sus propiedades.
    • SELECT EmployeeFile ASSIGN TO 'employee.dat': Asigna el archivo físico.
    • ORGANIZATION IS INDEXED: Especifica que el archivo es indexado.
    • ACCESS MODE IS RANDOM: Define el modo de acceso (puede ser SEQUENTIAL, RANDOM o DYNAMIC).
    • RECORD KEY IS EmployeeID: Define la llave primaria.
    • FILE STATUS IS FileStatus: Variable para almacenar el estado del archivo.
  3. DATA DIVISION: Define la estructura del archivo y las variables de trabajo.
  4. PROCEDURE DIVISION: Contiene las operaciones de apertura, escritura y cierre del archivo.

Operaciones Básicas

Lectura de un Registro

PROCEDURE DIVISION.
    OPEN I-O EmployeeFile
    MOVE '00001' TO EmployeeID
    READ EmployeeFile
        INVALID KEY DISPLAY 'Record not found'
    END-READ
    DISPLAY 'Employee Name: ' EmployeeName
    DISPLAY 'Employee Position: ' EmployeePosition
    CLOSE EmployeeFile
    STOP RUN.

Actualización de un Registro

PROCEDURE DIVISION.
    OPEN I-O EmployeeFile
    MOVE '00001' TO EmployeeID
    READ EmployeeFile
        INVALID KEY DISPLAY 'Record not found'
    END-READ
    MOVE 'Jane Doe' TO EmployeeName
    REWRITE EmployeeRecord
    CLOSE EmployeeFile
    STOP RUN.

Eliminación de un Registro

PROCEDURE DIVISION.
    OPEN I-O EmployeeFile
    MOVE '00001' TO EmployeeID
    READ EmployeeFile
        INVALID KEY DISPLAY 'Record not found'
    END-READ
    DELETE EmployeeFile
    CLOSE EmployeeFile
    STOP RUN.

Ejercicio Práctico

Ejercicio

  1. Objetivo: Crear un programa COBOL que maneje un archivo indexado de productos.
  2. Requisitos:
    • Definir un archivo indexado con los campos ProductID, ProductName y ProductPrice.
    • Implementar operaciones para agregar, leer, actualizar y eliminar registros.

Solución

IDENTIFICATION DIVISION.
PROGRAM-ID. ProductFileExample.

ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
    SELECT ProductFile ASSIGN TO 'product.dat'
        ORGANIZATION IS INDEXED
        ACCESS MODE IS RANDOM
        RECORD KEY IS ProductID
        FILE STATUS IS FileStatus.

DATA DIVISION.
FILE SECTION.
FD ProductFile.
01 ProductRecord.
   05 ProductID       PIC X(5).
   05 ProductName     PIC X(20).
   05 ProductPrice    PIC 9(5)V99.

WORKING-STORAGE SECTION.
01 FileStatus         PIC XX.
01 WS-ProductID       PIC X(5).
01 WS-ProductName     PIC X(20).
01 WS-ProductPrice    PIC 9(5)V99.

PROCEDURE DIVISION.
    OPEN OUTPUT ProductFile
    MOVE 'P001' TO ProductID
    MOVE 'Laptop' TO ProductName
    MOVE 999.99 TO ProductPrice
    WRITE ProductRecord
    CLOSE ProductFile

    OPEN I-O ProductFile
    MOVE 'P001' TO ProductID
    READ ProductFile
        INVALID KEY DISPLAY 'Product not found'
    END-READ
    DISPLAY 'Product Name: ' ProductName
    DISPLAY 'Product Price: ' ProductPrice

    MOVE 'Gaming Laptop' TO ProductName
    MOVE 1299.99 TO ProductPrice
    REWRITE ProductRecord

    DELETE ProductFile
    CLOSE ProductFile
    STOP RUN.

Explicación

  1. Definición del Archivo: Similar al ejemplo anterior, pero con campos específicos para productos.
  2. Operaciones:
    • Agregar: Se abre el archivo en modo OUTPUT y se escribe un registro.
    • Leer: Se abre el archivo en modo I-O, se lee un registro y se muestra.
    • Actualizar: Se modifica el registro leído y se reescribe.
    • Eliminar: Se elimina el registro del archivo.

Conclusión

En este tema, hemos aprendido a manejar archivos indexados en COBOL, incluyendo la definición del archivo, y las operaciones básicas de lectura, escritura, actualización y eliminación de registros. Los archivos indexados son esenciales para aplicaciones que requieren acceso rápido y eficiente a grandes volúmenes de datos. Con esta base, estás preparado para manejar archivos indexados en tus proyectos COBOL.

En el próximo módulo, exploraremos el manejo avanzado de datos, incluyendo tablas y arreglos, lo que te permitirá trabajar con estructuras de datos más complejas.

© Copyright 2024. Todos los derechos reservados