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

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

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

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

  1. Operaciones Básicas en la PROCEDURE DIVISION

Abrir el Archivo

PROCEDURE DIVISION.
    OPEN INPUT archivo-asignado.

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

    WRITE registro-del-archivo
        FROM datos-a-escribir.

Cerrar el Archivo

    CLOSE archivo-asignado.

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

  1. IDENTIFICATION DIVISION: Define el nombre del programa.
  2. ENVIRONMENT DIVISION: Configura el archivo miarchivo.txt como un archivo secuencial.
  3. DATA DIVISION: Declara la estructura del archivo y las variables de trabajo.
  4. 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 y campo2 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:

John Doe    30
Jane Smith  25

Pasos:

  1. Configura el archivo en la ENVIRONMENT DIVISION.
  2. Define la estructura del archivo en la DATA DIVISION.
  3. 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.

© Copyright 2024. Todos los derechos reservados