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
-
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.
-
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
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
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
- Declara las variables necesarias para el nombre del archivo y la biblioteca.
- Utiliza el comando
CRTPF
para crear el archivo. - Utiliza
MONMSG
para capturar el error si el archivo ya existe. - 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
- Declara las variables necesarias para el nombre del archivo y la biblioteca.
- Utiliza el comando
OVRDBF
para abrir el archivo. - Utiliza
MONMSG
para capturar el error si el archivo no existe. - 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.
Curso de CL (Lenguaje de Control)
Módulo 1: Introducción a CL
- ¿Qué es el Lenguaje de Control?
- Configuración de tu Entorno
- Sintaxis y Estructura Básica
- Escribiendo tu Primer Programa CL
Módulo 2: Comandos Básicos de CL
- Introducción a los Comandos de CL
- Comandos de Gestión de Archivos
- Comandos de Gestión de Trabajos
- Comandos de Gestión del Sistema
Módulo 3: Variables y Expresiones
- Entendiendo las Variables
- Definiendo y Usando Variables
- Expresiones y Operadores
- Manipulación de Cadenas
Módulo 4: Estructuras de Control
Módulo 5: Comandos Avanzados de CL
- Operaciones Avanzadas de Archivos
- Programación Avanzada de Trabajos
- Comandos de Configuración del Sistema
- Seguridad y Permisos