Aller au contenu

SNDPGMMSG

Envoyer un message programme

En bref

La commande SNDPGMMSG (Envoyer un message programme) envoie un message à une file d'attente de messages désignée ou à une file d'attente de messages de poste de liste d'appels.

SNDPGMMSG se lit SND (Envoyer) + PGMMSG. Sur IBM i, le nom d'une commande associe presque toujours un verbe et un objet.

Syntaxe minimale

SNDPGMMSG

Paramètres

  • MSG Texte du message, ou
  • MSGID Identificateur de message
  • MSGF Fichier de messages fichier message
  • MSGDTA Valeurs zone donnée de msg
  • TOPGMQ File msg poste liste d'appel
  • TOMSGQ Envoi à file attente messages
  • TOUSR Au profil utilisateur
  • MSGTYPE Type de message
  • RPYMSGQ File attente msg pour réponse
  • KEYVAR Variable pour KEYVAR (4)
  • CCSID ID codé de jeu de caractères

Astuce : dans une session 5250, tapez SNDPGMMSG puis F4 pour l'invite de saisie, et F1 sur un paramètre pour son aide.

Aide IBM i de la commande

Texte du F1, IBM i 7.5 en français (bibliothèque QSYS)

Où s'exécute : Compiled CL program or interpreted REXX (*BPGM *IPGM *BREXX *IREXX)
Compatible multitâche : Oui

La commande SNDPGMMSG (Envoyer un message programme) envoie un message à une file d'attente de messages désignée ou à une file d'attente de messages de poste de liste d'appels. Cette dernière peut être la file d'attente de messages externe *EXT ou encore une file d'attente de messages associée à un poste de liste d'appels. A chaque fois qu'un programme ou qu'une procédure est appelé, une nouvelle file d'attente de messages est associée au poste de liste d'appels correspondant. Cette file d'attente de messages est identifiée par le nom du programme ou de la procédure qui lui est associé.

Un programme peut envoyer un message à sa propre file d'attente ou à une file d'attente associée à un poste de liste d'appels différent.

Cette commande peut envoyer aussi bien des messages d'exception que des messages d'un autre type. Lorsqu'un message d'exception est envoyé, le programme émetteur interrompt son traitement jusqu'à ce que l'exception fasse l'objet d'une action. La reprise du traitement dépend de l'action exécutée. Si cette reprise est autorisée, le traitement se poursuit à partir de la commande CL faisant immédiatement suite à la commande SNDPGMMSG (Envoyer un message programme). Lorsque le message envoyé n'est pas un message d'exception, le programme émetteur n'interrompt pas son traitement. Une fois le message envoyé, l'exécution de ce programme se poursuit à partir la commande CL faisant immédiatement suite à la commande SNDPGMMSG (Envoyer un message programme).

Lorsqu'un programme ou une procédure contrôle les messages d'exception et qu'un message d'exception est dirigé vers le poste de liste d'appels dans lequel ce programme ou cette procédure s'exécute, le gestionnaire d'exceptions associé est appelé et exécuté par le système. Un programme ou une procédure peut donc déterminer à quel moment un message d'exception est envoyé vers le poste de liste d'appels dans lequel il s'exécute. A noter qu'il n'y a pas de notification automatique pour les messages autres que les messages d'exception.

