Logo

Cómo Leer y Escribir Archivos en COBOL: Guía de Archivos Secuenciales

COBOL, que significa Common Business-Oriented Language, es un lenguaje de programación ampliamente utilizado en el mundo de los negocios y las finanzas. A pesar de su antigüedad, COBOL sigue siendo relevante en sistemas heredados y transacciones bancarias. Una de las tareas fundamentales en COBOL es la manipulación de archivos, especialmente los archivos secuenciales. En esta guía, vamos a explorar cómo leer y escribir archivos secuenciales en COBOL.

¿Qué son los Archivos Secuenciales?

Los archivos secuenciales son aquellos que están organizados de manera secuencial, lo que significa que los datos se leen y escriben en un orden preestablecido, generalmente de principio a fin. Este tipo de archivo es ideal para procesar grandes cantidades de datos de manera lineal y es común en aplicaciones COBOL.

Definición de Archivos en COBOL

Para trabajar con archivos en COBOL, primero necesitas definir la estructura del archivo en la sección FILE SECTION de la división DATA DIVISION. Aquí es donde especificas el nombre del archivo y la estructura de los registros que contiene.

DATA DIVISION.
FILE SECTION.
FD  EMPLEADOS
LABEL RECORDS ARE STANDARD
VALUE OF FILE-ID IS "empleados.txt".
01  EMPLEADO-REC.
    05  EMPLEADO-ID        PIC 9(4).
    05  EMPLEADO-NOMBRE    PIC A(20).
    05  EMPLEADO-SALARIO   PIC 9(5)V99.

En este ejemplo, hemos definido un archivo llamado EMPLEADOS que contiene registros con tres campos: un identificador de empleado, un nombre y un salario.

Apertura de Archivos

Antes de que puedas leer o escribir en un archivo, necesitas abrirlo utilizando la instrucción OPEN. Los archivos se pueden abrir en modos específicos como INPUT para leer, OUTPUT para escribir, I-O para leer y escribir, o EXTEND para agregar datos al final del archivo.

PROCEDURE DIVISION.
OPEN INPUT EMPLEADOS.

Lectura de Archivos Secuenciales

Para leer un archivo secuencial, usa la instrucción READ seguida del nombre del archivo. Después de leer un registro, puedes procesar los datos como sea necesario.

READ EMPLEADOS INTO EMPLEADO-REC
    AT END
        DISPLAY "Fin del archivo alcanzado."
        CLOSE EMPLEADOS
    NOT AT END
        PERFORM PROCESAR-EMPLEADO
END-READ.

En este fragmento, READ obtiene el próximo registro del archivo EMPLEADOS y lo almacena en el área de memoria EMPLEADO-REC. Si se alcanza el final del archivo, se muestra un mensaje y se cierra el archivo. Si no es el fin del archivo, se llama a un procedimiento PROCESAR-EMPLEADO.

Escritura de Archivos Secuenciales

Para escribir en un archivo secuencial, necesitas usar la instrucción WRITE seguida del nombre del registro que deseas escribir en el archivo.

OPEN OUTPUT EMPLEADOS.
MOVE 1234 TO EMPLEADO-ID.
MOVE "Juan Perez" TO EMPLEADO-NOMBRE.
MOVE 25000.00 TO EMPLEADO-SALARIO.
WRITE EMPLEADO-REC.
CLOSE EMPLEADOS.

Aquí, hemos abierto el archivo EMPLEADOS en modo OUTPUT, asignamos valores a los campos en EMPLEADO-REC, y luego escribimos ese registro en el archivo. Finalmente, cerramos el archivo.

Cierre de Archivos

Es importante cerrar los archivos una vez que hayas terminado de procesarlos para liberar recursos del sistema. Esto se hace con la instrucción CLOSE.

CLOSE EMPLEADOS.

Manejo de Errores en Archivos

Es buena práctica manejar errores potenciales que puedan ocurrir durante la apertura, lectura o escritura de archivos. Puedes hacerlo usando las cláusulas INVALID KEY y AT END.

OPEN INPUT EMPLEADOS
    INVALID KEY
        DISPLAY "Error al abrir el archivo."
        STOP RUN.

READ EMPLEADOS
    INVALID KEY
        DISPLAY "Error al leer el archivo."
        CLOSE EMPLEADOS
        STOP RUN.

Ejemplo Completo

Aquí tienes un ejemplo completo de un programa COBOL que lee un archivo secuencial de empleados y escribe un nuevo registro al final del archivo.

IDENTIFICATION DIVISION.
PROGRAM-ID. ArchivoSecuencial.

DATA DIVISION.
FILE SECTION.
FD  EMPLEADOS
LABEL RECORDS ARE STANDARD
VALUE OF FILE-ID IS "empleados.txt".

01  EMPLEADO-REC.
    05  EMPLEADO-ID        PIC 9(4).
    05  EMPLEADO-NOMBRE    PIC A(20).
    05  EMPLEADO-SALARIO   PIC 9(5)V99.

PROCEDURE DIVISION.
    OPEN INPUT EMPLEADOS
        INVALID KEY
            DISPLAY "Error al abrir el archivo."
            STOP RUN.

    PERFORM UNTIL EOF
        READ EMPLEADOS INTO EMPLEADO-REC
            AT END
                MOVE "Y" TO EOF
                CLOSE EMPLEADOS
            NOT AT END
                PERFORM PROCESAR-EMPLEADO
        END-READ
    END-PERFORM.

    OPEN EXTEND EMPLEADOS.
    MOVE 4321 TO EMPLEADO-ID.
    MOVE "Ana Gomez" TO EMPLEADO-NOMBRE.
    MOVE 30000.00 TO EMPLEADO-SALARIO.
    WRITE EMPLEADO-REC.
    CLOSE EMPLEADOS.

    STOP RUN.

PROCEDURE DIVISION.
PROCESAR-EMPLEADO.
    DISPLAY EMPLEADO-ID, EMPLEADO-NOMBRE, EMPLEADO-SALARIO.

En este ejemplo, el programa primero lee y procesa cada registro existente en empleados.txt, luego agrega un nuevo registro al final del archivo.

Conclusión

Leer y escribir archivos secuenciales en COBOL es un proceso fundamental en la programación de aplicaciones empresariales. Al seguir los pasos y estructuras detallados en esta guía, podrás manipular archivos secuenciales con eficacia y seguridad en tus programas COBOL.

Para más información y recursos adicionales, puedes consultar la documentación oficial de COBOL o visitar Open Mainframe Project y COBOL Programming Course de IBM.

© Copyright 2024, todos los derechos reservados.