------------------------ ! GESTION DES MESSAGES ! ------------------------ 1 LES MESSAGES. --------------- Un message est un moyen de communiquer entre: - des utilisateurs - des programmes - un programme et un(des) utilisateur(s). Il existe 2 types de message : - message impromptu - message prédéfini |
1.1 MESSAGE IMPROMPTU. ---------------------- C'est un message dont le texte est écrit lors de l'envoi du message. Ex: j'envoie le message 'il est 12h on mange' Dans ce type de message on envoie une chaîne de caractères. Il est possible de placer le contenu du message dans une variable et de faire référence à la variable lors de l'envoi du message. On pourra dans tous les cas utiliser la concaténation pour définir le texte du message. Ce type de messages peut être envoyé par les commandes: - SNDMSG - SNDBRKMSG - SNDPGMMSG - SNDUSRMSG |
1.2 MESSAGE PREDEFINI. ---------------------- Le message est défini avant l'envoi du message. Il est enregistré dans un fichier message (*MSGF). Ex: 'travail PGMBAS1 terminé le 150187 à 173500' est un message pré-défini. Le texte de ce message se trouve dans le fichier des messages du système : QCPFMSG. Pour envoyer un message de ce type, il faut indiquer son identifiant (sa clé) et le nom du fichier messages. 1.2.1 CREATION D'UN FICHIER DES MESSAGES. ----------------------------------------- Avant de pouvoir enregistrer des messages prédéfinis il faut créer le fichier des messages. Le type d'objet est *MSGF,la commande sera : CRTMSGF |
Les paramètres de la commande sont : CRTMSGF MSGF(bibliothèque/nom du fichier de messages) SIZE(taille initiale du fichier en Ko, par défaut 10) (taille d'un incrément en Ko, par défaut 2) (nombre d'incrément, par défaut *NOMAX) AUT(les droits autorisés à tous sur cet objet) TEXT(le texte renseignant l'objet) Vous pouvez gérer l'objet en utilisant la commande : WRKMSGF En plus de visualiser la définition de l'objet, une commande vous permettra de visualiser les messages qu'il contient en indiquant la clé du 1er message à afficher et la clé du dernier. DSPMSGD (ou WRKMSGD) |
DSPMSGD RANGE(clé du 1er message à afficher, par défaut *FIRST) (clé du dernier à afficher, par défaut *ONLY) MSGF(nom du fichier de message) DETAIL(*DETAIL pour voir le 1er niveau) (*FULL pour voir la définition complète) Vous pouvez supprimer le fichier en utilisant la commande DLTMSGF DLTMSGF MSGF(nom du fichier message) |
1.2.2 AJOUT D'UN MESSAGE DANS LE FICHIER DES MESSAGES. ------------------------------------------------------ Un message prédéfini est composé en quelques sortes de "2 messages" le message de 1er niveau qui est affiché lors de l'envoi du message et le message de second niveau qui sera accessible en appuyant sur la touche AIDE. La commande d'ajout de message indique une multitudes de fonctions, en particulier et surtout le texte des messages de 1er et 2nd niveau mais aussi des variables qui peuvent être inclues dans les textes, des informations concernant la réponse, la gravité du message etc... Voici le format de la commande, les fonctions des différents paramètres seront expliquées plus loin. La commande est ADDMSGD (add message définition) |
ADDMSGD MSGID(la clé du message) MSGF(le fichier des messages) (bibliothèque) MSG('texte du message de 1er niveau') SECLVL('texte du message de 2ème niveau') SEV(gravité du message, nombre compris entre 00 et 99 ou 99 est la plus haute gravité) FMT(descriptions de la ou des variables utilisées dans le message) Les paramètres qui suivent permettent de définir la réponse à ce message quand il est envoyé de type *INQ (question) |
TYPE(si le message entraîne une réponse on indiquera le type de la réponse *CHAR,*DEC,..) LEN(longueur de la réponse,si numérique on indiquera en plus le nombre de décimales) VALUES(liste des réponses autorisées) SPCVAL(valeurs spéciales de remplacement pour la réponse) RANGE(2 valeurs entre lesquelles la réponse doit être comprise) REL(contrôle de la réponse réalisé par comparaison) DFT(valeur par défaut de la réponse) Il existe encore d'autres paramètres dans cette commande, d'utilisation moins fréquente. |
Quelques précisions sur certains paramètres de cette commande. MSGID permet de codifier la clé du message, la clé doit être unique dans le fichier des messages. Elle vous donnera le moyen de retrouver un message. La clé se compose de 7 caractères les 3 premiers étant ALPHABETIQUES et les 4 suivants NUMERIQUES HEXA (0 à F) Ex: MSGID(CPF8207) ... MSGID(EXP00FA) FMT: Lorsque vous définissez le texte d'un message vous pouvez utiliser des variables dans ce message (maximum 99 variables). Ex: 'travail PGMBAS1 terminé le 150187 à 173500' est un message avec 3 variables, le nom du travail, la date et l'heure. |
Pour utiliser des variables dans un message vous définirez le texte comme suit. MSG('travail &1 terminé le &2 à &3') Lors de l'envoi du message vous indiquerez la valeur de ces variables. Le paramètre FMT permet de définir ces variables : FMT type de la variable (*CHAR,*DEC,...) longueur de la variable nombre de décimales EX: ADDMSGD MSGID(MSG0001) MSGF(MYMSGF) MSG('travail &1 + terminé le &2 à &3') FMT((*CHAR 10) (*CHAR 6) + (*CHAR 6)) ^ ^ ^ ! ! ! ! ! &3 &1 &2 |
SPCVAL permet d'associer des valeurs de remplacement à une réponse. Supposons que dans un message vous demandiez une réponse, vous n'autorisez que 2 réponses OUI ou NON. si l'utilisateur répond 'oui',cela sera considéré comme ? incorrecte, car 'oui' est écrit en minuscule. Grâce au paramètre SPCVAL vous direz que 'oui' est égal à 'OUI' ADDMSGD MSGID(MSG0002) MSGF(MYMSGF) MSG('voulez-vous + continuer le travail?') SECLVL('répondez + OUI si vous voulez poursuivre le travail et + NON si vous voulez interrompre le + traitement') LEN(3) VALUES('OUI' 'NON') + SPCVAL(('oui' 'OUI') ('non' 'NON')) |
2 TRANSMISSION DES MESSAGES. ---------------------------- TOUS LES MESSAGES SONT ENVOYES A DES FILES D'ATTENTE DE MESSAGES (MSGQ) Il existe 3 types de file d'attente de messages. - file d'attente de messages associée à un écran. - file d'attente de messages utilisateur. - file d'attente de message du travail |
2.1. Files d'attente de messages associées à un écran. ----------------------------------------------------- - Elles ont le même nom que l'écran - Créées implicitement en même temps que l'écran - Allouées à l'écran de même nom - Suppression impossible Exemple si vous travaillez avec l'écran DSP10 il existe une file d'attente de messages qui se nomme DSP10 et qui est associée à cet écran. Vous pouvez visualiser le contenu de cette MSGQ par la commande DSPMSG. DSPMSG MSGQ(nom de la message queue) START(à partir de quel message *LAST le dernier *FIRST le premier) SEV(à partir de quel gravité de message-entre 01 et 99) |
2.2. Files d'attente de messages utilisateurs. ---------------------------------------------- - Créées par les utilisateurs (ou à la création du profil) pour recevoir les messages dans une MSGQ particulière. CRTMSGQ MSGQ(nom de la msgq) FORCE(forcer écriture immédiate sur disque) SIZE(taille de la MSGQ) - Supprimées par la commande DLTMSGQ, visualisées par DSPMSG. Ce type de msgq peut être alloué par un utilisateur grâce à la commande CHGMSGQ, cette commande sert aussi à changer le mode de livraison des messages. CHGMSGQ MSGQ(nom de la msgq) DLVRY(mode de livraison des messages) |
4 modes de livraison - *BREAK livraison immédiate si un message est envoyé à ume msgq en *BREAK le travail est interrompu - *HOLD les messages sont stockés dans la MSGQ - *NOTIFY les messages sont stockés, s'il s'agit d'un travail interactif, le voyant "messages" est allumé. et un signal sonore est émis. - *DFT pas de livraison de message. Pour les messages d'ineterrogation la réponse par défaut est envoyée. |
2.3 FILES D'ATTENTES DE MESSAGES DU TRAVAIL. -------------------------------------------- Elles sont créées automatiquement par le système pour chaque travail. Elles sont constituées de 2 parties : - la msgq externe (*EXT) - les msgq programme 2.3.1 LA MSGQ EXTERNE. ---------------------- Elle sert à communiquer entre le travail et l'utilisateur pour les travaux interactifs. |
Pour un travail interactif : si un message d'information, d'interrogation ou d'avertissement est envoyé à l'external le message est visualisé à l'écran et le travail attend une réponse. |
2.3.2 LES MSGQ PROGRAMMES. -------------------------- Elles sont utilisées pour communiquer entre programmes d'un même travail. Une msgq programme est créée pour chaque invocation d'un programme , cette msgq aura le même nom que le programme. Visualisons ce que nous venons d'apprendre: Supposons 2 programmes CLP1 et CLP2: CLP1 - envoie un message MSG 1 au programme l'appelant - appelle le programme CLP2 - envoie un message MSG 2 au programme l'appelant CLP2 - envoie un message MSG A au programme l'appelant |
Aprés l'exécution de CLP1 exécuté par SBMJOB JOB(TRAVAIL) RQSDTA(CALL CLP1) nous aurons la msgq du travail comme suit: --------------------- ! CALL CLP1 ! ! MSG 1 ! MSGQ *EXT ! MSG 2 ! !-------------------! ! ! ! MSGA ! MSGQ CLP1 ! ! !-------------------! ! ! MSGQ CLP2 !-------------------! |