En este módulo, aprenderemos sobre las técnicas de manejo de errores en COBOL. El manejo adecuado de errores es crucial para desarrollar programas robustos y confiables. COBOL proporciona varias herramientas y métodos para detectar, manejar y reportar errores de manera efectiva.

Contenido

Introducción al Manejo de Errores

El manejo de errores en COBOL implica la detección y gestión de condiciones anómalas que pueden ocurrir durante la ejecución de un programa. Estas condiciones pueden incluir errores de entrada/salida, errores de lógica, y otros problemas que pueden afectar el funcionamiento del programa.

Tipos de Errores en COBOL

  1. Errores de Sintaxis: Ocurren cuando el código no sigue las reglas gramaticales del lenguaje COBOL.
  2. Errores de Ejecución: Ocurren durante la ejecución del programa, como intentos de dividir por cero o acceder a un archivo inexistente.
  3. Errores Lógicos: Ocurren cuando el programa no produce el resultado esperado debido a un error en la lógica del código.

Uso de la Declaración FILE STATUS

La declaración FILE STATUS se utiliza para capturar el estado de las operaciones de archivo. Esta declaración asigna un código de estado a una variable que puede ser verificada después de cada operación de archivo.

Ejemplo de FILE STATUS

IDENTIFICATION DIVISION.
PROGRAM-ID. FileStatusExample.

ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
    SELECT InputFile ASSIGN TO 'input.dat'
    ORGANIZATION IS LINE SEQUENTIAL
    FILE STATUS IS WS-File-Status.

DATA DIVISION.
FILE SECTION.
FD  InputFile.
01  InputRecord PIC X(100).

WORKING-STORAGE SECTION.
01  WS-File-Status PIC XX.

PROCEDURE DIVISION.
    OPEN INPUT InputFile
    IF WS-File-Status NOT = '00'
        DISPLAY 'Error opening file: ' WS-File-Status
        STOP RUN
    END-IF.

    READ InputFile INTO InputRecord
    AT END
        DISPLAY 'End of file reached.'
    NOT AT END
        DISPLAY 'Record: ' InputRecord
    END-READ.

    CLOSE InputFile.
    STOP RUN.

En este ejemplo, WS-File-Status captura el estado de la operación de apertura del archivo. Si el estado no es '00', se muestra un mensaje de error y el programa se detiene.

Manejo de Errores en Operaciones de Entrada/Salida

Las operaciones de entrada/salida (I/O) son propensas a errores, como archivos no encontrados o problemas de permisos. COBOL proporciona varias formas de manejar estos errores.

Ejemplo de Manejo de Errores en I/O

IDENTIFICATION DIVISION.
PROGRAM-ID. IOErrorHandling.

ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
    SELECT InputFile ASSIGN TO 'input.dat'
    ORGANIZATION IS LINE SEQUENTIAL
    FILE STATUS IS WS-File-Status.

DATA DIVISION.
FILE SECTION.
FD  InputFile.
01  InputRecord PIC X(100).

WORKING-STORAGE SECTION.
01  WS-File-Status PIC XX.

PROCEDURE DIVISION.
    OPEN INPUT InputFile
    IF WS-File-Status NOT = '00'
        DISPLAY 'Error opening file: ' WS-File-Status
        STOP RUN
    END-IF.

    PERFORM UNTIL WS-File-Status = '10'
        READ InputFile INTO InputRecord
        AT END
            MOVE '10' TO WS-File-Status
        NOT AT END
            DISPLAY 'Record: ' InputRecord
        END-READ
    END-PERFORM.

    CLOSE InputFile.
    STOP RUN.

En este ejemplo, se maneja el error de fin de archivo (WS-File-Status = '10') dentro de un bucle PERFORM.

Uso de la Declaración USE AFTER ERROR

La declaración USE AFTER ERROR se utiliza para especificar un procedimiento que se ejecutará después de que ocurra un error en una operación de archivo.

Ejemplo de USE AFTER ERROR

IDENTIFICATION DIVISION.
PROGRAM-ID. UseAfterErrorExample.

ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
    SELECT InputFile ASSIGN TO 'input.dat'
    ORGANIZATION IS LINE SEQUENTIAL
    FILE STATUS IS WS-File-Status
    USE AFTER ERROR PROCEDURE ON InputFile.

