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

  1. 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.

  1. 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

  1. 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

MONMSG MSGID(error_id) EXEC(cmd)

Exemple

PGM
    MONMSG MSGID(CPF0000) EXEC(GOTO ERROR_HANDLER)
    /* Codi del programa */
    RETURN

ERROR_HANDLER:
    /* Codi per gestionar l'error */
    RETURN
ENDPGM

  1. 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

SNDPGMMSG MSG('Missatge d'error') MSGTYPE(*ESCAPE)

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

  1. RTVJOBA (Retrieve Job Attributes)

La comanda RTVJOBA s'utilitza per recuperar atributs del treball actual, incloent informació sobre errors.

Sintaxi

RTVJOBA JOB(&JOB) USER(&USER) NBR(&NBR)

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.

© Copyright 2024. Tots els drets reservats