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