Associer un programme à une MSGQ
On peut associer un programme à une file d'attente messages,
pour lui faire traiter des messages d'erreurs, des messages d'exécution dans une file dédiée ou même des appels de programmes ou des commandes


Principe

Ce programme sera activé à chaque arrivée de message lorsque la file d'attente sera en mode *BREAK
Pour cela passer la commande :


==>CHGMSGQ DLVRY(*BREAK) PGM(monbib/monpgm)


Le PGM doit recevoir en paramètres : Nom de la MSGQ 10 alpha
Nom de la Bibliothèque 10 alpha
Clé du message 4 alpha
et doit faire une lecture de ce message à l'aide de la clé RCVMSG.
Le travail qui a passé la commande CHGMSGQ sera interrompu pendant l'exécution de ce PGM.


Exemple :

Ce programme répond au message vérifier alignement sur imprimante !

PGM (&MSGQ &MSGQLIB &MSGMRK)
/* paramètres obligatoires */
DCL &MSGQ TYPE(*CHAR) LEN(10)
DCL &MSGQLIB TYPE(*CHAR) LEN(10)
DCL &MSGMRK TYPE(*CHAR) LEN(4)
/* variable de travail */
DCL &MSGID TYPE(*CHAR) LEN(7)
RCVMSG MSGQ(&MSGQLIB/&MSGQ) MSGKEY(&MSGMRK) +
MSGID(&MSGID) RMV(*NO)
/* Ignorer le message CPA5243 */
IF (&MSGID *EQ 'CPA5243') GOTO ENDBRKPGM
/* Repondre au message alignement */
IF (&MSGID *EQ 'CPA5316') +
DO
SNDRPY MSGKEY(&MSGMRK) MSGQ(&MSGQLIB/&MSGQ) RPY(I)
ENDDO
ENDBRKPGM: ENDPGM