DATA DIVISION.
FILE SECTION.
FD  InputFile.
01  InputRecord PIC X(100).

WORKING-STORAGE SECTION.
01  WS-File-Status PIC XX.

PROCEDURE DIVISION.
    OPEN INPUT InputFile
    IF WS-File-Status NOT = '00'
        DISPLAY 'Error opening file: ' WS-File-Status
        STOP RUN
    END-IF.

    READ InputFile INTO InputRecord
    AT END
        DISPLAY 'End of file reached.'
    NOT AT END
        DISPLAY 'Record: ' InputRecord
    END-READ.

    CLOSE InputFile.
    STOP RUN.

    USE AFTER ERROR PROCEDURE ON InputFile.
    DISPLAY 'An error occurred: ' WS-File-Status.
    STOP RUN.

En este ejemplo, si ocurre un error en cualquier operación de archivo, se ejecutará el procedimiento especificado en USE AFTER ERROR.

Ejercicios Prácticos

Ejercicio 1: Manejo de Errores de Apertura de Archivo

Instrucciones: Escribe un programa COBOL que intente abrir un archivo para lectura. Si el archivo no existe, el programa debe mostrar un mensaje de error y terminar.

Solución:

IDENTIFICATION DIVISION.
PROGRAM-ID. FileOpenError.

ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
    SELECT InputFile ASSIGN TO 'nonexistent.dat'
    ORGANIZATION IS LINE SEQUENTIAL
    FILE STATUS IS WS-File-Status.

DATA DIVISION.
FILE SECTION.
FD  InputFile.
01  InputRecord PIC X(100).

WORKING-STORAGE SECTION.
01  WS-File-Status PIC XX.

PROCEDURE DIVISION.
    OPEN INPUT InputFile
    IF WS-File-Status NOT = '00'
        DISPLAY 'Error opening file: ' WS-File-Status
        STOP RUN
    END-IF.

    CLOSE InputFile.
    STOP RUN.

Ejercicio 2: Manejo de Errores en Lectura de Archivo

Instrucciones: Escribe un programa COBOL que lea registros de un archivo. Si ocurre un error durante la lectura, el programa debe mostrar un mensaje de error y continuar con el siguiente registro.

Solución:

IDENTIFICATION DIVISION.
PROGRAM-ID. FileReadError.

ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
    SELECT InputFile ASSIGN TO 'input.dat'
    ORGANIZATION IS LINE SEQUENTIAL
    FILE STATUS IS WS-File-Status.

DATA DIVISION.
FILE SECTION.
FD  InputFile.
01  InputRecord PIC X(100).

WORKING-STORAGE SECTION.
01  WS-File-Status PIC XX.

PROCEDURE DIVISION.
    OPEN INPUT InputFile
    IF WS-File-Status NOT = '00'
        DISPLAY 'Error opening file: ' WS-File-Status
        STOP RUN
    END-IF.

    PERFORM UNTIL WS-File-Status = '10'
        READ InputFile INTO InputRecord
        AT END
            MOVE '10' TO WS-File-Status
        NOT AT END
            IF WS-File-Status NOT = '00'
                DISPLAY 'Error reading record: ' WS-File-Status
            ELSE
                DISPLAY 'Record: ' InputRecord
            END-IF
        END-READ
    END-PERFORM.

    CLOSE InputFile.
    STOP RUN.

Conclusión

En esta sección, hemos aprendido sobre las técnicas de manejo de errores en COBOL. Hemos cubierto cómo utilizar la declaración FILE STATUS para capturar el estado de las operaciones de archivo, cómo manejar errores en operaciones de entrada/salida, y cómo utilizar la declaración USE AFTER ERROR para especificar procedimientos de manejo de errores. Además, hemos practicado estos conceptos con ejercicios prácticos.

El manejo adecuado de errores es esencial para desarrollar programas COBOL robustos y confiables. En el próximo módulo, exploraremos técnicas de depuración para identificar y corregir errores en los programas COBOL.

© Copyright 2024. Todos los derechos reservados