El manejo de archivos es una parte fundamental de la programación en COBOL, ya que muchos sistemas empresariales dependen de la lectura y escritura de datos en archivos. En este módulo, aprenderás cómo trabajar con archivos en COBOL, incluyendo la apertura, lectura, escritura y cierre de archivos.
Conceptos Clave
-
Tipos de Archivos en COBOL:
- Archivos Secuenciales: Los registros se almacenan uno tras otro.
- Archivos Indexados: Los registros se almacenan con un índice que permite el acceso directo.
- Archivos Relativos: Los registros se almacenan en ubicaciones específicas, permitiendo el acceso directo.
-
Divisiones de un Programa COBOL:
- IDENTIFICATION DIVISION: Información sobre el programa.
- ENVIRONMENT DIVISION: Información sobre el entorno de ejecución, incluyendo la configuración de archivos.
- DATA DIVISION: Declaración de variables y estructuras de datos.
- PROCEDURE DIVISION: Lógica del programa, incluyendo operaciones de archivo.
Estructura Básica para el Manejo de Archivos
- Declaración de Archivos en la ENVIRONMENT DIVISION
ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT archivo-asignado ASSIGN TO 'nombre-del-archivo' ORGANIZATION IS SEQUENTIAL ACCESS MODE IS SEQUENTIAL FILE STATUS IS ws-file-status.
- Definición de la Estructura del Archivo en la DATA DIVISION
DATA DIVISION. FILE SECTION. FD archivo-asignado. 01 registro-del-archivo. 05 campo1 PIC X(10). 05 campo2 PIC 9(5).
- Operaciones Básicas en la PROCEDURE DIVISION
Abrir el Archivo
Leer del Archivo
READ archivo-asignado INTO registro-del-archivo AT END DISPLAY 'Fin del archivo' SET end-of-file TO TRUE.
Escribir en el Archivo
Cerrar el Archivo
Ejemplo Práctico
A continuación, se presenta un ejemplo completo de un programa COBOL que lee un archivo secuencial y muestra su contenido en la pantalla.
IDENTIFICATION DIVISION. PROGRAM-ID. EjemploManejoArchivos. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT archivo-asignado ASSIGN TO 'miarchivo.txt' ORGANIZATION IS SEQUENTIAL ACCESS MODE IS SEQUENTIAL FILE STATUS IS ws-file-status. DATA DIVISION. FILE SECTION. FD archivo-asignado. 01 registro-del-archivo. 05 campo1 PIC X(10). 05 campo2 PIC 9(5). WORKING-STORAGE SECTION. 01 ws-file-status PIC XX. 01 end-of-file PIC X VALUE 'N'. PROCEDURE DIVISION. OPEN INPUT archivo-asignado PERFORM UNTIL end-of-file = 'Y' READ archivo-asignado INTO registro-del-archivo AT END SET end-of-file TO 'Y' END-READ IF end-of-file NOT = 'Y' DISPLAY 'Campo1: ' campo1 DISPLAY 'Campo2: ' campo2 END-IF END-PERFORM CLOSE archivo-asignado STOP RUN.
Explicación del Código
- IDENTIFICATION DIVISION: Define el nombre del programa.
- ENVIRONMENT DIVISION: Configura el archivo
miarchivo.txt
como un archivo secuencial. - DATA DIVISION: Declara la estructura del archivo y las variables de trabajo.
- PROCEDURE DIVISION:
- Abre el archivo para lectura.
- Lee cada registro del archivo en un bucle hasta alcanzar el final del archivo.
- Muestra los campos
campo1
ycampo2
en la pantalla. - Cierra el archivo.
Ejercicio Práctico
Ejercicio 1: Lectura de un Archivo Secuencial
Objetivo: Crear un programa COBOL que lea un archivo secuencial llamado clientes.txt
y muestre el nombre y la edad de cada cliente.
Archivo clientes.txt
:
Pasos:
- Configura el archivo en la ENVIRONMENT DIVISION.
- Define la estructura del archivo en la DATA DIVISION.
- Implementa la lógica de lectura y visualización en la PROCEDURE DIVISION.
Solución
IDENTIFICATION DIVISION. PROGRAM-ID. LeerClientes. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT archivo-clientes ASSIGN TO 'clientes.txt' ORGANIZATION IS SEQUENTIAL ACCESS MODE IS SEQUENTIAL FILE STATUS IS ws-file-status. DATA DIVISION. FILE SECTION. FD archivo-clientes. 01 registro-cliente. 05 nombre-cliente PIC X(10). 05 edad-cliente PIC 9(2). WORKING-STORAGE SECTION. 01 ws-file-status PIC XX. 01 end-of-file PIC X VALUE 'N'. PROCEDURE DIVISION. OPEN INPUT archivo-clientes PERFORM UNTIL end-of-file = 'Y' READ archivo-clientes INTO registro-cliente AT END SET end-of-file TO 'Y' END-READ IF end-of-file NOT = 'Y' DISPLAY 'Nombre: ' nombre-cliente DISPLAY 'Edad: ' edad-cliente END-IF END-PERFORM CLOSE archivo-clientes STOP RUN.
Retroalimentación y Consejos
- Error Común: Olvidar cerrar el archivo después de las operaciones puede causar problemas de acceso en futuras ejecuciones.
- Consejo: Siempre verifica el estado del archivo (
ws-file-status
) después de cada operación para manejar errores de manera adecuada.
Conclusión
En esta sección, has aprendido cómo manejar archivos en COBOL, incluyendo la apertura, lectura, escritura y cierre de archivos. Estos conceptos son fundamentales para trabajar con datos en COBOL y se aplican en muchos sistemas empresariales. En el próximo módulo, profundizaremos en el procesamiento de archivos secuenciales, indexados y relativos.
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