LOG_MESSAGE
Pour OS/2 uniquement, le verbe LOG_MESSAGE enregistre un message dans le fichier journal des erreurs et affiche éventuellement le message sur l’écran des utilisateurs. Ce verbe est inclus à des fins de compatibilité avec les applications existantes.
La structure suivante décrit le bloc de contrôle de verbe (VCB) utilisé par le verbe LOG_MESSAGE.
Syntaxe
struct log_message {
unsigned short opcode;
unsigned char opext;
unsigned char reserv2;
unsigned short primary_rc;
unsigned long secondary_rc;
unsigned short msg_num;
unsigned char origntr_id[8];
unsigned char msg_file_name[3];
unsigned char msg_act;
unsigned short msg_ins_len;
unsigned char FAR * msg_ins_ptr;
};
Membres
opcode
Paramètre fourni. Le verbe identifiant le code d’opération, SV_LOG_MESSAGE.
opext
Un champ réservé.
reserv2
Champ réservé.
primary_rc
Paramètre retourné. Spécifie le code de retour principal défini par APPC à l’achèvement du verbe. Les codes de retour valides dépendent du verbe APPC émis. Pour connaître les codes d’erreur valides de ce verbe, consultez Codes de retour.
secondary_rc
Paramètre retourné. Spécifie le code de retour secondaire défini par APPC à l’achèvement du verbe. Les codes de retour valides dépendent du verbe APPC émis. Consultez la section Codes de retour pour connaître les codes d’erreur valides pour ce verbe.
msg_num
Paramètre fourni. Spécifie le numéro du message dans le fichier de messages spécifié par msg_file_name.
origntr_id
Paramètre fourni. Spécifie le nom du composant qui émet LOG_MESSAGE ou une chaîne de 8 octets, fournie par l’utilisateur.
msg_file_name
Paramètre fourni. Spécifie le nom du fichier contenant le message à enregistrer.
msg_act
Paramètre fourni. Spécifie l’action à exécuter lors du traitement du message :
Utilisez SV_INTRV pour consigner l’intervention avec un niveau de gravité de 12 et afficher le message sur l’écran des utilisateurs. L’utilisateur doit appuyer sur une touche pour supprimer le message de l’écran.
Utilisez SV_NO_INTRV pour consigner l’intervention avec un niveau de gravité de 12, mais ne pas afficher le message.
msg_ins_len
Paramètre fourni. Spécifie la longueur des données à insérer dans le message. Définissez ce paramètre sur zéro si aucune donnée ne doit être insérée.
msg_ins_ptr
Paramètre fourni. Spécifie l’adresse des données à insérer dans le message.
Utilisez ce paramètre uniquement si msg_ins_len est supérieur à zéro.
Codes de retour
SV_OK
Code de retour principal ; le verbe s’est exécuté correctement.
SV_PARAMETER_CHECK
Code de retour principal ; le verbe n’a pas été exécuté en raison d’une erreur de paramètre.
SV_INVALID_DATA_SEGMENT
Code de retour secondaire ; données à insérer dans le message au-delà de la limite du segment.
SV_INVALID_MESSAGE_ACTION
Code de retour secondaire ; le paramètre msg_act contient une valeur non valide.
SV_COMM_SUBSYSTEM_NOT_LOADED
Code de retour principal ; un composant requis n’a pas pu être chargé ou arrêté lors du traitement du verbe. Par conséquent, la communication n’a pas pu être établie. Contactez l’administrateur système pour résoudre le problème.
SV_INVALID_VERB
Code de retour principal ; le paramètre opcode ne correspondait pas au code d’opération d’un verbe. Aucun verbe n’est exécuté.
SV_INVALID_VERB_SEGMENT
Code de retour principal : le VCB s’étend au-delà de la fin du segment de données.
SV_UNEXPECTED_DOS_ERROR
Code de retour principal ; l’une des conditions suivantes s’est produite :
Le système Microsoft Windows a rencontré une erreur lors du traitement du verbe. Le code de retour du système d’exploitation a été retourné via le code de retour secondaire. Si le problème persiste, contactez l’administrateur système pour résoudre le problème.
Un fichier CSV a été émis à partir d’une boucle de message appelée par une autre application émettant un appel de fonction Windows SendMessage, plutôt que l’appel de fonction Windows PostMessage le plus courant. Le traitement du verbe ne peut pas avoir lieu.
Un fichier CSV a été émis lorsque SendMessage a appelé votre application. Vous pouvez déterminer si votre application a été appelée avec SendMessage à l’aide de l’appel de fonction API Windows InSendMessage.
Notes
La valeur de msg_file_name doit contenir trois caractères. Remplissez les champs avec des espaces si nécessaire. L’extension .MSG est automatiquement ajoutée.
La longueur totale de msg_ins_len, y compris les informations d’en-tête (40 octets), le texte du message et les données insérées, ne doit pas dépasser 256 octets. Si la longueur est supérieure à 256 octets, le système de communication tente de consigner uniquement les informations d’en-tête et le texte inséré, tandis que le texte du message est conservé.
Lorsque vous créez le fichier journal de messages, vous pouvez spécifier où les données supplémentaires doivent être insérées dans le message. Vous trouverez plus d’informations ci-dessous.
Les données de msg_ins_ptr se composent d’une série pouvant contenir neuf chaînes se terminant par un caractère null. (Étant donné que le système d’exploitation IBM OS/2 version 1.0 ne prend en charge que trois chaînes de données, vous souhaiterez peut-être limiter le texte inséré à trois chaînes pour garantir la compatibilité.)
Création d’un fichier de messages
Si vous souhaitez créer votre propre fichier de message, vous devez utiliser l’utilitaire MKMSGF.
Les trois premiers caractères du numéro de message doivent correspondre au nom à trois caractères du fichier journal de messages. Ces trois caractères sont également déclarés en haut du fichier.
Le système recherche le fichier de message comme suit :
Si vous utilisez votre propre fichier de messages, le système suppose que le fichier se trouve dans le même répertoire que le fichier exécutable de votre programme.
Si vous utilisez le fichier de messages par défaut, COM.MSG, le système localise automatiquement le fichier, à condition que le logiciel SnaBase pour Microsoft Host Integration Server soit chargé.
Si vous utilisez le fichier de messages par défaut sans charger le logiciel mentionné précédemment, le système s’attend à ce que DPATH indique le chemin d’accès au fichier de messages. Cette règle s’applique uniquement aux systèmes d'exploitation Windows version 3.x et OS/2.