Le message peut être un message immédiat ou prédéfini stocké dans un fichier message. Des données de substitution peuvent être spécifiées dans le paramètre MSGDTA (sous la forme d'une chaîne de caractères unique contenant une ou plusieurs zones de données de message concaténées), ceci afin de remplacer les variables de substitution présentes dans le message. Ce message peut être dirigé vers la file d'attente de messages *EXT du travail, vers une file d'attente de messages associée à un poste de liste d'appels, vers une ou plusieurs files d'attente de messages qui n'appartiennent pas à un programme (messages de profil utilisateur, par exemple), vers la file d'attente de messages opérateur système ou vers l'historique du système (QHST).

Restrictions :

  1. La commande SNDPGMMSG permet l'envoi d'un message de 512 caractères maximum. Toutefois, si le message est envoyé à la file d'attente de messages d'un travail interactif, seuls 76 caractères s'affichent sur l'écran Messages du programme. Si le message est envoyé à la file d'attente d'un utilisateur, d'un poste de travail ou de l'opérateur système, la commande DSPMSG (Afficher les messages) permet l'affichage des 512 caractères.
  2. Cette commande permet d'envoyer uniquement des messages d'interrogation (indiqués par MSGTYPE(*INQ)) à une seule file d'attente de messages, ou à deux files d'attente de messages autres que de programme si l'une d'entre elles est *HSTLOG.

Paramètres

Mot-clé Description Valeurs possibles Remarques
MSG Texte du message, ou Valeur caractère Facultatif, positionnel 1
MSGID Identificateur de message Nom Facultatif, positionnel 2
MSGF fichier message Nom d'objet qualifié Facultatif, positionnel 3
Qualificatif 1: fichier message Nom
Qualificatif 2: Biblio Nom, *LIBL, *CURLIB
MSGDTA Valeurs zone donnée de msg Valeur caractère, *NONE Facultatif, positionnel 4
TOPGMQ File msg poste liste d'appel Valeurs uniques: *EXT
Autres valeurs: Liste d'éléments
Facultatif
Élément 1: Relation *PRV, *SAME
Élément 2: ID poste liste d'appel Liste d'éléments
Élément 1: Poste de liste d'appel Valeur caractère, *
Élément 2: Module Nom, *NONE
Élément 3: Programme lié Nom, *NONE
TOMSGQ Envoi à file attente messages Valeurs uniques: *TOPGMQ, *SYSOPR
Autres valeurs (jusqu'à 50 répétitions): Nom d'objet qualifié
Facultatif
Qualificatif 1: Envoi à file attente messages Nom, *HSTLOG
Qualificatif 2: Biblio Nom, *LIBL, *CURLIB
TOUSR Au profil utilisateur Nom, *SYSOPR, *ALLACT, *REQUESTER Facultatif
MSGTYPE Type de message *INFO, *INQ, *RQS, *COMP, *DIAG, *NOTIFY, *ESCAPE, *STATUS Facultatif
RPYMSGQ File attente msg pour réponse Valeurs uniques: *PGMQ
Autres valeurs: Nom d'objet qualifié
Facultatif
Qualificatif 1: File attente msg pour réponse Nom
Qualificatif 2: Biblio Nom, *LIBL, *CURLIB
KEYVAR Variable pour KEYVAR (4) Valeur caractère Facultatif
CCSID ID codé de jeu de caractères 1-65535, *HEX, *JOB Facultatif

Texte du message, ou (MSG)

Indique le texte du message à envoyer. La longueur maximale est de 3 000 caractères ou si vous êtes invité à lancer cette commande dans un travail interactif, le maximum est de 512 caractères. Ce texte doit figurer entre apostrophes s'il comporte des caractères spéciaux, notamment des blancs. Si ce paramètre est précisé, aucune valeur ne doit être indiquée au paramètre Identificateur de message (MSGID), et les valeurs *ESCAPE, *NOTIFY ou *STATUS ne peuvent être précisées au paramètre Type de message (MSGTYPE). Si ce paramètre est précisé, aucune valeur ne peut être indiquée au paramètre fichier message (MSGF) ou Valeurs zone donnée de msg (MSGDTA) car ces deux types requièrent l'indication d'un identificateur de message.

Remarques concernant l'ID codé de jeu de caractères (CCSID)

Le système considère que le texte indiqué au paramètre MSG a pour CCSID celui du travail exécutant cette commande, sauf si un ID codé de jeu de caractères est précisé au paramètre CCSID. Pour plus de détails sur le gestionnaire de messages et la façon dont il utilise les CCSID, reportez-vous au manuel Rubriques Internationalisation de l'i5/OS dans l'IBM i Information Center, à l'adresse http://www.ibm.com/systems/i/infocenter/.

Identificateur de message (MSGID)

Précise l'identificateur d'un message pré-défini qui est envoyé par le programme à une file d'attente de messages. Si vous avez utilisé ce paramètre, aucune valeur ne doit figurer au paramètre Texte du message, ou (MSG).

fichier message (MSGF)

Indique le fichier message contenant le message prédéfini qui doit être envoyé. Ce paramètre est obligatoire si une valeur figure au paramètre Identificateur de message (MSGID).

Qualificatif 1 : fichier message

nom
Indiquez le nom du fichier message contenant le message défini qui doit être envoyé.

Qualificatif 2 : Biblio

*LIBL
La recherche porte sur toutes les bibliothèques de la liste des bibliothèques de l'unité d'exécution en cours jusqu'à ce que la première occurrence soit trouvée.
*CURLIB
Le fichier message est recherché dans la bibliothèque en cours du travail. Si celle-ci ne figure pas dans la liste des bibliothèques, QGPL est prise par défaut.
nom
Entrez le nom de la bibliothèque contenant le fichier message.

Valeurs zone donnée de msg (MSGDTA)

Indique la chaîne de caractères ou la variable CL qui contient une ou plusieurs des valeurs de substitution utilisées comme zones de données du message prédéfini. Ces valeurs remplacent les variables définies dans la description de message.

Remarque :Le paramètre MSGDTA n'est pas admis avec le paramètre MSG.

*NONE
Il n'existe aucune chaîne de caractères de valeurs de substitution à utiliser dans le message spécifié.
chaîne-caractères
Entrez la chaîne de caractères correspondant aux valeurs de substitution du message pré-défini que le programme doit envoyer, ou entrez le nom de la variable CL contenant la chaîne de caractères.

Règles de spécification des valeurs de substitution pour MSGDTA :

  • Si plusieurs variables de substitution existent, toutes les valeurs de substitution doivent être concaténées en une chaîne de caractères qui est spécifiée au paramètre MSGDTA.
  • Si plusieurs variables de substitution existent dans le message, la chaîne de caractères MSGDTA doit être de la même longueur que la totalité de tous les formats de zone de données de messages définis dans le message.
  • La chaîne de caractères contenant les valeurs de substitution doit être codée avec les caractères de remplissage appropriés (des zéros pour les valeurs numériques et des blancs pour les valeurs alphanumériques) afin de positionner correctement les valeurs dans la chaîne pour qu'elles correspondent aux zones concaténées utilisées pour créer la chaîne. Si la chaîne contient des caractères spéciaux (y compris des blancs), elle doit être placée entre apostrophes. La valeur indéfinie *N ne peut pas être spécifiée pour une valeur de substitution.
  • La longueur totale de la chaîne de caractères des données de substitution concaténées ne doit pas dépasser 3000 caractères, ou si vous activez une invite pour cette commande, cette longueur ne doit pas dépasser 512 caractères. Pour plus d'informations sur la longueur des zones de données de message individuelles, reportez-vous à la description du paramètre FMT de la commande ADDMSGD.
  • Les valeurs de substitution spécifiées dans la chaîne MSGDTA doivent figurer dans le même ordre que dans le paramètre FMT de la commande ADDMSGD.
  • Si la longueur de la valeur de substitution qui est transmise pour une variable de substitution est inférieure à celle qui est spécifiée au paramètre FMT de la commande ADDMSGD, la valeur de substitution devient une zone indéfinie.
  • Si la longueur de la valeur de substitution qui est transmise à une variable de substitution est supérieure à celle qui est spécifiée au paramètre FMT de la commande ADDMSGD, la valeur de substitution est tronquée.

Pour illustrer un exemple d'utilisation de ces règles, imaginons un message contenant trois variables de substitution :

Variable  Type    Longueur       Valeurs attendues
&1        *CHAR   3 caractères   Oui ou Non
&2        *CHAR   4 chiffres     4 chiffres
&3        *CHAR   8 caractères   Un ou deux mots

Voici des exemples de chaînes de caractères valides pouvant être spécifiées au paramètre MSGDTA :

MSGDTA('Yes0007not done')
MSGDTA('No 0285finished')
MSGDTA(&DTA)

Notez que la seconde variable de substitution est définie en tant que variable de type caractère et non en tant que variable décimale. Si une chaîne de caractères doit être utilisée à la place d'une variable CL pour spécifier les valeurs de substitution au paramètre MSGDTA, les variables de substitution associées doivent être définies (au paramètre FMT de la commande ADDMSGD) en tant que variables de type caractère afin d'empêcher des résultats non valides dans le texte du message qui est envoyé.

Le troisième exemple de chaînes de caractères valides affiche une variable CL au lieu d'une chaîne de caractères réelle. La variable CL &DTA a peut-être été déclarée dans le programme d'envoi comme suit :

DCL   VAR(&DTA)  TYPE(*CHAR)
      LEN(15)  VALUE('YES0175not done')

La chaîne de caractères, spécifiée en tant que valeur initiale de la variable &DTA, contient les trois valeurs de substitution concaténées YES, 0175 et not done, qui doivent être envoyées en tant que données de message.

Remarque :Si le dernier caractère de la chaîne fournie pour le paramètre MSGDTA est un blanc (pour les types de format *BIN, *UBIN, *ITV et les zones d'horodatage), le système tronque ce blanc. Si la longueur de la chaîne obtenue est plus courte que la longueur spécifiée au paramètre FMT de la commande ADDMSGD, la variable de substitution devient une zone indéfinie. Pour éviter que le syst ne tronque les blancs, concaténez un caractère autre qu'un blanc (pour le type de format *BIN, *UBIN, *ITV et les zones d'horodatage) à la chaîne après les blancs. Le syst conserve les blancs et tronque le caractère supplémentaire.

Remarques concernant l'ID codé de jeu de caractères (CCSID)

Le système considère que le texte indiqué au paramètre MSGDTA correspondant à la zone de type *CCHAR est dans le CCSID du travail exécutant cette commande, sauf si un ID codé de jeu de caractères est précisé au paramètre CCSID. Le système considère que tout autre texte indiqué au paramètre MSGDTA a pour CCSID 65535 et n'est pas converti. Pour plus de détails sur le gestionnaire de messages et la façon dont il utilise les CCSID, reportez-vous au manuel Rubriques Internationalisation de l'i5/OS dans l'IBM i Information Center, à l'adresse http://www.ibm.com/systems/i/infocenter/. Pour plus d'informations sur les zones de type *CCHAR, reportez-vous à la commande ADDMSGD (Ajouter description de message).

File msg poste liste d'appel (TOPGMQ)

Indique la file d'attente de messages de programme à laquelle le message spécifié doit être envoyé. La file d'attente de messages peut être la file d'attente externe (*EXT) ou la file d'attente de messages associée à un poste de liste d'appels.

Valeurs uniques

*EXT
Le message est envoyé dans la file d'attente de messages externe du travail. Celle-ci permet de communiquer avec le demandeur externe du travail tel qu'un utilisateur de clavier-écran. Les messages *INQ envoyés à *EXT dans un travail interactif attendent 24 heures avant de recevoir la réponse par défaut. Dans un travail par lots, la réponse par défaut est envoyée immédiatement.

Les messages envoyés dans cette file d'attente peuvent comporter 512 caractères, mais 76 caractères de texte seulement sont affichés sur l'écran des messages de programme.

Elément 1 : Relation

Deux éléments de paramètre permettent de spécifier la file d'attente de messages de poste de liste d'appels à partir de laquelle un message doit être envoyé. Le premier élément indique si la file d'attente est associée au programme ou à la procédure identifié par le second élément, ou bien à l'appelant de ce programme ou de cette procédure.

*PRV
Le message est envoyé dans la file d'attente de messages du poste de liste d'appels qui précède immédiatement celui identifié par le second élément. Cependant, si la file d'attente de messages qui précède immédiatement celle identifiée par le second élément correspond à une PEP (procédure d'entrée de programme) ILE, le message est envoyé à la file d'attente de messages qui précède la file d'attente de messages dans la liste.
*SAME
Le message est envoyé dans la file d'attente de messages du poste de pile d'appel identifié par la seconde valeur.

Elément 2 : ID poste liste d'appel

Le deuxième élément de ce paramètre permet de fournir les informations nécessaires pour identifier un poste de liste d'appels. ce paramètre comporte trois éléments. L'élément 1 indique un nom de programme OPM ou de procédure ILE, ou encore une valeur spéciale. L'élément 2 précise le nom du module ILE utilisé comme qualificatif de la valeur spécifiée dans l'élément 1. L'élément 3 peut indiquer un nom de programme OPM ou ILE ou encore un nom de programme de service, suivant ce qui a été défini dans l'élément 1. L'élément 3 sert également de qualificatif de la valeur spécifiée dans l'élément 1.

Elément 1 : Poste de liste d'appel

*
Identifie le programme OPM ou la procédure ILE exécutant cette commande.
nom
Indiquez le nom du programme OPM ou de la procédure ILE utilisé(e) pour identifier le poste de liste d'appel.

Le nom de la procédure seul ne permet pas toujours d'identifier la procédure correcte, car différentes procédures portant le même nom peuvent être exécutées dans un travail. Une procédure peut être définie plus précisément en spécifiant l'élément 2 ou les éléments 2 et 3.

Le système commence par rechercher le nom indiqué parmi les programmes ou les procédures ayant été appelés en dernier.

Si cet élément désigne un programme OPM, le nom indiqué ne peut pas dépasser 10 caractères. S'il identifie une procédure ILE, le nom ne peut pas dépasser 256 caractères.

Il est possible d'indiquer des noms de procédure imbriqués en séparant ces derniers par un signe deux-points (:). Dans ce cas, le premier nom identifié est celui de la procédure supérieure, suivi par les procédures qu'elle contient. Le nom de la procédure inférieure est identifié en dernier dans la chaîne.

Vous pouvez indiquer des noms partiels de programmes ou de procédures en tapant trois signes inférieur à (<<<) au début du nom ou trois signes supérieur à (>>>) à la fin du nom. Si vous utilisez à la fois les signes inférieur à et supérieur à, le nom du programme ou de la procédure ne peut pas dépasser 250 caractères.

Pour la recherche d'un nom partiel de programme ou de procédure :

  • Les signes inférieur à (<<<) sont tronqués lorsqu'ils sont indiqués seuls au début d'un nom de programme ou de procédure et que le reste de la chaîne de caractère est justifié à droite. Les caractères restants de la chaîne sont comparés au programme ou à la procédure en cours de la pile d'appels, en partant du dernier caractère du nom de programme ou de procédure.
  • Les signes supérieur à (>>>) sont tronqués lorsqu'ils sont indiqués seuls à la fin d'un nom de programme ou de procédure. Les caractères restants de la chaîne sont comparés au programme ou à la procédure en cours de la pile d'appels, en partant du premier caractère du nom de programme ou de procédure.
  • Les signes inférieur à (<<<) et supérieur à (>>>) sont tronqués lorsqu'ils sont utilisés ensemble pour un nom de programme ou de procédure. Les caractères restants sont utilisés pour analyser et comparer la longueur de la chaîne précisée avec le nom du programme ou de la procédure en cours dans la pile d'appels.

Elément 2 : Module

*NONE
Aucun qualificatif de module ILE n'est fourni.
nom
Indiquez le nom du module ILE à utiliser pour identifier la file d'attente de messages. Ce nom identifie le module dans lequel la procédure a été compilée.

Elément 3 : Programme

*NONE
Aucun qualificatif du programme n'est fourni.
nom
Indiquez le nom du programme à utiliser pour identifier la file d'attente de messages. Ce nom identifie le programme auquel la procédure a été liée.

Les valeurs spéciales suivantes peuvent être spécifiées pour l'élément de poste de liste d'appels (qui est le premier qualificateur du second élément) du paramètre TOPGMQ :

*CTLBDY
Indique le poste de liste d'appels se trouvant à la frontière de contrôle la plus récente. Ce poste s'exécutera dans le même groupe d'activation que le programme CL exécutant la commande SNDPGMMSG. Il est à noter qu'aucune frontière de contrôle n'existe si tous les programmes de la liste d'appel sont des programmes OPM.
*PGMBDY
Indique la frontière soit du programme utilisant la commande SNDPGMMSG soit du programme dont le nom est indiqué comme qualificateur 3 de ce paramètre. Si aucun nom n'est précisé comme qualificateur 3, le programme utilisant la commande est pris par défaut.

Si un programme ILE est indiqué, cette valeur spéciale identifie le poste de liste d'appels destiné à la procédure PEP de ce programme dans le cas d'un appel dynamique établi vers ce dernier. Si le programme a été appelé par un pointeur de procédure, cette valeur spéciale identifie le poste de liste d'appels destiné à la procédure désignée par le pointeur. Dans le cas d'un programme de service ILE, cette valeur spéciale identifie le poste de liste d'appels destiné à la première procédure appelée dans ce programme de service.

Dans le cas d'un programme OPM, cette valeur spéciale revient à indiquer la valeur spéciale * ou un nom de programme comme élément 1 sauf si le programme OPM a établi un appel récursif à lui-même. Dans ce cas, cette valeur spéciale identifie le premier niveau de récursion au lieu du niveau de récursion en cours, comme si la valeur spéciale * ou un nom de programme était indiqué.

*PGMNAME
Indique que le poste de liste d'appels ne sera identifié qu'à l'aide d'un nom de programme et facultativement à l'aide d'un nom de module. Lorsque cette valeur spéciale est utilisée, un nom de programme ILE, un nom de programme de service ILE, ou un nom de programme OPM doit être indiqué comme élément 3. Le qualificateur 2 peut comporter la valeur spéciale *NONE ou un nom de module ILE.

Cette valeur spéciale permet d'envoyer un message à la dernière procédure appelée dans le cadre du programme ILE ou du programme de service ILE indiqué. Si vous utilisez cette valeur spéciale, il n'est pas nécessaire d'indiquer un nom de procédure. Si un nom de module est également indiqué, cette valeur spéciale permet d'envoyer un message à la dernière procédure appelée dans le cadre du programme et du module identifiés.

Cette valeur spéciale permet également d'envoyer un message à un programme OPM. Dans ce cas, le fait d'utiliser cette valeur spéciale et d'indiquer un nom de programme OPM à l'élément 3 revient à indiquer un nom de programme à l'élément 1. Il est à noter que si cette valeur spéciale est utilisée pour effectuer un envoi à un programme OPM, *NONE doit être indiqué pour le nom de module.

Envoi à file attente messages (TOMSGQ)

Indique jusqu'à cinquante files d'attente de messages auxquelles est envoyé un message d'information. Un message d'interrogation ne peut être envoyé qu'à une seule file d'attente de messages, ou deux si l'une d'entre elles est *HSTLOG. Si vous avez indiqué une valeur au paramètre Au profil utilisateur (TOUSR), vous ne pouvez pas utiliser ce paramètre.

Valeurs uniques

*TOPGMQ
Le message est envoyé uniquement à la file d'attente de messages indiquée au paramètre File msg poste liste d'appel (TOPGMQ).
*SYSOPR
Le message est envoyé au message de l'opérateur système (file d'attente de messages QSYSOPR dans la bibliothèque QSYS). En cas d'envoi d'un message à QSYSOPR, une copie du message est automatiquement envoyée à la file d'attente de messages QHST (historique du système) dans la bibliothèque QSYS.

Qualificatif 1 : Envoi à file attente messages

*HSTLOG
Le message est envoyé à l'historique du système (file d'attente de messages QHST dans la bibliothèque QSYS). Si la valeur *HSTLOG est indiquée plusieurs fois, un seul message est envoyé à l'historique du système. Si la valeur *HSTLOG est indiquée avec la file d'attente de messages QSYSOPR, un seul message est envoyé à l'historique du système.
nom
Indiquez le nom de la file d'attente de messages où doit être envoyé le message. Vous pouvez indiquer jusqu'à files d'attente de messages.

Qualificatif 2 : Biblio

*LIBL
La recherche porte sur toutes les bibliothèques de la liste des bibliothèques de l'unité d'exécution en cours jusqu'à ce que la première occurrence soit trouvée.
*CURLIB
La file d'attente de messages est recherchée dans la bibliothèque en cours du travail. Si celle-ci ne figure pas dans la liste des bibliothèques, QGPL est prise par défaut.
nom
Indiquez le nom de la bibliothèque contenant la file d'attente de messages.

Au profil utilisateur (TOUSR)

Indique que le message est envoyé à la file d'attente de messages associée au profil utilisateur dont le nom est précisé dans ce paramètre. Vous ne pouvez pas utiliser ce paramètre si une valeur a été indiquée au paramètre Envoi à file attente messages (TOMSGQ) ou File msg poste liste d'appel (TOPGMQ).

*SYSOPR
Le message est envoyé à l'opérateur système (file d'attente de messages QSYSOPR dans la bibliothèque QSYS). En cas d'envoi d'un message à QSYSOPR, une copie du message est automatiquement envoyée à la file d'attente de messages QHST (historique du système) dans la bibliothèque QSYS.
*REQUESTER
Le message est envoyé à la file d'attente de messages associée au profil utilisateur dans le cas d'un travail interactif, ou à la file d'attente de messages de l'opérateur système (QSYSOPR dans la bibliothèque QSYS) dans le cas d'un travail par lots.
*ALLACT
Une copie du message est envoyée à toutes les files d'attente de messages associées aux utilisateurs ayant un travail interactif en cours. Vous ne pouvez pas utiliser le paramètre *ALLACT dans les messages d'interrogation.
nom
Entrez le nom du profil de l'utilisateur auquel doit être envoyé le message.

