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.CPF0000es 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
ENDPGMEn 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
ENDPGMEn 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
CRTPFpara crear el archivo. - Utiliza
MONMSGpara 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
ENDPGMEjercicio 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
OVRDBFpara abrir el archivo. - Utiliza
MONMSGpara 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
ENDPGMResumen
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
