Aller au contenu

SNDUSRMSG

Envoyer un message utilisateur

En bref

La commande SNDUSRMSG (Envoyer un message utilisateur) permet au programme d'envoyer un message à une file d'attente et, le cas échéant, de recevoir la réponse correspondante.

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

Syntaxe minimale

SNDUSRMSG

Paramètres

  • MSG Texte du message, ou
  • MSGID Identificateur de message
  • MSGF Fichier de messages fichier message
  • MSGDTA Valeurs zone donnée de msg
  • VALUES Valeurs correctes de réponse
  • DFT Réponse par défaut
  • MSGTYPE Type de message
  • TOMSGQ A la file d'attente de message
  • TOUSR Au profil utilisateur
  • MSGRPY Variable pour réponse message
  • TRNTBL Table de conversion
  • CCSID ID codé de jeu de caractères

Astuce : dans une session 5250, tapez SNDUSRMSG 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 : Non

La commande SNDUSRMSG (Envoyer un message utilisateur) permet au programme d'envoyer un message à une file d'attente et, le cas échéant, de recevoir la réponse correspondante. Il peut s'agir d'un message immédiat ou pré-défini. Le message est envoyé à l'utilisateur d'un clavier-écran (dans le cas d'un travail interactif) ou à une file d'attente de messages spécifique. Une variable CL destinée à recevoir la valeur de la réponse peut être indiquée pour les messages d'interrogation, et le programme utilisant cette commande attend la réponse.

Cette commande utilise une combinaison de paramètres disponibles dans les commandes SNDPGMMSG (Envoyer un message programme) et RCVMSG (Recevoir un message) pour permettre à un programme d'envoyer et de recevoir des messages en utilisant une seule commande. En outre, la commande SNDUSRMSG offre un contrôle de validité et une conversion en majuscules pour les réponses aux messages d'interrogation.

Restrictions :

  1. Cette commande n'est admise que dans les programmes CL.
  2. La commande SNDUSRMSG permet d'envoyer un message comprenant un maximum de 512 caractères de texte. Toutefois, si le message est envoyé à une file d'attente de messages externe (*EXT) dans un travail interactif, seuls 76 caractères s'affichent sur l'écran Messages du programme. Si le message est envoyé à la file d'attente de messages d'un utilisateur, d'un poste de travail ou de l'opérateur système, la commande DSPMSG (Afficher les messages) permet d'afficher les 512 caractères.

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
MSGF fichier message Nom d'objet qualifié Facultatif
Qualificatif 1: fichier message Nom
Qualificatif 2: Biblio Nom, *LIBL, *CURLIB
MSGDTA Valeurs zone donnée de msg Valeur caractère Facultatif
VALUES Valeurs correctes de réponse Values (jusqu'à 20 répétitions): Valeur caractère, *NONE Facultatif
DFT Réponse par défaut Valeur caractère, *MSGDFT Facultatif
MSGTYPE Type de message *INQ, *INFO Facultatif
TOMSGQ A la file d'attente de message Valeurs uniques: *, *EXT, *SYSOPR
Autres valeurs: Nom d'objet qualifié
Facultatif
Qualificatif 1: A la file d'attente de message Nom
Qualificatif 2: Biblio Nom, *LIBL, *CURLIB
TOUSR Au profil utilisateur Nom, *SYSOPR, *REQUESTER Facultatif
MSGRPY Variable pour réponse message Valeur caractère Facultatif
TRNTBL Table de conversion Valeurs uniques: *NONE
Autres valeurs: Nom d'objet qualifié
Facultatif
Qualificatif 1: Table de conversion Nom, QSYSTRNTBL
Qualificatif 2: Biblio Nom, *LIBL, *CURLIB
CCSID ID codé de jeu de caractères 1-65535, *HEX, *JOB Facultatif

Texte du message, ou (MSG)

Indique le texte d'un message immédiat envoyé par le programme. Vous pouvez indiquer jusqu'à 512 caractères. Ce texte doit figurer entre apostrophes s'il comporte des blancs ou des caractères spéciaux. Si ce paramètre est précisé, aucune valeur ne doit être indiquée à au paramètre Identificateur de message (MSGID), fichier message (MSGF) ou Valeurs zone donnée de msg (MSGDTA).

'texte'
Indiquez le texte du message immédiat que vous souhaitez envoyer.

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)

Indique l'identificateur d'un message prédéfini, envoyé par le programme à une file d'attente de messages. Si ce paramètre est précisé, une valeur doit également être indiquée au paramètre fichier message (MSGF), et aucune valeur ne doit être précisée pour le paramètre Texte du message, ou (MSG).

identificateur
Indiquez l'identificateur du message que vous souhaitez envoyer.

fichier message (MSGF)

Indique le fichier message contenant le message prédéfini qui doit être envoyé. Ce paramètre est correct uniquement si une valeur est indiquée 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
Indiquez 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 contenant les données d'un message prédéfini. Ces données représentent la ou les valeurs de substitution remplaçant les variables indiquées lors de la création de la description de message. Le paramètre MSGDTA n'est valide qui si un message prédéfini est envoyé. Pour plus de détails, reportez-vous à la description du paramètre MSGDTA pour la commande SNDPGMMSG (Envoyer un message programme).

*NONE
Il n'existe pas de valeurs de substitution pour ce message prédéfini.
données-message
Indiquez la chaîne de caractères représentant les valeurs de substitution du message prédéfini qui doit être envoyé ou entrez le nom de la variable contenant cette chaîne de caractères.

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 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. 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 la zone de type *CCHAR, reportez-vous à la description de la commande ADDMSGD (Ajouter description de message).

Valeurs correctes de réponse (VALUES)

Représente la liste des valeurs de réponse définies pour un message d'interrogation envoyé par cette commande. Cette liste ne doit pas comporter plus de 20 valeurs. Si la réponse ne concorde pas avec une des valeurs de cette liste, un message d'erreur est envoyé à l'émetteur de la réponse et le message d'interrogation est envoyé de nouveau. Cette valeur est admise uniquement lorsqu'une valeur est indiquée pour le paramètre MSGRPY.

Si demandée dans le paramètre TRNTBL, la conversion de la réponse s'effectue avant vérification d'une correspondance entre la réponse et la valeur indiquée. Si TRNTBL (*LIBL/QSYSTRNTBL) est indiqué pour convertir les valeurs de réponse de minuscules en majuscules et si des caractères minuscules apparaissent encore dans une valeur spécifiée, il n'y a pas de correspondance.

Des variables peuvent être utilisées dans la liste de réponses. Ce paramètre est admis uniquement si MSGTYPE(*INQ) est indiqué.

*NONE
Aucune réponse n'a été définie pour ce message. Toutes les réponses sont correctes.
valeurs-admissibles
Indiquez jusqu'à 20 valeurs qui seront comparées à celles des réponses aux messages d'interrogation envoyés par cette commande. La longueur maximale de chacune de ces valeurs est de 32 caractères. Si vous indiquez cette valeur ici, vous devez également renseigner le paramètre Variable pour réponse message (MSGRPY).

Réponse par défaut (DFT)

Indique la valeur par défaut utilisée si le message d'interrogation (envoyé par cette commande) est adressé à une file d'attente de messages en mode réponse par défaut ou s'il doit recevoir une réponse par défaut, quelle qu'en soit la raison.

  • Il n'est pas nécessaire que cette valeur de paramètre corresponde à un poste de la liste de réponses valides spécifiée au paramètre VALUES.
  • Cette valeur de réponse par défaut n'est pas convertie en majuscules et sa validité n'est pas contrôlée.
*MSGDFT
La valeur par défaut définie dans la description de l'ID message (MSGID) est utilisée. Si aucun ID message n'est indiqué, la valeur par défaut est *N.
'valeur-réponse-par-défaut'
Entrez le texte (entre apostrophes) constituant la réponse par défaut. Cette valeur ne peut être utilisée que si le paramètre Variable pour réponse message (MSGRPY) est indiqué. Si un message prédéfini est envoyé, cette valeur de réponse par défaut se substitue à toute réponse par défaut spécifiée dans la description de message.

Type de message (MSGTYPE)

Indique le type de message à envoyer. Seuls des messages d'interrogation et d'information peuvent être spécifiés.

*INQ
Un message d'interrogation est envoyé, et la file d'attente de messages recevant celui-ci doit y répondre.
*INFO
Le message envoyé est un message d'information.

A la file d'attente de message (TOMSGQ)

Indique le nom de la file d'attente de messages à laquelle le message doit être envoyé. Si vous avez indiqué une valeur au paramètre Au profil utilisateur (TOUSR), vous ne pouvez pas utiliser ce paramètre.

Valeurs uniques

*
Dans le cas d'un travail interactif, le message doit être envoyé à la file d'attente de messages externe (*EXT). Dans le cas d'un travail par lots, le message doit être envoyé à l'opérateur système (file d'attente de messages QSYSOPR dans la bibliothèque QSYS).
*SYSOPR
Le message est envoyé à l'opérateur système (file d'attente de messages QSYSOPR dans la bibliothèque QSYS).
*EXT
Le message est envoyé à la file d'attente de messages externe du travail. En traitement par lot, les messages d'interrogation reçoivent toujours la réponse par défaut. Les messages envoyés dans cette file d'attente peuvent comporter jusqu'à 512 caractères, mais 76 caractères seulement apparaissent sur l'écran d'affichage des messages du programme.

Qualificatif 1 : A la file d'attente de message

nom
Indiquez le nom de la file d'attente de messages qui doit recevoir le message en cours d'envoi.

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. Si vous avez indiqué une valeur au paramètre A la file d'attente de message (TOMSGQ), vous ne pouvez pas utiliser ce paramètre.

*SYSOPR
Le message doit être envoyé à la file d'attente de messages du profil utilisateur de l'opérateur système, soit QSYS/QSYSOPR.
*REQUESTER
Le message doit être envoyé à la file d'attente de messages associée au profil utilisateur dans le cas d'un travail interactif, et à la file d'attente de messages associée à l'opérateur système (QSYS/QSYSOPR), dans le cas d'un travail par lots.
nom
Entrez le nom du profil de l'utilisateur auquel doit être envoyé le message.

Variable pour réponse message (MSGRPY)

Indique la variable CL alphanumérique (132 caractères au maximum), contenant la réponse envoyée à un message d'interrogation. Ce paramètre est admis uniquement si *INQ est indiqué au paramètreType de message (MSGTYPE). Si la réponse est plus longue que la variable, elle est tronquée ; si elle est plus courte, elle est complétée à droite pas des blancs. Cette commande attend une réponse au message d'interrogation même si aucune valeur n'est codée pour ce paramètre lorsque MSGTYPE(*INQ) est indiqué. Si aucune valeur n'est codée pour ce paramètre lorsque MSGTYPE(*INQ) est indiqué, la commande attend que l'opérateur réponde au message d'interrogation.

Table de conversion (TRNTBL)

Indique le nom de la table de conversion utilisée si la réponse doit être convertie.

Qualificatif 1 : Table de conversion

QSYSTRNTBL
La table de conversion utilisée, appelée QSYSTRNTBL, permet de convertir la valeur de la réponse.

La table de conversion QSYSTRNTBL (fournie par IBM) traduit, uniquement pour la langue anglaise, tous les caractères minuscules de X'81' à X'A9' en caractères majuscules.

La commande CRTTBL (Créer une table) vous permet d'utiliser une table de conversion différente en attribuant au paramètre le nom de cette table.

*NONE
La réponse ne doit pas être convertie.
nom
Indiquez le nom de la table de conversion utilisée pour convertir la réponse envoyée au message.

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 table de conversion 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 la bibliothèque contenant la table de conversion.

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

Désigne l'ID codé de jeu de caractères (CCSID) du texte de message indiqué aux paramètres MSG (message) ou MSGDTA (données de message). Si un ID message est indiqué, le système considère que le texte indiqué au paramètre MSGDTA (données de 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 censé 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 le texte indiqué aux paramètres MSGDTA ou MSG a pour CCSID celui du travail exécutant cette commande.
*HEX
Le texte indiqué aux paramètres MSGDTA (données de message) ou MSG (message) n'est pas converti. Le CCSID 65535 est utilisé.
ID-codé-jeu-caractères
Indiquez un CCSID admis dans lequel le texte indiqué pour le paramètre MSG (message) ou MSGDTA (données de message) doit se trouver. 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 : Message nécessitant une réponse spécifique

SNDUSRMSG   MSG('Données vérifiées. Màj fichiers maîtres (O,N) ?')
            TOMSGQ(*)  VALUES(Y N)  DFT(N)  MSGRPY(&REPLY)

Cette commande envoie un message d'interrogation à l'opérateur du clavier-écran (si elle est utilisée dans un travail interactif) ou à l'opérateur système (si elle est utilisée dans un travail par lots). Les réponses admises sont Y et N, et toute autre réponse est rejetée. La réponse est renvoyée dans la variable &REPLY. La table de conversion par défaut, QSYSTRNTBL, permet de convertir la réponse en caractères majuscules.

Exemple 2 : Message nécessitant une réponse quelconque

SNDUSRMSG   MSG('Tapez une réponse pour continuer.')
            TOMSGQ(WS01)

Cette commande envoie un message d'interrogation à une file d'attente de messages spécifique. Toute réponse est admise. L'objectif de cet exemple est uniquement d'attendre. Par conséquent, aucune variable CL n'est prévue pour recevoir la réponse.

Exemple 3 : Envoi d'un message d'information

SNDUSRMSG   MSGID(USR0150)  TOUSR(FRED)  MSGF(QGPL/USRMSGF)
            MSGDTA(&ACCTNO)  MSGTYPE(*INFO)

Cette commande envoie un message prédéfini en tant que message d'information à la file d'attente d'informations indiquée dans le profil utilisateur correspondant à l'utilisateur spécifié (FRED). Les données de message fournies sont incluses dans le message.

Messages d'erreur

Messages *ESCAPE

CPF247E
Le CCSID &1 est incorrect.
CPF2559
Erreur dans la commande SNDUSRMSG.

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