<<< DISK$DATA:[NOTES$LIBRARY]VAX_VMS.NOTE;1 >>> -< SIG VAX/VMS >- ================================================================================ Note 1041.0 Permanent messages files 21 replies DECUSF::PANNETIER_AM "Alain PANNETIER - TIBET" 8 lines 20-NOV-1990 11:02 -------------------------------------------------------------------------------- Je cherche un moyen de m'eviter la commande "set message" dans le sylogin. C'est à dire que je cherche à rendre permanent le point d'entrée sur mon fichier de messages installé. Je n'ai pas l'impression que cela soit documenté/possible. Quelqu'un a-t-il deja resolu ce problème ? ================================================================================ Note 1041.1 Permanent messages files 1 of 21 DECUSF::THONON_D "Daniel Thonon SEMA-GROUP Meylan" 2 lines 20-NOV-1990 11:55 -< Une piste >- -------------------------------------------------------------------------------- Avez-vous essayé de le mettre dans le systartup_v5? J'avais essayé set message/notext et c'étatit conservé pour tous les utilisateurs. ================================================================================ Note 1041.2 Permanent messages files 2 of 21 DECUSF::PANNETIER_AM "Alain PANNETIER - TIBET" 4 lines 20-NOV-1990 12:48 -< dozenotteoueurk >- -------------------------------------------------------------------------------- J'ai essayé ( dans sylogicals ) mais si le set message/notext marche bien, le set message sys$message:xxxmsg.exe ne concerne que la procedure couramment executee et pas l'ensemble des process a venir. Merci quand meme. ================================================================================ Note 1041.3 Permanent messages files 3 of 21 DECUSF::FOUCHET_F "François FOUCHET - FMA" 20 lines 20-NOV-1990 14:19 -< On peut, si on a acces aux sources >- -------------------------------------------------------------------------------- Si vous avez acces aux sources du fichier de messages, vous pouvez toujours faire la manip suivante : $ MESSAGE message_file $ LINK/SHARE=message_file message_file $ MESSAGE/OBJ=message_file_PTR/NOTEXT/SYMBOL/FILE=message_file Il suffit ensuite de linker les executables avec message_file_PTR pour que ca fonctionne sans $ SET MESSAGE prealable. A noter toutes fois, qu'il faut : - Mettre message_file.exe dans SYS$MESSAGES OU - Definir un logical message_file pointant le .EXE (ie $ DEFINE/EXEC message_file DISK:[DIR]message_file.EXE) Le detail de cela est dans la doc VMS, partie $ MESSAGE. Hope this help ! ================================================================================ Note 1041.4 Permanent messages files 4 of 21 DECUSF::WERZ_P "Pascal WERZ, MagneTech, Orsay." 2 lines 20-NOV-1990 14:42 -------------------------------------------------------------------------------- Et si vous n'avez pas les sources des .MSG, il y a quelque part dans VMS: un utilitaire pour les recréer (UNMESSAGE)... ================================================================================ Note 1041.5 Permanent messages files 5 of 21 DECUSF::FOUCHET_F "François FOUCHET - FMA" 2 lines 20-NOV-1990 15:20 -< Je dirais meme plus ... >- -------------------------------------------------------------------------------- Toujours plus fort : meme si vous n'avez que l'executable, on peut faire quelque chose pour vous. Voir DISM32. ================================================================================ Note 1041.6 Permanent messages files 6 of 21 DECUSF::OURGHANLIA_B 8 lines 20-NOV-1990 15:45 -< Infos... >- -------------------------------------------------------------------------------- Si vous avez acces aux sources, une des facons d'effectuer l'equivalent d'un SET MESSAGE a l'interieur d'un programme est d'appeler LIB$FIND_IMAGE_SYMBOL sur la "message section image" qui vous interesse. Son nom n'a pas d'importance. Si vous n'avez pas acces aux sources, la seule facon (non supportee) d'ajouter des messages a SYSMSG.EXE est de partir des sources de SYSMSG (vous pouvez utiliser eventuellement UNMESSAGE). Attention au fait que si SYSMSG est mal reconstruit : VOUS NE POURREZ PLUS REBOOTER VOTRE SYSTEME !!! ================================================================================ Note 1041.7 Permanent messages files 7 of 21 DECUSF::PANNETIER_AM "Alain PANNETIER - TIBET" 78 lines 20-NOV-1990 17:48 -< Donnetlettemibimiseundairstoud >- -------------------------------------------------------------------------------- Je dois avoir loupé un episode ! Je n'ai pas de problème de source, il s'agit d'un fichier de message que j'ai erit moi meme. Je détaille un peu ce que fais. 1 / Fichier de messages : .TITLE XXX_messages .FACILITY XXX, 1539 /PREFIX=XXX_ .SEVERITY INFORMATIONAL EOFINP .END 2 / programme principal .TITLE XXX_MAIN .EXTERNAL XXX_EOFINP ... MOVL R0, #XXX_EOFINP $EXIT_S code=R0 .END XXX_MAIN 3 / Construction comme indiqué dans le "VMS utility message guide" et comme .3 le préconise. 4 / Deux cas d'execution : $ copy xxxmsg.exe sys$common:[sysmsg] $ install add sys$message:xxxmsg /open/header_resident/shared 4-a / Avec set message : $ Set message $ run xxx_main $ Write sys$output F$message ( '$status' ) %XXX-I-EOFINP, end of file detected while processing input 4-b / Sans set message $ run xxx_main $ Write sys$output F$message ( '$status' ) %NONAME-I-NOMSG, Message number 0E03800B 4-c / sans set message avec nom logique $ define/executive_mode/system xxxmsg sys$message:xxxmsg.exe $ run xxx_main $ Write sys$output F$message ( '$status' ) %NONAME-I-NOMSG, Message number 0E03800B 5 / Toujours plus fort : $ Unmessage sys$mesage:cmsmsg.exe .facility CMS,156,/SYSTEM .severity Warning _009C8008 ... $ Write sys$output F$message ( 0x09C8008 ) %NONAME-I-NOMSG, Message number 009C8008 $ Set mesage sys$message:cmsmsg $ Write sys$output F$message ( 0x09C8008 ) %CMS-W-ABSTIM !AS time ... $ $ Unmessage SYS$message:sysmsg.exe .FACILITY SYSTEM,0/SHARED/SYSTEM .SEVERITY Warning _00000000 _00000006 - -------------------------------------------------------------------------------- Bon, ne confondons pas tout ! > $ Unmessage SYS$message:sysmsg.exe > .FACILITY SYSTEM,0/SHARED/SYSTEM > .SEVERITY Warning > _00000000 > _00000006 .... > $ Write sys$putput F$message ( 8 ) > %SYSTEM-W-ACCVIO, access violation... Ca c'est normal, on est mappe en permanence sur SYSMSG. > $ Unmessage sys$mesage:cmsmsg.exe > .facility CMS,156,/SYSTEM > .severity Warning > _009C8008 > ... > $ Write sys$output F$message ( 0x09C8008 ) > %NONAME-I-NOMSG, Message number 009C8008 > $ Set mesage sys$message:cmsmsg > $ Write sys$output F$message ( 0x09C8008 ) > %CMS-W-ABSTIM !AS time ... Ca c'est aussi normal, on n'est pas mappe par defaut sur CMSMSG. C'est pas parce que c'est marque /SYSTEM que c'est tout le temps mappe. L'option /SYSTEM indique seulement qu'on va mettre un bit a zero dans le numero de l'erreur. Ce meme bit est a un pour indiquer qu'on a a faire a des messages utilisateurs (non DEC). Pour tout le reste, c'est aussi normal. En effet, la technique indiquee en .3 fonctionne bien LE TEMPS DE L'ACTIVATION DE L'IMAGE. Par contre, le fichier est demappe par l'image rundown. Si jamais ca persiste sous DCL, envoyez un SPR, c'est un BUG ! Par contre, un $EXIT_S #.... doit marcher. Vous devez voir le message d'erreur s'afficher si: 1) vous ne le disablez pas volontairement (en faisant un OR avec %X1000000), 2) le status final n'est pas impair. En fait, ce qu'il faut retenir, c'est qu'on est mappe en permanence sur SYSMSG, et optionnellement sur le fichier precise dans un SET MESSAGE xxx. C'est vrai pour DCL comme pour une image activee. Par contre, les techniques de link telles que decrites en .3 ne sont valables que le temps de l'activation de l'image. Au passage, si vous faites comme marque en .0 un "MOVL R0,#...", je pense que vous aurez un probleme. Essayez plutot "MOVL #...,R0". ================================================================================ Note 1041.9 Permanent messages files 9 of 21 DECUSF::PANNETIER_AM "Alain PANNETIER - TIBET" 11 lines 20-NOV-1990 19:21 -< Ca devient plus clair >- -------------------------------------------------------------------------------- Merci pour ces éclaircissements... Il y a cependant en standard, d'autres facilités que SYSTEM qui sont connues sous DCL. Quel est donc alors le critère de sélection ? Pour éviter de faire "SET MESSAGE" dans le sylogin, il n'y a que cette solution, d'intégrer ma facility dans celles qui sont connues à partir du boot. Or, ayant épluche VMSINSTAL et les SYS$STARTUP:VMS*.COM, je ne trouve rien de vraiement abordable. Quelqu'un s'est-il déjà posé le PB ? ================================================================================ Note 1041.10 Permanent messages files 10 of 21 DECUSF::OURGHANLIA_B 27 lines 20-NOV-1990 19:59 -< Pas si complique... >- -------------------------------------------------------------------------------- Vous n'avez pas besoin de faire si complique... .TITLE XXX_messages .FACILITY XXX, 1539 /PREFIX=XXX_ .SEVERITY INFORMATIONAL EOFINP .END Puis ... .TITLE XXX_MAIN .LINK /[]XXX_MSG ... MOVL #XXX_EOFINP,R0 $EXIT_S code=R0 .END XXX_MAIN Enfin... $ Macro XXX_MAIN $ Message XXX_MSG $ Link XXX_MAIN A moins que vous ne teniez a tout prix a un fichier de message separe, cela suffit.... ================================================================================ Note 1041.11 Permanent messages files 11 of 21 DECUSF::PANNETIER_AM "Alain PANNETIER - TIBET" 13 lines 21-NOV-1990 09:35 -< You may think I'am stubborn, but... >- -------------------------------------------------------------------------------- En fait, avant de proposer cette note dans cette conference, je connaissais les deux manières que .3 et .10 ont développées. Je me satisferais volontier de la methode à base d'objet simple si je ne désirais pas proposer également, pour les gallicistes forcenés, un fichier de message en français ! J'avais installé mon fichier de message dans SYS$MESSAGE, et je cherchais l'équivalent pour les messages du très fameux et très génial "Set command/Table". Mais j'ai bien l'impresssion que cela ne fais pas partie des choses faciles. ================================================================================ Note 1041.12 Permanent messages files 12 of 21 DECUSF::OURGHANLIA_B 48 lines 21-NOV-1990 11:53 -< Je comprends enfin... >- -------------------------------------------------------------------------------- Je comprends enfin ce que voulez faire... C'est faisable tres simplement... Creez les fichiers ENGLISH.MSG et FRENCH.MSG comme suit : .TITLE XXX_messages .FACILITY XXX, 1539 /PREFIX=XXX_ .SEVERITY INFORMATIONAL EOFINP .END .TITLE XXX_messages .FACILITY XXX, 1539 /PREFIX=XXX_ .SEVERITY INFORMATIONAL EOFINP .END Puis ... .TITLE XXX_MAIN ... MOVL #XXX_EOFINP,R0 $EXIT_S code=R0 .END XXX_MAIN Enfin... $ Message/Nosymbols ENGLISH.MSG $ Message/Nosymbols FRENCH.MSG $ Link/Share=ENGLISH.EXE ENGLISH.OBJ $ Link/Share=FRENCH.EXE FRENCH.OBJ $ Message/File=MESSAGES/OBJECT=POINTER.OBJ ENGLISH.MSG $ Macro XXX_MAIN $ Link XXX_MAIN,POINTER $ Copy English.EXE SYS$MESSAGE: $ Copy French.EXE SYS$MESSAGE: $ Define MESSAGES SYS$MESSAGES:ENGLISH.EXE $ Run XXX_MAIN .... end of file dectected while processing input $ Define MESSAGES SYS$MESSAGES:FRENCH.EXE $ Run XXX_MAIN .... fin anormale de fichier détectée pendant le traitement Et voila !!! Remarquez que c'est le nom logique MESSAGES precise dans le MESSAGE/FILE=MESSAGES qui est utilise (cela peut etre un nom de fichier complet mais AUSSI un nom logique...) ================================================================================ Note 1041.13 Permanent messages files 13 of 21 DECUSF::FOUCHET_F "François FOUCHET - FMA" 30 lines 21-NOV-1990 12:00 -< Ai-je bien tout compris ? >- -------------------------------------------------------------------------------- Si j'ai tout compris, ce que vous cherchez a faire, c'est d'avoir 2 versions de votre fichier de message. L'une en anglais, l'autre en francais. Si c'est le cas, vous pouvez utiliser la methode decrite en .3, en repetant la phase de LINK/SHARE 2 fois, la premiere avec les messages en anglais, la seconde avec ceux en francais (ou l'inverse, ce qui revient au meme). La seule precaution a prendre, c'est de conserver les memes numeros d'erreur. Le fichier de pointeurs peut etre pris de facon indifferente sur l'une ou l'autre des versions de fichier de message. Il suffit de definir un logical AVANT de lancer l'image pour obtenir les messages en francais ou en anglais. CQFD ! Je vous mets un exemple ci dessous. $ MESSAGE french_messages $ MESSAGE english_messages $ LINK/SHARE french_messages $ LINK/SHARE english_messages $ MESSAGE/NOTEXT/SYMBOL/FILE=generic_messages/obj=generic_messages - english_messages $ LINK user_code,generic_messages $ DEFINE generic_messages DISK:[DEV]french_messages $ RUN user_code Bonjour ! $ DEFINE generic_messages DISK:[DEV]english_messages $ RUN user_code Hello ! ================================================================================ Note 1041.14 Permanent messages files 14 of 21 DECUSF::FOUCHET_F "François FOUCHET - FMA" 1 line 21-NOV-1990 12:03 -< %SYSTEM-F-DUPLNAM, dupplicate reply to the same question >- -------------------------------------------------------------------------------- J'ai la legere impression qu'on a repondu ensemble a la meme note ! ================================================================================ Note 1041.15 Permanent messages files 15 of 21 DECUSF::PANNETIER_AM "Alain PANNETIER - TIBET" 17 lines 21-NOV-1990 12:29 -------------------------------------------------------------------------------- Oui !! Tout ça je sais faire !! mais le dernier mystère, que je n'ai peut­être pas bien expliqué en 1041.0, est que je voudrais AUSSI, SANS FAIRE SET MESSAGE DANS LE SYLOGIN, pour tous les utilisateurs, avoir la possibilité de faire Write SYS$OUTPUT F$MESSAGE ( %X ). En fait , ce n'est pas un besoin impératif, c'est surtout par curiosité. En 1041.11, j'ai bien dit set command*/TABLE*. Exprimé d'une autre manière : Comment faire pour que, dès le boot, la facilité XXX soit connue sous DCL ? Voilà. J'espère que j'ai été plus clair. Je ne voudrais pas paraître insistant,mais je pense que, un jour ou l'autre, tout le monde peut se poser la question. Quoi qu'il en soit, merci à tous les intervenants. ================================================================================ Note 1041.16 Permanent messages files 16 of 21 DECUSF::FOUCHET_F "François FOUCHET - FMA" 37 lines 21-NOV-1990 14:43 -< On va finir par se comprendre ! >- -------------------------------------------------------------------------------- > peut être pas bien expliqué en 1041.0, est que je voudrais AUSSI, SANS > FAIRE SET MESSAGE DANS LE SYLOGIN, pour tous les utilisateurs, avoir la > possibilité de faire Write SYS$OUTPUT F$MESSAGE ( %X ). Desole, pour DCL, en standard, je ne sais pas faire. Peut etre que Bernard a un brico ? Ce que je peux vous proposer, c'est un brico qui permet de sortir la traduction d'un message d'erreur, mais pas de facon aussi simple. L'idee est de balayer SYS$MESSAGES, de faire un SET MESSAGE sur chaque fichier, puis un F$MESSAGE(). On passe au fichier suivant si le resultat est "%NONAME-F-NOMSG, Message number ...". C'est pas tres rapide, mais ca fonctionne. > En 1041.11, j'ai bien dit set command*/TABLE*. > > Exprimé d'une autre manière : Comment faire pour que, dès le boot, > la facilité XXX soit connue sous DCL ? La, je pense que vous faites une confusion. La commande SET COMMAND avec ou sans /TABLE permet uniquement d'ajouter (ou d'enlever) une commande DCL d'une table. Par exemple, vous pouvez definir une commande TEST de la facon suivante : $ SET COMMAND SYS$INPUT: DEFINE COMMAND TEST IMAGE DISK:[DEV]TEST ^Z Apres cette manip, vous avez cree une association entre TEST et un .EXE localise dans DISK:[DEV]. Ca n'a rien a voir avec un fichier de message. Ca permet simplement a DCL de savoir quel image activer quand vous frappez TEST. Cet exemple est volontairement simplifie a outrance. En general, on ajoute des elements decrivant les syntaxes legales et la liste des options utilisables. Dans ce cas, DCl fait en plus une verification sur ces elements avant d'activer votre image (laquelle peut alors, au travers d'appel aux routines CLI$..., savoir ce que l'utilisateur a frappe). ================================================================================ Note 1041.17 Permanent messages files 17 of 21 DECUSF::PANNETIER_AM "Alain PANNETIER - TIBET" 18 lines 21-NOV-1990 16:02 -< set command / set message >- -------------------------------------------------------------------------------- -> .16 Pour l'analogie SET COMMAND / SET MESSAGE SET COMMAND /OBJECT crée un objet exportant un symbol spécifié derrière le mot clé MODULE et visible du link. SET COMMAND recopie une entrée détaillée dans votre .CLD à l'intérieur de la copie volatile en P0 (P1 ?) de la DCLTABLE. SET COMMAND /TABLE recopie cette entrée dans la DCLtable spécifiée en argument de TABLE et par défaut dans SYS$SHARE:DCLTABLES.EXE. SET MESSAGE /OBJECT Crée un message exportant des symbols globaux pour tout link. SET MESSAGE s'adresse également à une table que je ne connais pas et restreinte au process. SET MESSAGE /TABLE n'existe pas et fait l'objet de ma question. ================================================================================ Note 1041.18 Permanent messages files 18 of 21 DECUSF::OURGHANLIA_B 2 lines 21-NOV-1990 17:00 -< No Way >- -------------------------------------------------------------------------------- Desole, il n'y a pas de moyen pour faire ce que vous voulez ( a part modifier SYSMSG...) ================================================================================ Note 1041.19 Permanent messages files 19 of 21 DECUSF::PANNETIER_AM "Alain PANNETIER - TIBET" 1 line 21-NOV-1990 17:53 -< %MSG-I-ACKMANTKS, acknowledge and many thanks >- -------------------------------------------------------------------------------- Tant pis, merci quand même à tous les GOs de cette conférence ! ================================================================================ Note 1041.20 Permanent messages files 20 of 21 DECUSF::FOUCHET_F "François FOUCHET - FMA" 2 lines 21-NOV-1990 18:43 -< Voir VMS:SHOW_ERROR.COM >- -------------------------------------------------------------------------------- Je vais copier dans VMS: un fichier nomme SHOW_ERROR.COM qui fait ce que j'ai explique en .-2 ou -3. ================================================================================ Note 1041.21 Permanent messages files 21 of 21 DECUSF::BERENGUIER_A "Alain, ALCATEL BUSINESS SYSTE" 43 lines 22-NOV-1990 18:52 -< More request. >- -------------------------------------------------------------------------------- J'ai hésité à rentrer dans cette discussion. La question initiale m'était flou. Les réponses, données, apportent quand même beaucoup de précision, mais elles impliquent de ma part une autre série de questions, remarques. 1° : Seul DEC s'autorise le partage des messages entre plusieurs images. - Ne pouvons nous pas avoir un intervalle de "facility number", nous permettant cette -facilité- ? Sur nos sites, ayant eu à devellopper toute une chaine croisée, j'ai utilisé cette possibilité en ayant pleinement conscience de pouvoir tomber en conflit avec des "layered products DEC". Dés que l'on commande un nouveau produit, je controle la compatibilité. Mais, ( car il y a un mais ), je ne puis plus controler la totalité des produits, car notre chaine est exporté sur des sites ( appartenant à notre groupe ). Je ne controle donc plus les produits concomitents, car je ne peut connaitre ceux achetés sur ces sites distants. La connaissance d'un petit trou, dans les utilitaires DIGITAL, me serait agréable, même si ce trou n'est valable que pour "x" annèes. 2° : Il se trouve encore et toujours des commandes "SET" qui n'ont pas d'équivalents en commandes "SHOW". - Et pourtant cela résoudrait bien quelques problémes. En effet la string retourner par le lexical F$Environment, ne donne que le status du flag, on n'a aucun moyen de connaitre le fichier message positionner par un éventuel end_user. Exemple: si dans mon login j'effectue un "set message TOTO", à la fin de l'exécution de la procédure show_error distribuer dans cette discusion, je ne dispose plus de ce fichier. - De même, il serait agréable de connaitre le "Set command /Table" positionner par un utilisateur. - ...