Type de message (MSGTYPE)

Indique le type du message envoyé par ce programme.

Remarques :

  1. Les messages d'interrogation peuvent être envoyés uniquement à la file d'attente externe ou à la file d'attente de messages indiquée au paramètre TOUSR ou TOMSGQ. Lors de l'envoi d'une interrogation à l'aide du paramètre TOMSGQ, vous pouvez indiquer une deuxième file d'attente si la valeur est *HSTLOG.
  2. Les messages d'achèvement, de diagnostic, d'arrêt programme, d'avertissement et d'état peuvent être envoyés uniquement à une file d'attente de messages de poste de liste d'appels.
  3. Les messages d'arrêt programme ne peuvent pas être envoyés à la file d'attente de messages externe.
*INFO
Le message envoyé est un message d'information.
*INQ
Le message envoyé est un message d'interrogation.
*COMP
Un message d'achèvement est envoyé à une file d'attente de messages de poste de liste d'appels. Il indique l'état du travail ayant abouti.
*DIAG
Un message de diagnostic est envoyé à une file d'attente de messages de poste de liste d'appels. Il fournit des informations relatives aux erreurs détectées par le programme, lesquelles peuvent se trouver dans les entrées transmises à ce dernier, ou s'être produites lors de l'exécution de la fonction demandée. Un message d'arrêt ou d'avertissement doit également être envoyé pour informer la procédure ou le programme récepteur de la présence de messages de diagnostic dans sa file d'attente de messages.
*NOTIFY
Un message d'avertissement est envoyé à une file d'attente de messages de poste de liste d'appels. Il décrit une condition nécessitant des mesures correctives pour que le programme émetteur puisse poursuivre son exécution. Un message de réponse est renvoyé au programme émetteur. Une fois que les corrections ont été effectuées, le programme émetteur peut reprendre son exécution et recevoir le message de réponse à partir de sa file d'attente.
*ESCAPE
Un message d'arrêt programme est envoyé à une file d'attente de messages de poste de liste d'appels. Il décrit une condition d'erreur irrémédiable. Le programme émetteur s'arrête.
*RQS
Un message de demande est envoyé à une file d'attente de messages de poste de liste d'appels. Il permet à une demande provenant d'un fichier unité de passer de ce programme dans un autre programme ou dans une procédure. Un message immédiat, indiqué au paramètre MSG, doit être utilisé pour envoyer la demande.
*STATUS
Un message d'état est envoyé à une file d'attente de messages de poste de liste d'appels. Il décrit l'état du travail exécuté par le programme émetteur. Les 28 premiers caractères des données du message définies au paramètre MSGDTA sont utilisés comme données de comparaison pour la commande MONMSG (Intercepter un message). Si le message d'état n'est pas intercepté, le contrôle est rendu au programme émetteur. Si un message d'état est envoyé à la file d'attente de messages externe d'un travail interactif, ce message s'affiche à la ligne 24, le traitement se poursuit et aucune réponse n'est nécessaire.

