Quelques trucs et astuces avec les messages et les fichiers messages. 1/ OVRMSGF Substitution de fichiers messages OVRMSGF QCPFMSG monmsgf A partir de maintenant le système ira chercher dans ce fichier messages les informations concernant les messages RECUS. - c'est donc bien le job devant subir les effets de la substitution qui doit passer la commande. ==> un même envoi de message peut avoir des effets différents suivant le job qui le reçoit. - si le système ne trouve pas l'ID message dans le fichier message de substitution,il ira le chercher dans le fichier message substitué. ==> il ne faut définir dans le fichier message de substitution QUE les ID message à substituer. |
INTERET: + Modifier le texte d'un message système un peu rébarbatif quand il est visualisé par un utilisateur. EX: CPC1221 :Demande soumise sous le nom &3/&2/&1,et placée dans la file d'attente &4 bibliothèque &5 CPF1240 :La Demande &3/&2/&1 s'est mal terminée, contacter le service info - poste: xxxx CPF1241 :La demande &3/&2/&1 s'est terminée normalement. + Personnaliser des messages suivant l'application. EX: tous les messages CPI43-- "requête en cours" pouvant être remplacés par "recherche des clients en cours" + Modifier la réponse par défaut d'un message système dans certains cas.La liste de réponse système étant générale. Pour copier les messages systèmes dans votre fichier message, penser à MRGMSGF FROMMSGF(QCPFMSG) TOMSGF(monmsgf) SELECT(CPFxxxx CPFyyyy) |
2/ Fichiers messages et fichiers écrans. - ERRMSGID(idmsg (bib/)fichier-message ind (&data)) [*LIBL par défaut] - SFLMSGID(idmsg (bib/)fichier-message ind (&data)) Affiche en message d'erreur le texte d'un message pré-défini (le texte de second niveau si "aide") si l'ID message contient des variables de substitution (&1,&2,...) elles peuvent renseignées à l'affichage par &data, DATA étant une variable du format en usage P. Exemple: CLI0001 :'client &1 invalide' dspf: CODCLI R I 5 8 40 ERRMSGID(CLI001 monmsgf 40 &err) ERR R P REFFLD(CODCLI CLIENTP1) rpg : CODCLI CHAIN CLIENTF1 40 *IN40 IFEQ *ON MOVE CODCLI ERR ELSE |
2/ Fichiers messages et fichiers écrans. - CHKMSGID(idmsg (bib/)fichier-message ind (&data)) [*LIBL par défaut] Affiche en message d'erreur suite à un contrôle de validité, le texte d'un message,(le texte de second niveau si "aide") valide uniquement avec COMP,RANGE,VALUES et CHECK(VN,VNE,M10,M11) si l'ID message contient des variables de substitution (&1,&2,...) elles peuvent renseignées à l'affichage par &data, DATA étant une variable du format en usage P. Exemple: CTL0001 :'Seules les option 1,2 et 3 sont valides' dspf: OPTION 1A I 5 8VALUES(' ' '1' '2' '3') 40 CHKMSGID(CTL001 monmsgf) Ces mots-clés (ERRMSGID/SFLMSGID et CHKMSGID) subissent les effets d'une commande OVRMSGF , du mot-clé ERRSFL (messages d'erreur en sous-fichier) |
2/ Fichiers messages et fichiers écrans. - MSGID(idmsg (bib/)fichier-message) [*LIBL par défaut] charge le contenu d'une zone en sortie ou en entrée-sortie avec le texte du message indiqué, cadré à gauche, A L'AFFICHAGE. remarques: - Si la variable est en usage O (sortie) elle ne fait pas partie du buffer (inconnue du pgm) - si elle est un usage B (entrée-sortie) elle n'est connue que du buffer d'entrée. - il est possible d'indiquer plusieurs MSGID, il doivent être tous conditionnés SAUF LE DERNIER, qui sera appliqué par défaut. Exemple: MSG 40A O 2 1 40 MSGID(MSG0001 monmsgf) 41 MSGID(MSG0002 monmsgf) MSGID(MSG0003 monmsgf) **** MSG0003 utilisé si 40 et 41 off |
- il est possible d'indiquer des variables en paramètres a/ MSGID(&id &lib/&msgf) &id = 7 APLHA b/ MSGID(&prefix &num &lib/&msgf) &prefix = 3 APLHA (la racine de l'ID message) &num = 4 APLHA (n° d'ordre) Tous les panachage de constantes et variables sont possibles les variables doivent appartenir au format en usage H,P,B ou O. - Cette fonction subit les effets d'une commande OVRMSGF !!! - Cette fonction est invalide avec un format d'enregistrement de sous-fichier. |
3/ Avec les APIs message: - penser à prendre un niveau d'invocation pour intercepter les appels système 2 (ENDRQS), si nécessaire. Il faudra alors gérer les erreurs par pgm (*PSSR en RPG) - gérer les messages reçus avec un sous-fichier message (SFLMSGRCD) chargé automatiquement par le système (SFLINZ) il faut alors mettre à blanc la PGMQ du pgm (API QMHRMVPM) entre deux affichage. - envoyer des messages de type *STATUS dans l'external avant un traitement un peu long. (API QMHSNDPM) - renvoyer les erreurs reçues si vous utilisez *PSSR (API QMHRSNEM:renvoi le dernier *ESCAPE (sous forme *ESCAPE) QMHMOVPM:renvoi tous les messages reçus (*ESCAPE transformés en *DIAG) |