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.
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.
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.
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.
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
.
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.
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.
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.
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.
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.