Remarque :Cette valeur ne peut pas être indiquée si le paramètre Texte du message, ou (MSG) est renseigné.

File attente msg pour réponse (RPYMSGQ)

Indique, dans le cas de messages d'interrogation et d'avertissement uniquement, le nom de la file d'attente de messages d'appel à laquelle le message de réponse doit être envoyé.

Remarque :Une valeur *PGMQ doit être spécifiée si un message d'avertissement est envoyé ou si un message d'interrogation est envoyé à la file d'attente *EXT.

Valeurs uniques

*PGMQ
La réponse à un message d'interrogation ou d'avertissement est envoyée à la file d'attente de messages associée au poste de liste d'appels correspondant au programme ou à la procédure utilisant cette commande.

Qualificatif 1 : File attente msg pour réponse

nom
Entrez le nom de la file d'attente de messages où doit être envoyée la réponse.

Qualificatif 2 : Biblio

*LIBL
La recherche porte sur toutes les bibliothèques de la liste des bibliothèques de l'unité d'exécution en cours jusqu'à ce que la première occurrence soit trouvée.
*CURLIB
La file d'attente de messages est recherchée dans la bibliothèque en cours du travail. Si celle-ci ne figure pas dans la liste des bibliothèques, QGPL est prise par défaut.
nom
Indiquez le nom de la bibliothèque contenant la file d'attente de messages.

