La gestió d'errors és una part fonamental de qualsevol llenguatge de programació, i el Llenguatge de Control (CL) no és una excepció. En aquest tema, aprendrem com detectar, gestionar i respondre als errors en els nostres programes CL. Això ens permetrà crear programes més robustos i fiables.
Objectius del Tema
- Comprendre la importància de la gestió d'errors.
- Aprendre a utilitzar les comandes de gestió d'errors en CL.
- Implementar tècniques per detectar i gestionar errors en els programes CL.
Conceptes Clau
- Importància de la Gestió d'Errors
- Robustesa: Els programes que gestionen errors són més robustos i menys propensos a fallar.
- Fiabilitat: La gestió d'errors millora la fiabilitat del sistema, assegurant que els errors es manegin de manera controlada.
- Mantenibilitat: Els programes amb una bona gestió d'errors són més fàcils de mantenir i depurar.
- Tipus d'Errors
- Errors de Sintaxi: Errors que es produeixen quan el codi no segueix les regles de sintaxi del llenguatge.
- Errors d'Execució: Errors que es produeixen durant l'execució del programa, com ara divisió per zero o accés a fitxers inexistents.
- Errors Lògics: Errors en la lògica del programa que produeixen resultats incorrectes.
Comandes de Gestió d'Errors en CL
- MONMSG (Monitor Message)
La comanda MONMSG
s'utilitza per monitoritzar i gestionar missatges d'error. Aquesta comanda permet especificar quins errors s'han de capturar i com s'han de gestionar.
Sintaxi
Exemple
PGM MONMSG MSGID(CPF0000) EXEC(GOTO ERROR_HANDLER) /* Codi del programa */ RETURN ERROR_HANDLER: /* Codi per gestionar l'error */ RETURN ENDPGM
- SNDPGMMSG (Send Program Message)
La comanda SNDPGMMSG
s'utilitza per enviar missatges des del programa. Això pot ser útil per informar l'usuari sobre errors o altres esdeveniments.
Sintaxi
Exemple
PGM DCL VAR(&FILE) TYPE(*CHAR) LEN(10) CHKOBJ OBJ(&FILE) OBJTYPE(*FILE) MONMSG MSGID(CPF9801) EXEC(SNDPGMMSG MSG('Fitxer no trobat') MSGTYPE(*ESCAPE)) /* Codi del programa */ RETURN ENDPGM
- RTVJOBA (Retrieve Job Attributes)
La comanda RTVJOBA
s'utilitza per recuperar atributs del treball actual, incloent informació sobre errors.
Sintaxi
Exemple
PGM DCL VAR(&JOB) TYPE(*CHAR) LEN(10) DCL VAR(&USER) TYPE(*CHAR) LEN(10) DCL VAR(&NBR) TYPE(*CHAR) LEN(6) RTVJOBA JOB(&JOB) USER(&USER) NBR(&NBR) /* Codi del programa */ RETURN ENDPGM
Exercicis Pràctics
Exercici 1: Monitoritzar i Gestionar un Error de Fitxer
Escriu un programa CL que intenti accedir a un fitxer. Si el fitxer no existeix, el programa ha de capturar l'error i enviar un missatge d'error.
Solució
PGM DCL VAR(&FILE) TYPE(*CHAR) LEN(10) VALUE('MYFILE') CHKOBJ OBJ(&FILE) OBJTYPE(*FILE) MONMSG MSGID(CPF9801) EXEC(SNDPGMMSG MSG('Fitxer no trobat') MSGTYPE(*ESCAPE)) /* Codi del programa */ RETURN ENDPGM
Exercici 2: Gestió d'Errors en un Bucle
Escriu un programa CL que llegeixi una llista de fitxers i gestioni els errors si algun fitxer no existeix.
Solució
PGM DCL VAR(&FILE) TYPE(*CHAR) LEN(10) DCL VAR(&I) TYPE(*INT) LEN(4) VALUE(1) DCL VAR(&FILELIST) TYPE(*CHAR) LEN(100) VALUE('FILE1 FILE2 FILE3') DOFOR &I FROM(1) TO(3) CHGVAR VAR(&FILE) VALUE(%SST(&FILELIST &I 5)) CHKOBJ OBJ(&FILE) OBJTYPE(*FILE) MONMSG MSGID(CPF9801) EXEC(SNDPGMMSG MSG('Fitxer no trobat: ' *CAT &FILE) MSGTYPE(*ESCAPE)) ENDDO RETURN ENDPGM
Resum
En aquesta secció, hem après la importància de la gestió d'errors en els programes CL i hem explorat diverses comandes per monitoritzar i gestionar errors. Hem vist exemples pràctics de com utilitzar aquestes comandes per crear programes més robustos i fiables. La gestió d'errors és una habilitat essencial per a qualsevol programador, i dominar aquestes tècniques ens permetrà escriure codi de millor qualitat.
Curs de CL (Llenguatge de Control)
Mòdul 1: Introducció al CL
- Què és el Llenguatge de Control?
- Configuració del Teu Entorn
- Sintaxi i Estructura Bàsiques
- Escrivint el Teu Primer Programa CL
Mòdul 2: Comandes Bàsiques de CL
- Introducció a les Comandes de CL
- Comandes de Gestió de Fitxers
- Comandes de Gestió de Treballs
- Comandes de Gestió del Sistema
Mòdul 3: Variables i Expressions
- Comprenent les Variables
- Definint i Utilitzant Variables
- Expressions i Operadors
- Manipulació de Cadenes
Mòdul 4: Estructures de Control
Mòdul 5: Comandes Avançades de CL
- Operacions Avançades de Fitxers
- Programació Avançada de Treballs
- Comandes de Configuració del Sistema
- Seguretat i Permisos