Accueil du site > Les articles > Comment "monitorer" les erreurs dans un CL ?
Version à imprimer Enregistrer au format PDF

Comment "monitorer" les erreurs dans un CL ?

mardi 14 septembre 2004, par Didier Encinas Visites  2186 Première mise en ligne le mercredi 5 novembre 2003.

Attention, le code qui suit est OBLIGATOIRE dans TOUS vos CL. Vous n’avez pas le choix, c’est comme ça !


Marche à suivre.

C’est si facile et tellement utile :

0001.00 PGM
0002.00
0003.00 DCL VAR(&MSG) TYPE(*CHAR) LEN(132)
0004.00 DCL VAR(&USER) TYPE(*CHAR) LEN(10)
0005.00
0006.00 MONIT_ERR: /* Monitoring des erreurs. */
0007.00 MONMSG MSGID(CPF0000) EXEC(GOTO CMDLBL(ERREUR))0008.00 MONMSG MSGID(CPA0000) EXEC(GOTO CMDLBL(ERREUR))
0009.00 RTVJOBA USER(&USER)
... ...
0039.00ERREUR:/* Routine de traitement des erreurs. */
0040.00 CHGVAR VAR(&COD_RETOUR) VALUE(ER)
0041.00 RCVMSG MSGTYPE(*EXCP) RMV(*NO) MSG(&MSG)
0042.00 SNDMSG MSG('xxxCL : Traitement en erreur : ' +
0043.00 *CAT &MSG) TOUSR(&USER)
0044.00 MONMSG MSGID(CPF0000)
0045.00 SNDMSG MSG('xxxCL : Traitement en erreur : ' +
0046.00 *CAT &MSG) TOMSGQ(bib/msgq)
0047.00 MONMSG MSGID(CPF0000)

Notez que les commandes contenues dans la procédure de gestion des erreurs sont elles-mêmes monitorées afin d’éviter des appels récursifs de la procédure. (essayez de mettre du code erroné dedans pour voir)

- FACILE : il vous suffit de le copier dans chaque nouveau CL.
- UTILE : il vous permet d’être informé de tout plantage d’un CL, ou d’un programme en dépendant, par la consultation des messages historisés dans la Message Queue.

Vous pouvez remanier comme bon vous semble ce code : mémorisation des plantages dans un fichier, impression d’une note d’information, envoi d’un Email (si c’est possible), dump du CL par la commande DMPCLPGM, affichage d’une fenêtre plus propre...

ATTENTION : Pour fonctionner, les lignes MONMSG génériques doivent être placées après les DCL, mais avant toute autre instruction exécutable.