Variable pour KEYVAR (4) (KEYVAR)

Indique, le cas échéant, le nom de la variable CL alphanumérique qui contient la clé de référence permettant d'identifier le message envoyé par le programme associé à cette commande. Cette clé est attribuée par le système lors de l'envoi du message et figure dans la variable indiquée ici.

Si un message est envoyé à une file d'attente de messages associée à un poste de liste d'appels, KEYVAR se rapporte à celle-ci (indiquée au paramètre File msg poste liste d'appel (TOPGMQ)). Si *INQ ou *NOTIFY est spécifié au paramètre Type de message (MSGTYPE), KEYVAR fait référence au message de copie de l'émetteur situé dans la file d'attente de messages indiquée au paramètre File attente msg pour réponse (RPYMSGQ). Dans tous les autres cas, KEYVAR fait référence à la file d'attente de messages définie dans le paramètre TOPGMQ.

Une clé peut être attribuée à n'importe quel type de message lorsque celui-ci est envoyé à une file d'attente de messages du programme. Pour les messages envoyés à une file d'attente de message non-programmée des clés de référence ne peuvent être associées qu'à des messages d'interrogation (*INQ). Si un autre type de message est envoyé à une file d'attente non programmée, aucune clé de message ne peut être attribuée et des blancs sont renvoyés pour KEYVAR.

Cette variable doit être une variable alphanumérique de 4 caractères. Si KEYVAR n'est pas indiqué et qu'une réponse est requise, elle peut être reçue par le programme selon le système FIFO.

Remarque :Cette zone est couramment utilisée avec des messages d'interrogation et de réponse. Lorsqu'un message d'interrogation est envoyé, utilisez ce paramètre comme méthode permettant d'obtenir la réponse au message. Par exemple, lors de l'envoi d'une interrogation, ce paramètre contient la clé de la copie de l'émetteur qui peut être spécifiée au paramètre MSGKEY de la commande RCVMSG afin d'obtenir la réponse dès qu'elle est envoyée au message.

ID codé de jeu de caractères (CCSID)

Désigne l'ID codé de jeu de caractères (CCSID) du message ou des données du message. Si un ID message est indiqué, le système considère que le texte fourni au paramètre MSGDTA (données du message) correspondant à la zone de type *CCHAR a pour CCSID celui défini par le paramètre CCSID. Le système considère que les données fournies ne correspondant pas à la zone de type *CCHAR ont pour CCSID 65535 et ne sont pas converties. Pour plus de détails sur la zone de type *CCHAR, reportez-vous à la description de la commande ADDMSGD (Ajouter description de message).

Si aucun ID message n'est indiqué, le texte défini par le paramètre MSG (message) est supposé avoir pour CCSID celui précisé au paramètre CCSID. Pour plus de détails sur le gestionnaire de messages et la façon dont il utilise les CCSID, reportez-vous au manuel Rubriques Internationalisation de l'i5/OS dans l'IBM i Information Center, à l'adresse http://www.ibm.com/systems/i/infocenter/.

*JOB
Le système considère que les données de message ou le texte immédiat ont pour CCSID celui du travail exécutant cette commande.
*HEX
Les données du message ou le texte immédiat ne sont pas convertis. Le CCSID 65535 est utilisé.
ID-codé-jeu-caractères
Indiquez un CCSID admis, dans lequel vous souhaitez que votre message ou les données de votre message figurent. Les valeurs admises sont comprises entre 1 et 65535. Cette commande valide le CCSID. La liste des valeurs de CCSID admises est fournie dans le manuel Internationalisation de l'iSeries Information Center, à l'adresse http://www.ibm.com/eserver/iseries/infocenter.

Exemples

Exemple 1 : Spécification de valeurs de substitution

SNDPGMMSG   MSGID(UIN0023)  MSGF(INV)  MSGDTA('50 100')
            TOPGMQ(*EXT)

Cette commande envoie le message identifié en tant que UIN0023, qui est stocké dans le fichier message INV, dans la file d'attente de messages du travail (la commande d'affichage des messages de programme présente le message sur un clavier-écran). Les données, qui contiennent deux valeurs de substitution spécifiées dans le paramètre MSGDTA, sont envoyées avec le message. Ces données peuvent ensuite être utilisées en tant que valeurs de substitution lorsque le message est reçu, ou en tant que données à clicher, selon la manière dont le message UIN0023 est défini dans le fichier message. Si l'on suppose que les variables &1 et &2 ont été définies dans le fichier message en tant que variables de type caractère, chacune d'une longueur de 3, et que le texte de premier niveau du message UIN0023 est : 'Article demandé réduit de &1; solde en cours &2.' Le texte du message envoyé est : 'Article demandé réduit de 50 ; solde en cours 100.'

