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
- Archivos Indexados: Archivos que utilizan índices para permitir el acceso rápido a los registros.
- Llave Primaria: Un campo o conjunto de campos que identifican de manera única un registro en el archivo.
- Llave Alternativa: Campos adicionales que pueden ser utilizados para acceder a los registros.
- 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
- IDENTIFICATION DIVISION: Define el nombre del programa.
- 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.
- DATA DIVISION: Define la estructura del archivo y las variables de trabajo.
- 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
- Objetivo: Crear un programa COBOL que maneje un archivo indexado de productos.
- Requisitos:
- Definir un archivo indexado con los campos
ProductID
,ProductName
yProductPrice
. - Implementar operaciones para agregar, leer, actualizar y eliminar registros.
- Definir un archivo indexado con los campos
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
- Definición del Archivo: Similar al ejemplo anterior, pero con campos específicos para productos.
- 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.
Curso de Programación COBOL
Módulo 1: Introducción a COBOL
- ¿Qué es COBOL?
- Historia de COBOL
- Configuración del Entorno COBOL
- Estructura Básica de un Programa COBOL
Módulo 2: Sintaxis Básica de COBOL y Tipos de Datos
Módulo 3: Estructuras de Control
Módulo 4: Trabajando con Datos
- Manejo de Archivos en COBOL
- Procesamiento de Archivos Secuenciales
- Procesamiento de Archivos Indexados
- Procesamiento de Archivos Relativos
Módulo 5: Manejo Avanzado de Datos
Módulo 6: Subprogramas y Programación Modular
Módulo 7: Manejo de Errores y Depuración
Módulo 8: COBOL y Bases de Datos
Módulo 9: Temas Avanzados
- COBOL Orientado a Objetos
- COBOL y Servicios Web
- Optimización del Rendimiento
- Mejores Prácticas en Programación COBOL