El manejo de errores es una parte crucial en cualquier lenguaje de programación, y RPG no es la excepción. En este módulo, aprenderemos cómo identificar, manejar y prevenir errores en nuestros programas RPG. Esto no solo mejorará la robustez de nuestras aplicaciones, sino que también facilitará la depuración y el mantenimiento del código.

Conceptos Clave

  1. Tipos de Errores:

    • Errores de Sintaxis: Ocurren cuando el código no sigue las reglas del lenguaje.
    • Errores de Ejecución: Ocurren durante la ejecución del programa, como divisiones por cero o acceso a archivos inexistentes.
    • Errores Lógicos: Ocurren cuando el programa no produce el resultado esperado debido a un error en la lógica del código.
  2. Manejo de Errores:

    • Monitoreo de Errores: Uso de códigos de estado y mensajes de error para identificar problemas.
    • Recuperación de Errores: Implementación de lógica para manejar errores y continuar la ejecución del programa.
    • Registro de Errores: Almacenamiento de información sobre errores para análisis posterior.

Ejemplo Práctico: Manejo de Errores en RPG

Código de Ejemplo

A continuación, se muestra un ejemplo de cómo manejar errores en un programa RPG. Este programa intenta abrir un archivo y maneja posibles errores de apertura.

**free
// Declaración de variables
dcl-f myFile usage(*input) keyed;
dcl-s errorCode char(7);
dcl-s errorMsg char(100);

// Intentar abrir el archivo
monitor;
   open myFile;
on-error;
   // Capturar el código de error
   errorCode = %error();
   // Obtener el mensaje de error
   errorMsg = %status();
   // Mostrar el mensaje de error
   dsply ('Error al abrir el archivo: ' + errorMsg);
endmon;

// Continuar con el resto del programa
// ...

*inlr = *on;

Explicación del Código

  1. Declaración de Variables:

    • myFile: Archivo que se intenta abrir.
    • errorCode y errorMsg: Variables para almacenar el código y mensaje de error.
  2. Monitor:

    • monitor: Bloque que intenta ejecutar el código dentro de él.
    • on-error: Bloque que se ejecuta si ocurre un error dentro del bloque monitor.
  3. Captura y Manejo de Errores:

    • %error(): Función que devuelve el código de error.
    • %status(): Función que devuelve el mensaje de error.
    • dsply: Instrucción para mostrar el mensaje de error.

Ejercicio Práctico

Ejercicio: Modifica el programa anterior para que, en lugar de mostrar el mensaje de error, registre el error en un archivo de log llamado errorLog.

Solución:

**free
// Declaración de variables
dcl-f myFile usage(*input) keyed;
dcl-f errorLog usage(*output) keyed;
dcl-s errorCode char(7);
dcl-s errorMsg char(100);
dcl-s logEntry char(200);

// Intentar abrir el archivo
monitor;
   open myFile;
on-error;
   // Capturar el código de error
   errorCode = %error();
   // Obtener el mensaje de error
   errorMsg = %status();
   // Crear la entrada de log
   logEntry = 'Error al abrir el archivo: ' + errorMsg;
   // Escribir en el archivo de log
   write errorLog logEntry;
endmon;

// Continuar con el resto del programa
// ...

*inlr = *on;

Explicación de la Solución

  1. Declaración de Variables Adicionales:

    • errorLog: Archivo de log donde se registrarán los errores.
    • logEntry: Variable para almacenar la entrada de log.
  2. Escritura en el Archivo de Log:

    • write errorLog logEntry: Instrucción para escribir la entrada de log en el archivo errorLog.

Resumen

En esta sección, hemos aprendido sobre los diferentes tipos de errores que pueden ocurrir en un programa RPG y cómo manejarlos de manera efectiva. Hemos visto un ejemplo práctico de manejo de errores utilizando bloques monitor y on-error, y hemos practicado registrando errores en un archivo de log. El manejo adecuado de errores es esencial para crear aplicaciones robustas y fáciles de mantener.

En el próximo tema, exploraremos técnicas avanzadas de optimización del rendimiento para mejorar la eficiencia de nuestros programas RPG.

© Copyright 2024. Todos los derechos reservados