Exemple 2 : Envoi d'un message d'interrogation

SNDPGMMSG   MSG('Monter chèques imprimante avant de continuer')
            MSGTYPE(*INQ)  TOMSGQ(*SYSOPR)

Cette commande envoie un message d'interrogation à l'opérateur système. L'opérateur examine le message envoyé par la commande DSPMSG et répond au message directement sur l'écran. Une commande RCVMSG (Recevoir message) est utilisée dans le programme pour accepter la réponse de l'opérateur.

Exemple 3 : Envoi d'un message d'arrêt programme

SNDPGMMSG   MSGID(USR0001)  MSGF(USRMSGR)  TOPGMQ(*PRV  *)
            MSGTYPE(*ESCAPE)

Cette commande est un exemple de la manière dont un message peut être envoyé à la personne appelant un programme ou d'une procédure pour provoquer un arrêt anormal. Le message USR0001 peut indiquer qu'un code incorrect a été transmis (par exemple, un code non numérique alors que le code doit être numérique). Le message étant envoyé en tant que message d'arrêt programme, le programme ou la procédure qui l'envoie ne peut pas être redémarré. Les valeurs *PRV et * n'ont pas besoin d'être codées dans cette commande parce qu'elles sont les valeurs par défaut du paramètre TOPGMQ.

