Comment intercepter toutes les erreurs dans un programme CLP ?

Comment intercepter toutes les erreurs dans un programme CLP ?

En utilisant un monmsg derrière la dernière déclarative des variables

Remarque :

Ce monmsg n'est pas prioritaire par rapport à ceux qui suivent une instruction, il ne doit arrêter que les erreurs exceptionnelles.

Voici un exemple du code à ajouter à votre programme :

PGM
/* Ici vos déclaratives */
Dcl &Msg *Char ( 256 )
/* doit suivre la dernière instruction Dcl */
MonMsg ( CPF0000 MCH0000 ) Exec( Goto erreur)

/* ici les instructions de votre programme */

/* fin normal du programme */
Return
/* fin en erreur du programme */
Erreur:

/* Lecture des messages d'erreur exceptionelle */
RcvMsg MsgType( *Excp ) Msg( &Msg )
MonMsg ( CPF0000 MCH0000 )

/* Envoi d'un message de diagnostics */
SndPgmMsg MsgID( CPD0006 ) MsgF( QSYS/QCPFMSG ) MsgDta( '0000' *Cat &MSG ) MsgType( *Diag )
MonMsg ( CPF0000 MCH0000 )

/* Envoi d'un message de diagnostics */
SndPgmMsg MsgID( CPF0002 ) MsgF( QSYS/QCPFMSG ) MsgType( *Escape )
MonMsg ( CPF0000 MCH0000 )

/* fin du programme */
EndPgm

PLB