El manejo de errores es una parte crucial de cualquier lenguaje de programación, y el Lenguaje de Control (CL) no es una excepción. En esta sección, aprenderás cómo identificar, manejar y resolver errores en tus programas CL. Esto te permitirá crear programas más robustos y confiables.

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 intentar dividir por cero.
    • 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:

    • Detección de Errores: Identificar cuándo y dónde ocurre un error.
    • Notificación de Errores: Informar al usuario o al sistema sobre el error.
    • Recuperación de Errores: Tomar medidas para corregir o mitigar el error.

Comandos y Funciones de Manejo de Errores en CL

MONMSG (Monitor Message)

El comando MONMSG se utiliza para monitorear y manejar mensajes de error en CL. Este comando permite capturar errores específicos y ejecutar una serie de comandos en respuesta.

Sintaxis Básica

MONMSG MSGID(CPF0000) EXEC(DO)
    /* Comandos a ejecutar en caso de error */
ENDDO
  • MSGID(CPF0000): Especifica el ID del mensaje de error a monitorear. CPF0000 es un comodín que captura todos los mensajes de error.
  • EXEC(DO): Define el bloque de comandos a ejecutar si se detecta el mensaje de error.

Ejemplo Práctico

PGM
    DCL VAR(&FILE) TYPE(*CHAR) LEN(10) VALUE('MYFILE')
    DCL VAR(&LIB) TYPE(*CHAR) LEN(10) VALUE('MYLIB')

    /* Intentar borrar un archivo */
    DLTF FILE(&LIB/&FILE)
    MONMSG MSGID(CPF0000) EXEC(DO)
        /* Si ocurre un error, mostrar un mensaje */
        SNDPGMMSG MSG('Error al intentar borrar el archivo.')
    ENDDO
ENDPGM

En este ejemplo, el programa intenta borrar un archivo. Si ocurre un error, se captura con MONMSG y se envía un mensaje al usuario.

SNDPGMMSG (Send Program Message)

El comando SNDPGMMSG se utiliza para enviar mensajes desde un programa CL. Es útil para notificar al usuario sobre errores o estados del programa.

Sintaxis Básica

SNDPGMMSG MSG('Mensaje de error o estado')

Ejemplo Práctico

PGM
    DCL VAR(&FILE) TYPE(*CHAR) LEN(10) VALUE('MYFILE')
    DCL VAR(&LIB) TYPE(*CHAR) LEN(10) VALUE('MYLIB')

    /* Intentar abrir un archivo */
    OVRDBF FILE(&FILE) TOFILE(&LIB/&FILE)
    MONMSG MSGID(CPF0000) EXEC(DO)
        /* Si ocurre un error, enviar un mensaje */
        SNDPGMMSG MSG('Error al intentar abrir el archivo.')
    ENDDO
ENDPGM

En este ejemplo, el programa intenta abrir un archivo. Si ocurre un error, se captura con MONMSG y se envía un mensaje al usuario.

Ejercicios Prácticos

Ejercicio 1: Manejo de Errores en la Creación de Archivos

Objetivo: Escribir un programa CL que intente crear un archivo. Si el archivo ya existe, debe capturar el error y notificar al usuario.

Instrucciones

  1. Declara las variables necesarias para el nombre del archivo y la biblioteca.
  2. Utiliza el comando CRTPF para crear el archivo.
  3. Utiliza MONMSG para capturar el error si el archivo ya existe.
  4. Envía un mensaje al usuario notificando el error.

Solución

PGM
    DCL VAR(&FILE) TYPE(*CHAR) LEN(10) VALUE('MYFILE')
    DCL VAR(&LIB) TYPE(*CHAR) LEN(10) VALUE('MYLIB')

    /* Intentar crear un archivo */
    CRTPF FILE(&LIB/&FILE) RCDLEN(100)
    MONMSG MSGID(CPF0000) EXEC(DO)
        /* Si ocurre un error, enviar un mensaje */
        SNDPGMMSG MSG('Error: El archivo ya existe o no se pudo crear.')
    ENDDO
ENDPGM

Ejercicio 2: Manejo de Errores en la Lectura de Archivos

Objetivo: Escribir un programa CL que intente leer un archivo. Si el archivo no existe, debe capturar el error y notificar al usuario.

Instrucciones

  1. Declara las variables necesarias para el nombre del archivo y la biblioteca.
  2. Utiliza el comando OVRDBF para abrir el archivo.
  3. Utiliza MONMSG para capturar el error si el archivo no existe.
  4. Envía un mensaje al usuario notificando el error.

Solución

PGM
    DCL VAR(&FILE) TYPE(*CHAR) LEN(10) VALUE('MYFILE')
    DCL VAR(&LIB) TYPE(*CHAR) LEN(10) VALUE('MYLIB')

    /* Intentar abrir un archivo */
    OVRDBF FILE(&FILE) TOFILE(&LIB/&FILE)
    MONMSG MSGID(CPF0000) EXEC(DO)
        /* Si ocurre un error, enviar un mensaje */
        SNDPGMMSG MSG('Error: El archivo no existe o no se pudo abrir.')
    ENDDO
ENDPGM

Resumen

En esta sección, hemos aprendido sobre el manejo de errores en CL, incluyendo cómo detectar, notificar y recuperar errores utilizando los comandos MONMSG y SNDPGMMSG. Estos conceptos son fundamentales para crear programas robustos y confiables. Asegúrate de practicar los ejercicios proporcionados para reforzar tu comprensión y habilidad en el manejo de errores en CL.

En la siguiente sección, exploraremos las subrutinas y procedimientos, que te permitirán estructurar mejor tu código y reutilizar funciones comunes.

© Copyright 2024. Todos los derechos reservados