Exemple 4: Envoi d'un message d'arrêt programme à une procédure ILE

SNDPGMMSG   MSGID(USR0001)  MSGF(USRMSGR)
            TOPGMQ(*SAME ACCOUNT_FINAL_TOTALS)
            MSGTYPE(*ESCAPE)

Cette commande envoie un message à une procédure ILE. Dans cet exemple, l'identificateur du poste de pile d'appel comporte plus de 10 caractères. Aucun qualificateur n'étant précisé, le nom du module et le nom du programme de lien associés à la procédure ne sont pas utilisés pour retrouver la procédure. Le message d'exception d'arrêt programme est envoyé à la file d'attente de messages associée à ACCOUNT_FINAL_TOTALS parce que *SAME est indiqué pour l'élément 1.

Exemple 5: Envoi d'un message d'arrêt programme utilisant des qualificateurs

SNDPGMMSG   MSGID(USR0001)  MSGF(USRMSGR)
            TOPGMQ(*PRV FIRST_QTR_SUMMARY SUMQTRS REPORTS)
            MSGTYPE(*ESCAPE)

Cette commande envoie un message d'exception d'arrêt programme à la personne appelant la procédure FIRST_QTR_SYMMARY. La procédure est qualifiée par le nom de module SUMQTRS et le nom de programme de lien REPORTS. Le message d'exception d'arrêt programme interrompt le programme émetteur et ce dernier n'est pas relancé.

