Quelques trucs et astuces avec les messages

BoTTom |    Changer de couleur
 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.


|    Changer de couleur
 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)


|    Changer de couleur
 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


|    Changer de couleur
 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)
 
 


|    Changer de couleur
 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
 


|    Changer de couleur
         - 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.
 


|    Changer de couleur
 
 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)
 





©AF400