Exemple 6: Envoi d'un message d'achèvement utilisant un nom de procédure partielle

SNDPGMMSG   MSGID(USR0001)  MSGF(USRMSGR)
            TOPGMQ(*SAME 'MANAGE_SALES>>>')  MSGTYPE(*COMP)

Cette commande envoie un message d'achèvement à la procédure la plus récente dont le nom commence par MANAGE_SALES.

Messages d'erreur

Messages *ESCAPE

CPF24CB
*PGMNAME nécessite un nom de programme indiqué. *PGMNAME requires a specified program name.
CPF2409
Type de message indiqué incompatible avec file d'attente de messages pgm.
CPF2428
Paramètre de file d'attente de messages incorrect.
CPF2453
File d'attente de réponses n'est pas la file d'attente de msg pgm de l'émetteur.
CPF2469
Erreur lors de l'envoi du message &1.
CPF247A
Entrée de pile d'appels introuvable. Call stack entry not found.
CPF247E
Le CCSID &1 est incorrect.
CPF2499
L'identificateur de message &1 n'est pas valide.
CPF2524
Gestionnaire d'exceptions non disponible pour le code anomalie &1. Exception handler not available because of reason code &1.
CPF2550
Message d'exception envoyé à un programme ou à une procédure supprimé(e).
CPF2702
Description d'unité &1 non trouvée.
CPF7C08
Connexion au réseau d'assistance non établie.
CPF8C0C
Le contenu de l'enregistrement d'incident &1 est incorrect.
CPF8C0E
Bibliothèque QGPL introuvable.
CPF8C01
La connexion avec le système de maintenance IBM est impossible. Une seule session permise.
CPF8C07
Un paramètre est incorrect.
CPF8C08
La valeur *SELECT est incorrecte comme nom de point de contrôle.
CPF8C09
&1 n'est pas défini comme prestataire de maintenance.
CPF8C16
Erreur lors du traitement de la demande.
CPF8C17
L'ouverture de session a échoué.
CPF8C18
Pas de connexion au réseau d'assistance.
CPF8C19
Echec de l'application de support à distance.
CPF8C2A
La connexion avec le système de maintenance IBM est impossible.
CPF8C24
Erreur lors du traitement de la demande.
CPF8C27
Autre unité de chargement non trouvée.
CPF8C32
La commande de PTF ne peut être traitée.
CPF9830
Allocation de la bibliothèque &1 impossible.
CPF9845
Erreur lors de l'ouverture du fichier &1.
CPF9846
Erreur lors du traitement du fichier &1 de &2.
CPF9847
Erreur lors de la fermeture du fichier &1 de bibliothèque &2.

© Copyright IBM Corp. Texte d'aide reproduit à des fins de formation.