X$ KILL062.AO%P KILL062.ABACKUP/NOASSIST/COMMENT=VAX/VMS SPKITBLD Procedure/INTER/LOG/VERIFY ROWS03$DKB0:[FORCEX.SRC]*.* ROWS03$DKB0:[FORCEX.KIT]KILL062.A/LABEL=(KILL)/SAVE/BLOCK=9000/GROUP=25VAX/VMS SPKITBLD Procedure SYSTEM dP|V5.5 _ROWS03::  _ROWS03$DKB0: V5.5-2 $*[FORCEX.SRC]FREEWARE_CD.TXT;1+,./ 4H0-0123KPWO56y7苺P|89GHJ. RELEASE FORM. ------------OpenVMS Freeware CD--------------------DEVELOPER RELEASE FORM:A As the owner/developer of this software, I release it to be H included on the OpenVMS Freeware CD-ROM. I expect no renumerances H or payments for the use of this software from Digital or Digital's  customers.H _______________________ B Joel Paul Willeretz*[FORCEX.SRC]FREEWARE_DEMO.TXT;1+,. / 4< |-0123KPWO56_N|7P|89GHJ8KILL, TOOLS, Forced to exit an image in process context.!; The Kill tool is an emergency stop command of an image&and eventualy a process which runs it.6 This command allows to kill an image running in a5context of an other process. Control is given tho the9Exception Handler of the target image. Thus, this command6allows to stop more neatly a process than the DCL Stopcommand.; When an image is forced to exit, Kill sends to OPCOM a message of this following kind :7 %%%%%%%%%%% OPCOM dd-mmm-yyyy hh:mm:ss.cc %%%%%%%%%%% Message from user TOM on DICK KILL Sneak's Information: Image...: DCL Process.: _m_{OO}_m_ PID.....: 20202179 was forced to exit.1 This option has been implemented in order to.distinguish savage stops from the use of Kill.2 Installation : Through VmsInstal. Name kit is.KILL062.A. This kit includes an IVP procedure.6 Version : Running from version 5.5-2 up to 6.2 of8OpenVMS VAX, and version 6.0 up to 6.2 of OpenVMS Alpha..Linkage of images is done during installation.< Interface : Kill is a verb inserted in DCLTables during;installation. The Kill command looks like Stop command with;a possiblity to give a final status to the killed image (eg: /Statut=%X184C4).7 Help : Provided in French and inserted in the Helplibrary during installation.9 Programmation : Written in Fortran. Main program and7its whole routines / functions are included in the samefile.& Version franaise.7 L'utilitaire KILL est une commande d'arrt, en cas9d'urgence, d'une image et optionellement le processus qui l'excute.8 Cette commande permet de tuer une image s'excutant<dans le contexte d'un autre processus. Le contrle est pass; l'"exception handler" de l'image cible. De ce fait, cette:commande permet d'arrter plus proprement un processus que la commande STOP/IDENTIFICATION.: Lorsqu'une image est stoppe, KILL poste dans l'OPCOMun message de type :7 %%%%%%%%%%% OPCOM dd-mmm-yyyy hh:mm:ss.cc %%%%%%%%%%%( Message from user TARTEMPION on LENODE KILL Sneak's Information: Image...: DCL Process.: _m_{OO}_m_ PID.....: 20202179 was forced to exit.; Cette option a t mise en place pour diffrencier les7arrts brutaux (Stop /Ident=) de l'utilisation de KILL.9 Installation : Elle se fait par VMSinstal. Le Kit se#nomme KILL062.A et possde une IVP.: Version : Cet utilitaire tourne de la version 5.5-2 :la 6.2 d'OpenVMS VAX, et de la version 6.0 6.2 d'OpenVMS3Alpha (un Link est effectu durant l'installation).8 Interface : Kill un verbe DCL (KILL) stock dans la;DCLTABLES lors de l'installation. La commande est identique: celle de la commande STOP, avec la possibilit de donner,un statut final l'image arrte (exemple :/Statut=%X184C4).; Aide : Il dispose d'un Help en franais stock dans labibliothque gnrale d'aide.; Programmation : Il est crit en Fortran. Afin d'viter<les dispersions, le programme principal et l'ensemble de ses6routines / fonctions se trouvent dans le mme fichier.!*[FORCEX.SRC]FREEWARE_README.TXT;1+,./ 48:-0123KPWO56 JK|7P|89GHJ8KILL, TOOLS, Forced to exit an image in process context.*[FORCEX.SRC]KILL.CLD;1+,./ 4LX-0123KPWO56\7 P|89GHJL! UnCopyright 1996 J.P.Willeretz Software Product. All rights Unreserved.! Ident "KILL V6.2"!! Dfinition du Verbe KILL.! Define Verb KILL Image Sys$System:Kill.exe! Parameter P1, Label=Prc_name, Prompt="_Nom du Process "' Value(Type=$Process)* Qualifier Identification, Label=Ident+ NonNegatable. Value(Required) Qualifier Stop, Label=Stop Negatable! Qualifier Debug, Label=Debug Negatable! Qualifier Statut, Label=Code# NonNegatable Default6 Value(Type=$Number, Default=42)# DisAllow Any2(Prc_name, Ident)* DisAllow (Not Prc_name and Not Ident)*[FORCEX.SRC]KILL.FOR;1+, .Q/ 4hQQ-0123KPWOR56Yy7RP|89GHJLC UnCopyright 1996 J.P.Willeretz Software Product. All rights Unreserved. Options / Extend_Source Program KILLERC +*C Auteur : Jol Paul WILLERETZ(C Date : 30 Dcembre 1991 &C Revision Date : 24 Juillet 1992(C : 29 Septembre 1992;C : 3 Janvier 1994 Ident ### 03/01/94;C : 27 Juin 1994 Ident ### 27/06/94C!C Hello Happy Tax Payers !!!CMC Ne t'offusque point de la premire ligne "UnCopyright 1996...", elleNC me sert de dlimiteur pour un outil de gestion de sources de mon cru...CC Description :CJC Ce programme permet de tuer une image ($FORCEX) s'excutant dans leJC contexte d'un autre processus. Il permet aussi en option de tuer leC processus ($DELPRC).LC Le contrle est pass l'"Exception Handler" de l'image cible. De ceIC fait, cette commande permet d'arrter plus proprement un processus@C que l@ $ KILL062.A [FORCEX.SRC]KILL.FOR;1hQa commande STOP/IDENTIFICATION ou STOP Process_Name.C:C Ce programme peut tre lancer de plusieurs faons :C@C 1) Run Dev:[Directory]Kill.exe => Prompt de l'image KILL>7C 2) Mcr []Kill/Ident=20200C6C/NoStop/Statut=%O241FC 3) Kill /Ident=20200C6C/NoStop/Statut=122 o Kill est un verbe.IC 4) Kill /Ident=20200C6C/NoStop/Statut=%XAD o Kill est un symbole.CMC La ligne de commandes passe l'image est analyse via CLI$DCL_PARSE.C<C Ce programme est compos de deux parties distinctes :C>C 1) L'analyse syntaxique de la ligne de commandes (CLI).DC 2) L'action mener envers l'image ($FORCEX) et/ou le processC ($DELPRC). C8C Routines et fonctions qui composent ce programme.CIC - Subroutine ACTION.....: Arrte l'image ou l'image et le process.:C avec en option un statut.EC - Subroutine EPLUCHE....: Obtient les diffrents paramtres etCC qualificatifs passs au programme.CHC - Function KILL.........: Appeler par CLI$DISPATCH lors d'un RUN.DC Fait appel EPLUCHE puis ACTION.HC - Function HELP.........: Appeler par CLI$DISPATCH lors d'un RUN.KC Informe sur les diffrentes possibilit du+C programme.HC - Function EXIT.........: Appeler par CLI$DISPATCH lors d'un RUN.3C Sort du programme.IC - Function GET_IMAGNAME.: Obtient le nom de l'image active par le2C processus source.@C - Function SNDOPR.......: Poster un message dans l'OPCOM.C"C Satellites de ce programme.C9C - Kill_Tables.Cld..: Module utilis lors d'un RUN.EC - Kill.Hlb.........: Module utilis par le HELP lors d'un RUN.AC - Kill.Cld.........: Module utilis lors d'un SET COMMAND.C'C Compile et link de ce programme.CC $ Fortran Kill.For(C $ Set Command Kill_Tables /Object(C $ Link /NoTrace Kill, Kill_TablesC $ Delete Kill.ObjC C Rvisions :KC ### 03/01/94, Problme : Lorsque le processus tait en tat "SUSPENDED", =C Kill rendait une erreur fatale et s'arrtait.OC Modif : Si le processus est en tat "SUSPENDED" et que l'optionOC STOP est spcifie, Kill informe de cet tat mais continu sinon*C il rend une erreur fatale.C IC ### 27/06/94, Lorsqu'une image est stoppe, KILL poste dans l'OPCOM un !C message de type :CHC %%%%%%%%%%% OPCOM dd-mmm-yyyy hh:mm:ss.cc %%%%%%%%%%%6C Message from user TARTEMPION on LENODEC)C KILL Sneak's Information:C Image...: DCL%C Process.: _m_{OO}_m_"C PID.....: 20202179#C was forced to exit.CNC Cette option a t mise en place pour diffrencier les arrts JC brutaux de l'utilisation de KILL. Elle n'est plus vraimentNC ncessaire en OpenVMS 6.2, puisque l'audit permet de tracer ce$C genre d'vnement...NCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC, Implicit None ! Because I'm a Pro.C Modules systme externes.C -------------------------& Include '($CLIDEF) /NoList'& Include '($RMSDEF) /NoList'& Include '($SSDEF) /NoList'& Include '($STSDEF) /NoList'L External Cli$Get_Value, Cli$Present, Cli$Dcl_Parse, Cli$DispatchL Integer*4 Cli$Get_Value, Cli$Present, Cli$Dcl_Parse, Cli$Dispatch" External Lib$Get_Input" Integer*4 Lib$Get_Input! External Str$Position! Integer*4 Str$Position. Integer*4 Kill_Tables, Get_Imagname. External Kill_Tables, Get_ImagnameZ Integer*4 St_Lib, St_Sys, St_Cli, St_Own ! Statut S.S., RTL et routines GEFCO.7C Dfinition des constantes et variables de la routine.7C ----------------------------------------------------- Logical*1 B_Cli Logical*1 B_ProcLog Character*8 C_Param, Parameter (C_Param = 'Prc_Name') Character*5 C_Ident) Parameter (C_Ident = 'IDENT') Character*4 C_Code' Parameter (C_Code = 'CODE') Character*4 C_Stop' Parameter (C_Stop = 'STOP')% Character*255 C_Line, C_Temp Integer*4 L_Line Character*15 C_Process Integer*4 L_ProcLen Integer*4 L_Pos ! +6 ! Arguments passs la fonction GET_IMAGNAME.1 Integer*4 L_Pid ! PID du processus1 Character*40 C_Image ! Image appelante.I Integer*4 L_Image ! Long du nom retourn de l'image active.G Character*20 C_Type ! Nom de l'extension de l'image active.O Integer*4 L_Type ! Long du nom de l'extension de l'image active.F Common /Z_GetImagName/ L_Pid, C_Image, L_Image, C_Type, L_Type ! -'C Variables communes concernant le CLI.'C -------------------------------------A Logical*1 B_CliParam, B_CliPid, B_CliCode, B_CliStopB Character*15 C_PrcString, C_PrcPid, C_PrcCode, C_PrcStop< Integer*4 L_PrcStrLen, L_PrcPidLen, L_PrcCodLen< Common /Shar_Var/ B_CliParam, B_CliPid, B_CliCode, H 1 B_CliStop, C_PrcString, C_PrcPid, C_PrcCode, K 2 C_PrcStop, L_PrcStrLen, L_PrcPidLen, L_PrcCodLen Character*20 C_Verb Integer*4 L_Verb* Common /Shar_Verb/ C_Verb, L_VerbCC Dbut de traitement.C -------------------- ! +. ! Rcuprer le nom de l'image active. !G St_Own = Get_ImagName (L_Pid, C_Image, L_Image, C_Type, L_Type)6 If (.not. St_Own) Call Sys$Exit (%Val(St_Own))C +CC Obtenir le type d'appel de l'image active ($VERB) et la ligne deHC commandes ($LINE). Ceci permettra des branchements selon l'appel fait.CKC 1) Si l'image est active par un RUN => utilisation de CLI$DISPATCH et du+C module objet du CLI nomm Kill_Tables.CJC 2) Si l'image est active par un MCR ou par un symbole => utilisation de?C CLI$DCL_PARSE et du module objet du CLI nomm Kill_Tables.C?C 3) Si l'image est active par le verbe KILL => utilisation deDC CLI$PRESENT et de CLI$GET_VALUE et du module du CLI nomm KILL.C -A St_Cli = Cli$Get_Value (%Descr('$Verb'), C_Verb, L_Verb) 6 If (.not. St_Cli) Call Sys$Exit (%Val(St_Cli))A St_Cli = Cli$Get_Value (%Descr('$Line'), C_Line, L_Line) 6 If (.not. St_Cli) Call Sys$Exit (%Val(St_Cli)): If (C_Image(1:L_Image) .ne. C_Verb(1:L_Verb)) Then B_Cli = .FALSE.  Else  B_Cli = .TRUE.  End If ! +$ ! Traitement des cas 1 et 2. If (.not. B_Cli) Then0 L_Pos = Str$Position (%Descr(C_Line),= 1 %Descr(C_Image(1:L_Image)),)( L_Line = (L_Line - L_Pos) + 1 C_Temp = ' '8 C_Temp(1:L_Line) = C_Line(L_Pos:L_Line+L_Pos) C_Line = C_Temp L_Pos = L_Image0 If (C_Verb(1:L_Line) .eq. 'RUN') Then C_Verb = C_Image L_Verb = L_Pos St_Cli = 0- Do While (St_Cli .ne. Rms$_Eof)! If (St_Cli) Then+ St_Cli = Cli$Dispatch()B If (.not. St_Cli) Call Sys$Exit (%Val(St_Cli))F Else If (Ibits (St_Cli,0,3) .ne. Sts$K_Warning) Then 0 Call Sys$Exit (%Val(St_Cli)) End If1 St_Cli = Cli$Dcl_Parse (%Val(0),; 1 %Ref(Kill_Tables),= 2 %Ref(Lib$Get_Input),= 3 %Ref(Lib$Get_Input),G 4 %Descr(C_Image(1:L_Pos)//'>')) End Do4 Else ! If (C_Verb(1:L_Line) .eq. 'RUN') B St_Cli = Cli$Dcl_Parse (%Descr(C_Line(1:L_Line)),; 1 %Ref(Kill_Tables),= 2 %Ref(Lib$Get_Input),= 3 %Ref(Lib$Get_Input),G 4 %Descr(C_Image(1:L_Pos)//'>'),M$ KILL062.A [FORCEX.SRC]KILL.FOR;1hQp{") Call EPLUCHE End If Else ! If (.not. B_Cli) ! +" ! Traitement du cas 3. Call EPLUCHE ! - End If ! - B_ProcLog = B_CliParam If (B_ProcLog) Then# C_Process = C_PrcString" L_ProcLen = L_PrcStrLen Else C_Process = C_PrcPid" L_ProcLen = L_PrcPidLen End If& If (St_Cli .eq. Rms$_Eof) ThenC St_Cli = '10000000'X + Ss$_Normal ! Message sans trace.' Call Sys$Exit (%Val(St_Cli)) End If6 Call ACTION (B_ProcLog, B_CliCode, B_CliStop, F 1 C_Process(1:L_ProcLen), C_PrcCode(1:L_PrcCodLen))CC This is the End...C ------------------ End  LC UnCopyright 1996 J.P.Willeretz Software Product. All rights Unreserved. Options / Extend_SourceD Subroutine ACTION (B_PrcLog, B_Code, B_Stop, C_Proc, C_Code), Implicit None ! Because I'm a Pro. C Arguments passs la routine. C ------------------------------. Logical*1 B_PrcLog, B_Code, B_Stop5 Character*(*) C_Proc ! Nom du process ou PID.A Character*(*) C_Code ! Code envoy l'image par $FORCEX.C Modules systme externes.C -------------------------$ Include '($SSDEF) /NoList'$ Include '($JPIDEF) /NoList'0 External Lib$Sys_GetMsg, Lib$Cvt_Dx_Dx0 Integer*4 Lib$Sys_GetMsg, Lib$Cvt_Dx_Dx External Ots$Cvt_Tz_L Integer*4 Ots$Cvt_Tz_L+ External Str$Copy_Dx, Str$Compare+ Integer*4 Str$Copy_Dx, Str$Compare6 External Sys$Forcex, Sys$GetJpiW, Sys$DelPrc6 Integer*4 Sys$Forcex, Sys$GetJpiW, Sys$DelPrc: External SndOpr ! Interpellation de l'oprateur 4 Integer*4 SndOpr ! sans attente de rponse.U Integer*4 St_Sys, St_Lib, St_Ots, St_Str, St_Own ! Codes retour S.S. et RTL C Structures. C ----------- ! + ! Item List 3. Structure /S_Itmlst/ Union Map# Integer*2 W_BufLen# Integer*2 W_ItmCod# Integer*4 L_BufAdr# Integer*4 L_RetAdr End Map Map$ Integer*4 L_EndList End Map End Union End Structure# Record /S_Itmlst/ R_Jpi(6) ! -"C Variables locales z'et diverses."C -------------------------------- Character*80 C_ImagOrg Integer*2 W_Cpt Integer*4 L_Cpt' Integer*4 L_IntPid, L_DiffImag Integer*4 L_CodLen! Integer*4 L_TimeOut /10/ Integer*4 L_IntCode! Real*4 F_LittleBit /1.0/K Character*80 C_ImagName ! Nom de l'image retourn par Sys$Getjpi.3 Integer*4 L_ImagName ! Long. de Image.1 Character*15 C_PrcNam ! Process name.7 Integer*4 L_PrcNam ! Long. Process name.; Integer*4 L_Pid ! Process identification.D Character*8 C_Pid ! Process identification en ASCII.A Character*255 C_PreMsg ! Message retourn par $GetMsg.5 Integer*4 L_DebStrg ! Dbut du message.O Integer*2 W_FaoRLen ! Len. in bytes of the fully formatted output< ! string returned by $FAO. ! +6 ! Variables ncessaires la routine SG210_SO.C Character*2 C_Sp01 ! Sparation du corps de message.L Character*512 C_CdTvS ! Corps du texte transmettre via SNDOPR. ! - ! +* ! Variables utilises par $GetMsg. ! : ! Mask L_Flags. Message components to be returned.+ ! Bit 0: 1 => Include text message.2 ! 0 => Do not include text message.1 ! Bit 1: 1 => Include message identifier.8 ! 0 => Do not include message identifier.1 ! Bit 2: 1 => Include severity indicator.8 ! 0 => Do not include severity indicator., ! Bit 3: 1 => Include facility name.3 ! 0 => Do not include facility name. Integer*4 L_Flags /7/C Integer*2 W_MsgLen ! Long. Message retourn par $GetMsg. Integer*2 W_OutLen Byte B_OutBuff(4) ! -'C Variables communes concernant le CLI.'C ------------------------------------- Character*20 C_Verb Integer*4 L_Verb* Common /Shar_Verb/ C_Verb, L_VerbCC Dbut du traitement.C -------------------- ! +8 ! On transforme la string CODE en numrique pur.9 If (.not. B_Code) C_Code = '42' ! SYSTEM-E-ABORT L_CodLen = Len(C_Code) L_IntCode = 0N St_Lib = Lib$Cvt_Dx_Dx (%Descr(C_Code(1:L_CodLen)), %Descr(L_IntCode))6 If (.not. St_Lib) Call Sys$Exit (%Val(St_Lib)) ! - ! +: ! Traitement de l'image du Process Name ou du PID.C ! Ce traitement est fait en trois phases (si option STOP) : !: ! 1) Obtenir le nom de l'image avant de l'arrter.L ! 2) Arrt de l'image (statut 42 %SYSTEM-E-ABORT, abort par dfaut).K ! 3) Arrt du process mais avant de l'arrter, obtenir l'image qui J ! tourne maintenant dans ce process (thoriquement, il n'y en aF ! pas), la comparer l'image obtenue en 1). Si elles sont N ! identiques, attendre un delta de 1 seconde (jusqu' dix fois) et M ! recommencer la comparaison. Ceci afin, entr'autre, de permettre < ! l'image de fermer l'ensemble de ses fichiers. !N ! NDLA : Il arrive parfois que l'image ne soit pas arrter bien queO ! $FORCEX retourne un %SYSTEM-S-NORMAL (Exemple : L'image du processJ ! cible lit un fichier squentiel index vrol). Il faut tre L ! conscient que $FORCEX dpose une AST en mode USER donc l'image L ! du process cible ne pourra acquitter cette AST que lorsqu'elle F ! aura fini de "drouler" du code en mode plus privilgi. ! N Type *, '%', C_Verb(1:L_Verb), '-I-TRYING, Trying to force exiting ', 2 1 'image of ', C_Proc, ' process...' ! +0 ! Traitement de l'image du Process Name. L_Cpt = 1/ R_Jpi(L_Cpt).W_BufLen = Len(C_ImagName)K R_Jpi(L_Cpt).W_ItmCod = Jpi$_ImagName ! Nom de l'image activ.0 R_Jpi(L_Cpt).L_BufAdr = %Loc(C_ImagName)0 R_Jpi(L_Cpt).L_RetAdr = %Loc(L_ImagName) L_Cpt = L_Cpt+1S- R_Jpi(L_Cpt).W_BufLen = Len(C_PrcNam) B R_Jpi(L_Cpt).W_ItmCod = Jpi$_PrcNam ! Process name . R_Jpi(L_Cpt).L_BufAdr = %Loc(C_PrcNam). R_Jpi(L_Cpt).L_RetAdr = %Loc(L_PrcNam) L_Cpt = L_Cpt+1v! R_Jpi(L_Cpt).W_BufLen = 4 L R_Jpi(L_Cpt).W_ItmCod = Jpi$_Pid ! Process identification + R_Jpi(L_Cpt).L_BufAdr = %Loc(L_Pid)p! R_Jpi(L_Cpt).L_RetAdr = 0g L_Cpt = L_Cpt+1 " R_Jpi(L_Cpt).L_EndList = 0 ! -e ! + E ! Traitement de l'arrt de l'image du Process Name ou du PID.r If (B_PrcLog) Then ! +> ! Traitement de l'arrt de l'image du Process Name.C St_Sys = Sys$GetJpiW (,, %Descr(C_Proc), %Ref(R_Jpi),,,)C ### 03/01/94 Dbut. If (St_Sys .eq. Ss$_Suspended) Then$ If (.not. B_Stop) Then- Call Sys$Exit (%Val(St_Sys))N Elseb Type *, '%', C_Verb(1:L_Verb), '-I-SUSPENDED, process ', C_Proc, ' is suspended.' End If& Else If (.not. St_Sys) Then* Call Sys$Exit (%Val(St_Sys)) End IfnC ### 03/01/94 Fin C_ImagOrg = ' 'H St_Str = Str$Copy_Dx (%Descr(C_ImagOrg), %Descr(C_ImagName))C St_Sys = Sys$Forcex (, %Descr(C_Proc), %Val(L_IntCode))a !8 ! Call $GetMsg to retrieve the error message. If (St_Sys) ThennJ Call Sys$GetMsg (%Val(St_Sys), ! Ident. of the message.K 1 %Ref(W_MsgLen), ! Length of the message. F 2 %Descr(C_PreMsg), ! Buffer to receive.V 3 %Val(L_Flags), ! Message components to be returned.I 4 %Ref(B_OutBuff)) ! Optional information.s; L_DebStrg = JMax0 (Index(C_PreMsg, '%')+1, 1)qN dn$ KILL062.A [FORCEX.SRC]KILL.FOR;1hQw"% Type *, '%', C_Verb(1:L_Verb), '-', C_PreMsg(L_DebStrg:W_MsgLen) ! +sF ! Interpellation de l'oprateur sans attente de rponse.+ C_Sp01 = Char(13) // Char(10)p) If (L_ImagName .le. 0) Then # C_ImagName = 'DCL'l L_ImagName = 3  End If+ Call Sys$Fao (%Descr('!8XL'),.- 1 %Ref(W_FaoRLen), * 2 %Descr(C_Pid),) 3 %Val(L_Pid) )OR C_CdTvS = C_Sp01 // ' KILL Sneak''s Information:' // C_Sp01 // T 1 ' Image...: ' // C_ImagName(1:L_ImagName) // C_Sp01 // P 2 ' Process.: ' // C_PrcNam(1:L_PrcNam) // C_Sp01 // A 3 ' PID.....: ' // C_Pid // C_Sp01 // r> 4 ' was forced to exit.' // Char(0)D St_Own = SndOpr (C_CdTvS(1:Index(C_CdTvS, Char(0))-1))> If (.not. St_Own) Call Lib$Signal (%Val(St_Own)) ! -N Else_* Call Sys$Exit (%Val(St_Sys)) End If0 ! - Else ! +5 ! Traitement de l'arrt de l'image du PID.r2 St_Ots = Ots$Cvt_Tz_L (%Descr(C_Proc), < 1 %Ref(L_IntPid), , %Val(0))D St_Sys = Sys$GetJpiW (, %Ref(L_IntPid), , %Ref(R_Jpi),,,)C ### 03/01/94 Dbut. If (St_Sys .eq. Ss$_Suspended) Then$ If (.not. B_Stop) Then- Call Sys$Exit (%Val(St_Sys))e Elseb Type *, '%', C_Verb(1:L_Verb), '-I-SUSPENDED, process ', C_Proc, ' is suspended.' End If& Else If (.not. St_Sys) Then* Call Sys$Exit (%Val(St_Sys)) End IfsC ### 03/01/94 Fin C_ImagOrg = ' 'G St_Str = Str$Copy_Dx (%Descr(C_ImagOrg), %Descr(C_ImagName))nC St_Sys = Sys$Forcex (%Ref(L_IntPid), , %Val(L_IntCode))t ! +8 ! Call $GetMsg to retrieve the error message. If (St_Sys) ThenqJ Call Sys$GetMsg (%Val(St_Sys), ! Ident. of the message.K 1 %Ref(W_MsgLen), ! Length of the message. F 2 %Descr(C_PreMsg), ! Buffer to receive.V 3 %Val(L_Flags), ! Message components to be returned.I 4 %Ref(B_OutBuff)) ! Optional information.n; L_DebStrg = JMax0 (Index(C_PreMsg, '%')+1, 1)VN Type *, '%', C_Verb(1:L_Verb), '-', C_PreMsg(L_DebStrg:W_MsgLen) ! +DF ! Interpellation de l'oprateur sans attente de rponse.+ C_Sp01 = Char(13) // Char(10) ) If (L_ImagName .le. 0) Thens# C_ImagName = 'DCL'a L_ImagName = 3n End If+ Call Sys$Fao (%Descr('!8XL'),y- 1 %Ref(W_FaoRLen), e* 2 %Descr(C_Pid),) 3 %Val(L_Pid) )-R C_CdTvS = C_Sp01 // ' KILL Sneak''s Information:' // C_Sp01 // T 1 ' Image...: ' // C_ImagName(1:L_ImagName) // C_Sp01 // P 2 ' Process.: ' // C_PrcNam(1:L_PrcNam) // C_Sp01 // A 3 ' PID.....: ' // C_Pid // C_Sp01 // C> 4 ' was forced to exit.' // Char(0)D St_Own = SndOpr (C_CdTvS(1:Index(C_CdTvS, Char(0))-1))> If (.not. St_Own) Call Lib$Signal (%Val(St_Own)) ! -* Else* Call Sys$Exit (%Val(St_Sys)) End Ift ! - End If ! - ! +_: ! Traitement de l'arrt du Process Name ou du PID.% If (B_Stop .and. St_Sys) Then U Type *, '%', C_Verb(1:L_Verb), '-I-DELPRC, Killing process in progress...'N W_Cpt = 0 L_DiffImag = 0* If (B_PrcLog) Then'O Do While ( (W_Cpt .lt. L_TimeOut) .and. (L_ImagName .ne. 0) .and.a. 1 (L_DiffImag .eq. 0) )9 St_Sys = Sys$GetJpiW(,, %Descr(C_Proc), -5 1 %Ref(R_Jpi),,,)BC ### 03/01/94 Dbut4 If (St_Sys .eq. Ss$_Suspended) Then* If (.not. B_Stop) Then3 Call Sys$Exit (%Val(St_Sys))a Elseh Type *, '%', C_Verb(1:L_Verb), '-I-SUSPENDED, process ', C_Proc, ' is suspended.' End If, Else If (.not. St_Sys) Then0 Call Sys$Exit (%Val(St_Sys)) End If_C ### 03/01/94 FinA L_DiffImag = Str$Compare (C_ImagOrg, C_ImagName) e If ((L_ImagName .ne. 0) .and. (L_DiffImag .eq. 0)) Call Lib$Wait (%Ref(F_LittleBit)), W_Cpt = W_Cpt+1 End Do Else ! If (B_PrcLog)P Do While ( (W_Cpt .lt. L_TimeOut) .and. (L_ImagName .ne. 0) .and.. 1 (L_DiffImag .eq. 0) )I St_Sys = Sys$GetJpiW (, %Ref(L_IntPid),, %Ref(R_Jpi),,,)SC ### 03/01/94 Dbut4 If (St_Sys .eq. Ss$_Suspended) Then* If (.not. B_Stop) Then3 Call Sys$Exit (%Val(St_Sys))b Elseh Type *, '%', C_Verb(1:L_Verb), '-I-SUSPENDED, process ', C_Proc, ' is suspended.' End If, Else If (.not. St_Sys) Then0 Call Sys$Exit (%Val(St_Sys)) End IfEC ### 03/01/94 FinA L_DiffImag = Str$Compare (C_ImagOrg, C_ImagName)d If ((L_ImagName .ne. 0) .and. (L_DiffImag .eq. 0)) Call Lib$Wait(%Ref(F_LittleBit)) W_Cpt = W_Cpt+1 End Do" End If ! If (B_PrcLog) If (B_PrcLog) Then 4 St_Sys = Sys$DelPrc (,%Descr(C_Proc)) Elsee4 St_Sys = Sys$DelPrc (%Ref(L_IntPid),) End If  ! +8 ! Call $GetMsg to retrieve the error message.G Call Sys$GetMsg (%Val(St_Sys), ! Ident. of the message.LH 1 %Ref(W_MsgLen), ! Length of the message.C 2 %Descr(C_PreMsg), ! Buffer to receive. S 3 %Val(L_Flags), ! Message components to be returned. F 4 %Ref(B_OutBuff)) ! Optional information.8 L_DebStrg = JMax0 (Index(C_PreMsg, '%')+1, 1)K Type *, '%', C_Verb(1:L_Verb), '-', C_PreMsg(L_DebStrg:W_MsgLen)  ! - End If ! -nCTC This is the End...C ------------------ Return EndE ILC UnCopyright 1996 J.P.Willeretz Software Product. All rights Unreserved. Options / Extend_Sourcee Subroutine EPLUCHEC + LC Le but de cette routine est d'analyser (d'plucher) la ligne de commandes.C -$, Implicit None ! Because I'm a Pro.C Modules systme externes.)C -------------------------o$ Include '($SSDEF) /NoList'$ Include '($CLIDEF) /NoList'- External Cli$Get_Value, Cli$Present,- Integer*4 Cli$Get_Value, Cli$Present('C Variables communes concernant le CLI. 'C -------------------------------------3A Logical*1 B_CliParam, B_CliPid, B_CliCode, B_CliStop B Character*15 C_PrcString, C_PrcPid, C_PrcCode, C_PrcStop< Integer*4 L_PrcStrLen, L_PrcPidLen, L_PrcCodLen< Common /Shar_Var/ B_CliParam, B_CliPid, B_CliCode, H 1 B_CliStop, C_PrcString, C_PrcPid, C_PrcCode, K 2 C_PrcStop, L_PrcStrLen, L_PrcPidLen, L_PrcCodLen  Character*20 C_Verb Integer*4 L_Verbt* Common /Shar_Verb/ C_Verb, L_Verb"C Variables locales z'et diverses."C -------------------------------- Character*8 C_Param, Parameter (C_Param = 'Prc_Name') Character*5 C_Ident) Parameter (C_Ident = 'IDENT')f Character*4 C_Codeg' Parameter (C_Code = 'CODE')  Character*4 C_Stopc' Parameter (C_Stop = 'STOP') C.C Dbut de traitement.C --------------------/ If (Cli$Present (%Descr(C_Param))) Then / Call Cli$Get_Value (%Descr(C_Param),d3 1 %Descr(C_PrcString),d1 2 %Ref(L_"w}$ KILL062.A [FORCEX.SRC]KILL.FOR;1hQ;"6PrcStrLen))  B_CliParam = .True. B_CliPid = .False.- Else2 If (Cli$Present (%Descr(C_Ident))) Then1 Call Cli$Get_Value(%Descr(C_Ident),c2 1 %Descr(C_PrcPid),3 2 %Ref(L_PrcPidLen))e B_CliPid = .True.- Elsed B_CliPid = .False. End IfN B_CliParam = .False.s End If7 If (.not. B_CliParam .and. .not. B_CliPid) Then > Type *, C_Verb(1:L_Verb),'-F-BADPARAM, at least, ',E 1 'one parameter needed (either Process name or PID).'r+ Call Sys$Exit (%Val(Ss$_Normal))S End If t . If (Cli$Present (%Descr(C_Code))) Then. Call Cli$Get_Value (%Descr(C_Code),1 1 %Descr(C_PrcCode),d1 2 %Ref(L_PrcCodLen))  B_CliCode = .True., Else B_CliCode = .False. End If. If (Cli$Present (%Descr(C_Stop))) Then B_CliStop = .True. Else B_CliStop = .False. End IfCfC This is the End...C ------------------ Return EndB dLC UnCopyright 1996 J.P.Willeretz Software Product. All rights Unreserved. Options / Extend_SourceL Subroutine KILL , Implicit None ! Because I'm a Pro.$ Include '($SSDEF) /NoList''C Variables communes concernant le CLI.t'C --------------------------------------A Logical*1 B_CliParam, B_CliPid, B_CliCode, B_CliStopB Character*15 C_PrcString, C_PrcPid, C_PrcCode, C_PrcStop< Integer*4 L_PrcStrLen, L_PrcPidLen, L_PrcCodLen< Common /Shar_Var/ B_CliParam, B_CliPid, B_CliCode, H 1 B_CliStop, C_PrcString, C_PrcPid, C_PrcCode, K 2 C_PrcStop, L_PrcStrLen, L_PrcPidLen, L_PrcCodLen  Character*20 C_Verbs Integer*4 L_VerbP* Common /Shar_Verb/ C_Verb, L_Verb"C Variables locales z'et diverses."C -------------------------------- Logical*1 B_ProcLog Character*15 C_Process Integer*4 L_ProcLenCrC Dbut de traitement.C -------------------- Call EPLUCHE B_ProcLog = B_CliParam If (B_ProcLog) Thenr" C_Process = C_PrcString" L_ProcLen = L_PrcStrLen Else C_Process = C_PrcPidi" L_ProcLen = L_PrcPidLen End If6 Call ACTION (B_ProcLog, B_CliCode, B_CliStop, F 1 C_Process(1:L_ProcLen), C_PrcCode(1:L_PrcCodLen))CC This is the End...C ------------------ Ends LC UnCopyright 1996 J.P.Willeretz Software Product. All rights Unreserved. Options / Extend_Sourcee Subroutine HELPo, Implicit None ! Because I'm a Pro.C Modules systme externes.C -------------------------i$ Include '($SSDEF) /NoList'$ Include '($HLPDEF) /NoList'$ Include '($RMSDEF) /NoList'" External Lbr$Output_Help" Integer*4 Lbr$Output_Help0 External Lib$Get_Input, Lib$Put_Output0 Integer*4 Lib$Get_Input, Lib$Put_outputF Integer*4 St_Sys, St_Lbr, St_Lib ! Codes retour S.S. et RTL'C Variables communes concernant le CLI. 'C -------------------------------------n Character*20 C_Verb- Integer*4 L_Verbh* Common /Shar_Verb/ C_Verb, L_Verb"C Variables locales z'et diverses."C --------------------------------- Character*20 C_LineDesc, C_FicTrouv ! Character*17 C_HelpFil E6 Integer*4 L_Flags, L_Width, L_ContextFind Logical*1 B_ExistCoC Dbut de traitement.C --------------------J ! Vrifier que la bibliothque de HELP existe en utilisant les RTLI ! Lib$Find_File et Lib$Find_File_End. Si non, rechercher dans les H ! diffrentes tables de noms logiques la valeur de HLP$LIBRARY_x' C_HelpFil = 'Sys$Help:Kill.Hlb's/ Inquire (File=C_HelpFil, Exist=B_Exist)O If (.not. B_Exist) Then \ Type *,' Commande d''arrt, en cas d''urgence d''une image et/ou d''un'! Type *,' processus.'tZ Type *,' Cette commande permet de tuer une image s''excutant dans le'[ Type *,' contexte d''un autre processus. Le contrle est pass '\ Type *,' l''"exception handler" de l''image cible. De ce fait, cette commande'[ Type *,' permet d''arrter plus proprement un processus que la commande'e+ Type *,' STOP/IDENTIFICATION.' Type *,' 'a Type *,'Format :' Type *,' 'e- Type *,' KILL [process-name]'R Type *,'ou'2 Type *,' KILL /IDENTIFICATION=pid' Type *,' '  Type *,'Option :' Type *,' ' * Type *,' /NOSTOP (DEFAUT)' Type *,' 'e] Type *,' Prcise qu''en plus d''arrter l''image, la commande devra'oC Type *,' arrter le processus auquel elle appartient.'e ElseJ L_Flags = Hlp$M_Prompt .or. Hlp$M_Help .or. Hlp$M_Process .or. 3 1 Hlp$M_Group .or. Hlp$M_Systemu( C_LineDesc = C_Verb(1:L_Verb) L_Width = 70: St_Lbr = Lbr$Output_Help (%Ref(Lib$Put_output),3 1 %Ref(L_Width),B8 2 %Descr(C_LineDesc),7 3 %Descr(C_HelpFil),p3 4 %Ref(L_Flags),p9 5 %Ref(Lib$Get_Input))_ End IfC C This is the End...C ------------------ Endc )LC UnCopyright 1996 J.P.Willeretz Software Product. All rights Unreserved. Options / Extend_Source  Subroutine EXIT , Implicit None ! Because I'm a Pro.$ Include '($SSDEF) /NoList'C C Dbut de traitement.C --------------------( Call Sys$Exit (%Val(Ss$_Normal))C C This is the End...C ------------------ EndP rLC UnCopyright 1996 J.P.Willeretz Software Product. All rights Unreserved. Options / Extend_Source C Integer*4 Function GET_IMAGNAME (L_Pid, C_Image, L_Image, 9 1 C_Type, L_Type)h, Implicit None ! Because I'm a Pro. C Arguments passs la routine. C ------------------------------6 Integer*4 L_Pid ! N du Pid traiter.A Character*(*) C_Image ! Nom retourn de l'image activ. J Integer*4 L_Image ! Long du nom retourn de l'image active.H Character*(*) C_Type ! Nom de l'extension de l'image active.P Integer*4 L_Type ! Long du nom de l'extension de l'image active.C Modules systme externes.rC ------------------------- % Include '($JPIDEF) /NoList't% Include '($FSCNDEF) /NoList' % Include '($SSDEF) /NoList'G, External Sys$GetJpiW, Sys$FileScan, Integer*4 Sys$GetJpiW, Sys$FileScan5 External Lib$MovC5, Lib$Get_Ef, Lib$Free_Ef 5 Integer*4 Lib$MovC5, Lib$Get_Ef, Lib$Free_Ef3A Integer*4 St_Sys, St_Lib ! Code retour des S.S. et RTL.e C Structures.4 C ----------- ! +( ! Item List 3. Structure /S_ItmLst3/_ Union Map+" Integer*2 Length Integer*2 Code# Integer*4 Addresss" Integer*4 Retlen End Mape Map $ Integer*4 End_list End Map_ End Union End Structurea# Record /S_ItmLst3/ R_Jpi(2)N ! - ! +f ! Item List 2. Structure /S_ItmLst2/1 Union Map," Integer*2 Length Integer*2 Code# Integer*4 Address  End Map  Mapf$ Integer*4 End_list End Mape End Union End Structure/$ Record /S_ItmLst2/ R_Fscn(3) ! -r"C Variables locales z'et diverses."C --------------------------------7 Integer*4 L_Ef ! Event Flag pour $GetjpiWw Integer*4 L_Cpt /0/= Character*255 C_ImagName ! Nom de l'image activ.)! Integer*4 L_ImagNamssY$ KILL062.A [FORCEX.SRC]KILL.FOR;1hQGea! Character*80 C_Dummy(2) C C Dbut de traitement.C --------------------0 ! + Obtenir le nom de l'image appelante. ! 7 ! 1 en utilisant la System Service Sys$GetJpiWa9 ! 2 en utilisant la System Service Sys$FileScan.(P ! 3 en passant le rsultat de Sys$FileScan la RTL Lib$MovC5 avec une P ! petite astuce au niveau de l'argument SOURCE qui est pass par %ValI ! au lieu de %Ref car Sys$FileScan retourne dj l'adresse du ( ! composant. O ! Evitons les indirections trop nombreuses (N'Est-Ce Pas, Ma Chre).p ! -e L_Cpt = 1U/ R_Jpi(L_Cpt).Length = Len(C_ImagName) - R_Jpi(L_Cpt).Code = Jpi$_ImagNameS0 R_Jpi(L_Cpt).Address = %Loc(C_ImagName)0 R_Jpi(L_Cpt).Retlen = %Loc(L_ImagName) L_Cpt = L_Cpt+1 " R_Jpi(L_Cpt).End_list = 0. Get_ImagName = Lib$Get_Ef (%Ref(L_Ef))& If (.not. Get_ImagName) Return/ Get_ImagName = Sys$GetJpiW (%Val(L_Ef),G1 1 %Ref(L_Pid),, 3 2 %Ref(R_Jpi),,,)t$ If (.not. Get_ImagName) Then, St_Lib = Lib$Free_Ef (%Ref(L_Ef)) Return  End If/ Get_ImagName = Lib$Free_Ef (%Ref(L_Ef))f& If (.not. Get_ImagName) Return L_Cpt = 1 0 R_Fscn(L_Cpt).Length = Len(C_ImagName)+ R_Fscn(L_Cpt).Code = Fscn$_Namep1 R_Fscn(L_Cpt).Address = %Loc(C_ImagName)x L_Cpt = L_Cpt+110 R_Fscn(L_Cpt).Length = Len(C_ImagName)+ R_Fscn(L_Cpt).Code = Fscn$_Type 1 R_Fscn(L_Cpt).Address = %Loc(C_ImagName)t L_Cpt = L_Cpt+1.# R_Fscn(L_Cpt).End_list = 0CG Get_ImagName = Sys$FileScan (%Descr(C_ImagName), %Ref(R_Fscn),)I& If (.not. Get_ImagName) Return Do L_Cpt=1, 2, 10 If (R_Fscn(L_Cpt).Length .ne. 0) Then= St_Lib = Lib$MovC5 (%Ref(R_Fscn(L_Cpt).Length), > 1 %Val(R_Fscn(L_Cpt).Address),, 2 %Ref(' '),6 3 Len(C_Dummy(L_Cpt)),7 4 %Ref(C_Dummy(L_Cpt)))I End If/ End Do 1 C_Image = C_Dummy(1)(1:R_Fscn(1).Length) p" L_Image = R_Fscn(1).Length1 C_Type = C_Dummy(2)(1:R_Fscn(2).Length) " L_Type = R_Fscn(2).LengthC C This is the End...C ------------------ Return End0 1LC UnCopyright 1996 J.P.Willeretz Software Product. All rights Unreserved. Options / Extend_Source , Integer*4 Function SNDOPR (C_CdTvS), Implicit None ! Because I'm a Pro. C Arguments passs la routine. C ------------------------------K Character*(*) C_CdTvS ! Corps du texte transmettre via SNDOPR.'C Modules systme externes. C -------------------------.$ Include '($OPCDEF) /NoList' External Sys$SndOpr  Integer*4 Sys$SndOpr  External Lib$MovC3 Integer*4 Lib$MovC3L Integer*4 St_Sys, St_Lib, St_Ots, St_Own ! Codes retour S.S. et RTL C Structures.i C -----------r ! +1J ! Create the Request structure. Use Union to map out the 'normal'E ! structure. Use another Map to overlay the structure with afB ! string. This makes it possible to pass the structure toB ! $SNDOPR with the appropriate passing mechanism (%Descr). !L" Structure /Request_Buffer/ Union Map ( Byte B_Rq_Type0 Byte B_Rq_Targ_Ary (3)& Integer*4 L_Rq_Id( Character*255 C_Rq_Text End Mapr Mapg( Character*263 C_Request End Mapg End Union  End Structure & Record /Request_Buffer/ R_Rqst ! -"C Variables locales z'et diverses."C --------------------------------& Integer*4 L_TempVar, L_BytLenCC Dbut de traitement.C -------------------- ! + K ! Initialize the Request buffer. Since the 'target' is represented4K ! with a three byte array, it is necessary (in this example) to use L ! an intermediate longword. This longword (L_TempVar) can be easilyF ! loaded with the appropriate value. Then the low order threeD ! bytes are moved into the three byte array using Lib$MovC3. ! ' R_Rqst.B_Rq_Type = Opc$_Rq_Rqst ; L_TempVar = Opc$M_Nm_Centrl ! Message type CENTRAL.) L_BytLen = 3F SndOpr = Lib$MovC3 (L_BytLen, L_TempVar, R_Rqst.B_Rq_Targ_Ary)8 If (.not. SndOpr) Call Lib$Signal (%Val(SndOpr)) ! -_ ! +)M ! Load the 'id' with some arbitrary value to show how it can be used.  R_Rqst.L_Rq_Id = 9999 2 R_Rqst.C_Rq_Text = C_CdTvS(1:Len(C_CdTvS)) ! -t ! +P. ! Call Sys$SndOpr to make the Request.8 SndOpr = Sys$SndOpr (%Descr(R_Rqst.C_Request), )8 If (.not. SndOpr) Call Lib$Signal (%Val(SndOpr)) ! -oCeC This is the End...C ------------------ Return Ends*[FORCEX.SRC]KILL.HLP;1+,. / 4H  -0123KPWO 56ke7lP|89GHJ 1 KILLF Commande d'arrt, en cas d'urgence, d'une image et/ou d'un processus.F Cette commande permet de tuer une image s'excutant dans leF contexte d'un autre processus. Le contrle est pass F l'"exception handler" de l'image cible. De ce fait, cette commandeF permet d'arrter plus proprement un processus que la commande STOP/IDENTIFICATION.F Etant donn que le mcanisme interne invoque une AST de mode USER,7 il est possible qu'une image ne puisse tre arrte.Format : KILL [process-name] 2 Paramtres process-nameF Prcise le nom du processus (PID) o tourne l'image qui doitF tre arrte. Le nom du processus peut avoir de 1 15 caractresF alphanumriques. Le processus spcifi doit tre dans le mmeF numro de GROUP que le code d'identification de l'utilisateurF (UIC) du processus courrant. Il n'est pas possible de donner unF nom de processus qui n'appartienne pas au mme GROUP NUMBER. PourF arrter une image d'un autre GROUP, il faut utiliser leG qualificatif /IDENTIFICATION=pid (privilge GROUP et/ou WORLD  ncessaire).F Si le qualificatif /IDENTIFICATION est utilis, le nom du1 processus est ignor (mutuellement exclusif).F Si le qualificatif /STOP est utilis (NOSTOP est le dfaut),F en plus d'arrter l'image, la commande devra tuer le processus auquel elle appartient.H Lorsqu'une image est stoppe, KILL poste dans l'OPCOM un message de type :@ %%%%%%%%%%% OPCOM dd-mmm-yyyy hh:mm:ss.cc %%%%%%%%%%%. Message from user TARTEMPION on LENODE! KILL Sneak's Information: Image...: DCL Process.: _m_{OO}_m_ PID.....: 20202179 was forced to exit.F Cette option a t mise en place pour diffrencier les arrtsF brutaux de l' utilisation de KILL. Elle n'est plus vraimentF ncessaire partir OpenVMS V6.2, puisque l'audit permet de tracer ce genre d'vnement... 2 Options3 /IDENTIFICATION /IDENTIFICATION=pidF Prcise le code d'identification du processus (PID) ou tourneF l'image qui doit tre arrte. Le PID doit tre prcis en Hexadcimal.# KILL /IDENTIFICATION=202004E1F Il est possible d'omettre les zros de tte du PID (dans unF environnement non-cluster) ou le prfixe cluster courant (dans un environneme[T$$ KILL062.A[FORCEX.SRC]KILL.HLP;1H nt cluster).3 /STOP /NOSTOP (DEFAUT)F Prcise qu'en plus d'arrter l'image, la commande devra/ arrter le processus auquel elle appartient. 3 /STATUT /STATUT=condition-valueD Prcise le statut passer au "condition handler" de l'imageH cible. Le dfaut est /STATUT=42 qui signifie "SYSTEM-E-ABORT, abort". 2 Exemples 1. $ KILL SMI_SERVER@ Cette commande KILL force l'arrt de l'image en cours> d'excution dans le contexte du processus nomm SMI_SERVER.. 2. $ KILL /IDENTIFICATION=20200506 /STOPF Cette commande illustre une autre faon d'arrter une imageE en prcisant le PID du processus. De plus, aprs l'arrt de$ l'image, le processus sera tu.. 3. $ KILL "_m_{OO}_m_" /STATUT=10010001F Dans cet exemple, le statut passer l'image cible estF prcis. Lorsqu'elle sera arrte, le "condition handler" traite? la condition "%RMS-S-NORMAL, normal sucessful completion".*[FORCEX.SRC]KILL.OBJ_AXP_V62;1+, ./ 4-0123KPWO56ZW=d7`P|89GHJ??KILLER 29-APR-1996 14:54DEC Fortran V6.3-711 $DATA$0 $BSS$$IODATA$i`<$CODE$$LINK$ LIB$INITIALIZE H Z_GETIMAGNAMELSHAR_VAR SHAR_VERB(JKILLERLIB$INITIALIZE DFOR$INIT_UNDERFLOW0J<4 GET_IMAGNAMESYS$EXIT CLI$GET_VALUE STR$POSITION CLI$DISPATCH CLI$DCL_PARSE KILL_TABLES LIB$GET_INPUT(J)EPLUCHE(JH@ACTION DFOR$SET_FPE LIB$CVT_DX_DX SYS$GETJPIW STR$COPY_DX SYS$FORCEX SYS$GETMSGSYS$FAO(J8:SNDOPR LIB$SIGNAL OTS$CVT_TZ_L STR$COMPARELIB$WAIT SYS$DELPRC DFOR$WRITE_SEQ_LIS DFOR$HANDLER DFOR$WRITE_SEQ_LIS_XMIT CLI$PRESENT(J,KILL(J8 .HELP DFOR$INQUIRELBR$OUTPUT_HELPLIB$PUT_OUTPUT(J4EXIT LIB$GET_EF LIB$FREE_EF SYS$FILESCAN LIB$MOVC5 LIB$MOVC3 SYS$SNDOPROTS$STRCMP_EQLPOTS$MOVEOTS$FILL OTS$MOVEM OTS$INDEX0 0= @ =#~8^@^HGG"4GBb@Zk?$(! =C B,R"&s"}C]"="B(R"}"@"Gxb @ "  "4G@BHb@Zk ?$! =C 0B&s"}C]"="0BR"tGBb@Zk "  "4G@BHb@Zk ?$! =C  B$R"&s"}C]"=" BR"tGBb@Zk "  "4G@BHb@Zk( %B9 B0"abB9`B0BGB@Zk # " "! (GB9 B~ B$R"&s"}C ]¦_'1v J:B=Cݲ"="GtGBb@Zk "   " 10 B8B B $"GGB@Zk ¦6?BU9 BS   BBL9BJ " 99 CF?CD99 C3 B $" B$R"GTBB@ZkGB@Zk $" B$R"GB@Zk( "  ¦6"B(9 B&tG0B"GB@Zkg0BGB@Zk  0 "G "!&z"6D GBb@Zk "  "4G@BHb@Zk D "4G@BHb@Zk  `eB9`B4GaB<CGG"GBB@ZkpB"GB@ZkGG]"B@Zk<CGGGGGGB@ZkGB@ZkG?'6vJBݲC GX"PBPb"G`Bhb@Zk " GBG9 B B reB9`B4GwB<CGG"GBB@ZkpB"GB@ZkGG]"B@Zk $ ?$6vJB=C <CGGGGGGB@ZkGB@ZkG?$8vKC=Cݲ"X"PBPb"G`Bhb@Zk "Gb@Gb@G(D " ("Q. q.1"QJSqJSF( .."JVJFJ 7 ("@9 B: "(BR"GB@Zk(D " ¦֢&z"F '# " 4G@BHb@Zk @*9@(("H!!@$9 @" "1"_& vH@C =(""&!v H6@=C "("1"(BR"}""Gb @4GG8]@]HP#k"0#(~p^x^~޴>^~cGG=GGG,H,H`c]2.2J CG0B"TG(B@ZkGB@ZkX|XX"|1C 2B9 BC4G B49B1 4Bt@_'1v J:BX=\XBR"Cd]G`=1?JpJ0F`="`4vJpSJF`X"`="TG(B0b@ZkX"`X`X"`4GxBb@Zkb"H 4G`X=("?"_&R"X"GXB`b@Zk""h@9@h H`X("X]"tG8B@b@Zk""X tG`X=("X]"tG8B@b@Zk""H 4G`X=("X]"tG8B@b@Zk""C H`X("X]"tG8B@b@Zk"" tG`X=("X]"tG8B@b@Zk4GX"pXpG9BB|@{`!NGXBբ6JtJFղXp9BBmlN?#XBWCz;v~KyS KyGzXp9@@^] LXB<R"CSB1&1 CXC`Xp9B݀BNMNX¦"CB&7 CXCX"p98 CXBp:Xbp{9`C`C98 aOGXB[B Hq JDXbps9`B`B*)aN"XB4vJvSJFXp9CC OXBZ#CAC$ CXC8X"p19 B B  @!NXb{#CuCs&3 CXCXp8BX¦pXp9BB NGXBWC:!?H`H D:Xp9CC@O"XbxC;1v>JsS`J3F;Xp9BݠBNX¦"CB$ CXC5X"p!9 @ @!LXCXBpZ8@CXBpRX"p19 B B`!NXC}/KE& vH@XC\#GGX]"Xbs"GGGBb@ZkX"\X\\"K'.'J Xb\4GxBb@ZkJb"H 4G`X=("?"_&R"X"GXB`b@Zk""h@D9@Bh H`X("X]"tG8B@b@Zk""p G`X=("X]"tG8B@b@Zk""C H`X("X]"tG8B@b@Zk"" G`X=("X]"tG8B@b =@Zk X\X"\4GxBb@ZkX"GGB@ZkX ?$P! X=C\X<#?'P9#`=CdX"`="TGBb@ZkX"hXP?&3vHqBX=C\GX="tGBb@ZkX"\X\X"\BrX"&"XC\X"D1"X]"XT"GBb@ZkG4GX"HB"hB@ZkX@<DXb"H"#4G`=X=("?"_&R"X"GXB`b@Zk""h@9@h H`X("X]"tG8B@b@Zk"" 4G`X=("X]"tG8B@b@Zk""XD HH@9@X"!9 @?@!9 @ @XBR"AB H`=X("X]"tG8B@b@Zk  X"<X X<"PB"tG B@ZkGGB@ZktGX⦄ײ#X"y$ XC\X,"?&1"`=CdX"X"41"`]"G8B@b@ZkTGX"ajBIG9`BFTGX"qaBAG9<$ KILL062.A [FORCEX.SRC]KILL.OBJ_AXP_V62;1Wf"`B>TGGTGTG hB<CG GX"GXB<R"(B@ZkB"G(B@ZkGGX]" B@Zk)@<CG GX"GXB,R"G(B@ZkGG(B@ZkGGX]" B@ZkGhB<CG GGGpB"(B@ZkGG(B@Zk !C<CG GX"GXB<R"G(B@ZkGG(B@ZkGGX]" B@Zk C<CGG"GXBR"G(B@ZkGG(B@ZkGG]" B@ZkG hB<CGGGGB"(B@ZkGG(B@ZkB<CG G"GXB<R"G(B@ZkGG(B@ZkGG]" B@Zk B<CGG"GXB<R"G(B@ZkGG(B@ZkGG]" B@ZkGiB<CGGGGXB"(B@ZkGG(B@Zk@<CG G"GXB<R"G(B@ZkGG(B@ZkGG]" B@ZkGaB<CG GGGB"(B@ZkGG(B@Zk"XB<R"TG B@ZkGG?"(B@ZkX"G?"33B]"(B@ZkGB@Zk?"4GX"B"hB@Zk# @W9@UX"9#?% vH @XC\=X"4GHb@Xbl X"l)\ GXl4GBb@ZkTXB\ 4GxBb@ZkM%)vH +AX= C\]X"X"t1"GGG8B@b@ZkXbd #GX"t1"GXbs"GGGBb@ZkX\X"\)\)!L GG-GI@X"\4GxBb@ZkKb"H! 4G`X=("?"_&R"X"GXB`b@Zk""hA9Ah(I`X("X]"tG8B@b@Zk""pB! G`]X}("X]"tG8B@b@Zk""C(I`X("X]"tG8B@b@Zk""b! G`}X]("X]"tG8B@b@Zk GX\Xb\ 4GxBb@ZkX"GGB@ZkX")!_%PJ!X] C\=X< ?$P! `=CdX"`="TGBb@ZkXhXBJXt"GtGBb@ZkX"\ Xb\k`X\BjX"! ?&1"X=C\=X"D1"X]"XT"GBb@ZkG4GX"HB"hB@ZkX@<DX" b"Hb!4G`}X("?"_&R"X"GXB`b@Zk""h")"A^9 A\h)!I`X=("X]"tG8B@b@Zk""! 4G`X]("X]"tG8B@b@Zk""XD(IIA@9A>X")9 A:?A8)9 A( AXBJ! IA(I`=X("X]"tG8B@b@Zk _!X"<IXbk `X<"PB"tG B@ZkGGB@ZktGX" X¦v&"XC\=X",)!_%J!`] Cd=X"X"41"`]"G8B@b@ZkTGXBjjB G9`B TGX`aBG9`BTGGTGTGxB<CG GX"GXB<R"(B@ZkB"G(B@ZkGGX]" B@ZkB<CGGX"GXB,R"G(B@ZkGG(B@ZkGGX]" B@ZkG`B<CG GGGpB"(B@ZkGG(B@ZkB<CGGX"GXB<R"G(B@ZkGG(B@ZkGGX]" B@Zk9@<CGG"GXBR"G(B@ZkGG(B@ZkGG]" B@ZkG `B<CGGGGB"(B@ZkGG(B@Zk*A<CGG"GXB<R"G(B@ZkGG(B@ZkGG]" B@ZkaA<CGG"GXB<R"G(B@ZkGG(B@ZkGG]" B@ZkGyB<CG GGGXB"(B@ZkGG(B@ZkA<CG G"GXB<R"G(B@ZkGG(B@ZkGG]" B@ZkG wB<CGGGGB"(B@ZkGG(B@Zk"XB<R"TG B@ZkG =G?"(B@ZkX"G?"33B]"(B@ZkGB@Zk?"4GX"B"hB@Zk?# @ 9@X!?% vH @XC\X"4GHb@Xbl X"l) GXBl 4GBb@ZkX\4GxBb@ZkGg-gIXB\J *E b"H!4G`X("?"_&R"X"GXB`b@Zk""hbkbA9`Ah+aI`X}("X]"tG8B@b@Zk""! 4G`X]("X]"tG8B@b@ZkX$X"x}K-KI@XxHX"!E X$"1 B?_&3vHrBX]C\#GGX]"Xbs"GGGBb@ZkX\X"\)\)!L Gg-gI@X"\4GxBb@ZkKb"H! 4G`X=("?"_&R"X"GXB`b@Zk""hAl9Ajh(I`X("X]"tG8B@b@Zk""pB! G`]X}("X]"tG8B@b@Zk""C(I`X("X]"tG8B@b@Zk""b! G`}X]("X]"tG8B@b@Zk GX\Xb\ 4GxBb@ZkX")!_%PJ!X] C\=X< ?$P! `=CdX"`="TGBb@ZkXxXBJ_AX"x) IE "4GBb@ZkXb$k+fI!(I hAIXB$ XX"x) XX"$! 0@ #GX"t1"GXbs"GGGBb@ZkXb\ X\\!LGG-GI X"\4GxBb@ZkKb"Hb!4G`}X("?"_&R"X"GXB`b@Zk""hBJBA9@Ah*AI`X]("X]"tG8B@b@Zk""p"! G`=X}("X]"tG8B@b@Zk""C(I`X("X]"tG8B@b@Zk""b! G`}X=("X]"tG8B@b@Zk GX\Xb\ 4GxBb@ZkX")!_%PJ!X] C\=X< ?$P! `=CdX"`="TGBb@ZkXxXBJ_AX"x) IE "4GBb@ZkXb$k+fI!(I hAIXB$ ] - I?$0vHBX=C\]GX="TGBb@ZkXb\ Xt"GTGBb@ZkX\XB\ "iXbk!?$! X= C\}X"D1"X]"XT"GBb@ZkG4GX"HB"hB@ZkX@<DXb"HB! 4G`]X=("?"_&R"X"GXB`b@Zk""hA9Ah(I`X("X]"tG8B@b@Zk"""! 4G`=X]("X]"tG8B@b@Zk""XD(IIA9AX")9 A?A)9 A( AXBJ! IA(I`=X("X]"tG8B@b@ZkcGp]x]}ݤ=]}#k%.Q %J&F.T JF"#~H^P^XcGGP ?$! 8=C<8"4G8B@b@ZkP" &"8C<=bs"&"@CD}8"@="B@R"tGBb@Zk ?D 01?J00HB"&s"8}C<]8"4G8B@b@ZkH" &"8C<=bs"&"@CD}8"@="BDR"tGBb@Zk &"0D "Q2_JQbF¦֦0JGF/xb"BX9BV7J@8"?"_&R"8"GBb@Zkx"" G@8="8]"tGBb@Zkp""p TG@8="8]"tGBb@Zk4G4GBb@Zk` ?$! 8=C<8"4G8B@b@Zk`" &"8C<=b"s"&"@CD}8"@="BHR"tGBb@Zk &0D "Q2v_JQhb"&"8C<}8"4G8B@b@Zk"?&FBr3~JrcGH]P]X`#k#~^ ^(GG@b#_ D" "Q. q.1"QJSqJSF .."JVJFJ⦜7 "@9B: " BR"GB@Zk D"¦֢B9B HB9B#?'6vJBݲC  b"s"&7vJBC}" "1" BR"}""b#_G] ](0#k#~P^X^`cGG "TGh"hB2h b"4Gh"! @=8=h"H"?"_&R"8"GBb@Zkhb"" G@=8"?"_&R"8"GhBpb@Zkb"8 G@8="?"_&R"8"GhBpb@Zkb" G@8="?"_&R"8"GhBpb@Zkb"p G@8="?"_&R" /= 8"GhBpb@Zkb"( G@8="?"_&R"8"GhBpb@Zkb"H G@8="?"_&R"8"GhBpb@Zkb" G@8="?"_&R"8"GhBpb@Zkb"0 4G@8="?"_&R"8"GhBpb@Zkb" G@8="?"_&R"8"GhBpb@Zkb"0 4G@8="?"_&R"8"GhBpb@Zkb"x 4G@8="?"_&R"8"GhBpb@Zkb"p TG@8="?"_&R"8"GhBpb@Zkb"X G@8="?"_&R"8"GhBpb@Zkb"0 4G@8="?"_&R"8"GhBpb@Zkb" G@8="?"_&R"8"GhBpb@Zkb"0 4G@8="?"_&R"8"GhBpb@Zkb" G@8="?"_&R"8"GhBpb@Zkb"0 4G@8="?"_&R"8"GhBpb@Zkb" G@8="?"_&R"8"GhBpb@Zkb" G@8="?"_&R"8"GhBpb@Zk1Gh"xpbB?9`B=h"xBG8B@ZkG(B@ZkGhײh#?'9#8=C<h"&"@CDh"1"8]"@}"h"GHBPb@Zkh"cGP]X]`p#k#~^G4G4G[{@ZkG] #k#~H^P^X~`hpG#G(G]G$.$J =#.#J`=c4G`Br`9B]B?NGbtB31?Jr@J2F3` |9b# LIB$MOVC54=9@9 LIB$MOVC54 9G9 OTS$MOVEM4 9@9 OTS$MOVEM4 9G9OTS$FILL4 9@9OTS$FILL4 D:GL: OTS$MOVEM4 H:@L: OTS$MOVEM4 P:GX:OTS$FILL4 T:@X:OTS$FILL4A<;GH; LIB$MOVC34B@;b#8 LIB$MOVC34AD;@H; LIB$MOVC34X;Gd; LIB$SIGNAL4\;b#8 LIB$SIGNAL4`;@d; LIB$SIGNAL4 ;G; OTS$MOVEM4 ;@; OTS$MOVEM4 ;G;OTS$FILL4 ;@;OTS$FILL4?<G< SYS$SNDOPR4@<b# $ KILL062.A [FORCEX.SRC]KILL.OBJ_AXP_V62;1c8 SYS$SNDOPR4? <@< SYS$SNDOPR4 <G,< LIB$SIGNAL4$<b#8 LIB$SIGNAL4(<@,< LIB$SIGNAL  STR$POSITIONH;=RUN =0 DFOR$SET_FPE;8OTS$STRCMP_EQLP CLI$GET_VALUE8OTS$FILL8OTS$MOVE8 OTS$MOV dEM;=08;=P ;;;SYS$EXIT7 LIB$GET_INPUT7 KILL_TABLES CLI$DCL_PARSE=>;=$Verb CLI$DISPATCH=$Line(=0=8*-I-DELPRC, Killing process in progress...`= process...p LIB$CVT_DX_DXSYS$FAO8;=DCL=  Image...: =  PID.....:  SYS$DELPRC STR$COMPARE LIB$SIGNAL SYS$GETMSG= is suspended. ! SYS$GETJPIW;=8@=8H=0p@;= 7 DFOR$HANDLER=((#DFOR$WRITE_SEQ_LIS_XMIT=% %DFOR$WRITE_SEQ_LIS8 OTS$INDEX= -I-SUSPENDED, process =-) SYS$FORCEX+LIB$WAIT- STR$COPY_DX=  Process.: (=0=0% KILL Sneak's Information:!8XLX=( was forced to exit.x=42/ OTS$CVT_TZ_L= image of =0$-I-TRYING, Trying to force exiting =0H);=` 7 DFOR$HANDLER=1 CLI$PRESENT=IDENT= Prc_Name(=CODE0=STOP8=@3one parameter needed (either Process name or PID).p= -F-BADPARAM, at least, =0,;= 0 ou=( KILL [process-name]= Format :7LIB$PUT_OUTPUT= Option :=h] STOP/IDENTIFICATION. Commande d'arrt, en cas d'urgence d'une image et/ou d'unX=XOSys$Help l'"exception handler" de l'image cible. De ce fait, cette commande=PG contexte d'un autre processus. Le contrle est pass =PF Cette commande permet de tuer une image s'excutant dans le8=0P .;=p 7 DFOR$HANDLER=  p= processus.=PG permet d'arrter plus proprement un processus que la commande= :Kill.Hl8 3 DFOR$INQUIRE=  /NOSTOP (DEFAUT)=PG Prcise qu'en plus d'arrter l'image, la commande devraP=80 arrter le processus auquel elle appartient. 5LBR$OUTPUT_HELP=( KILL /IDENTIFICATION=pid=04;= =0H<4;=< 7 LIB$FREE_EF9 LIB$GET_EF; SYS$FILESCAN= LIB$MOVC5=P =0 :;=P `? SYS$SNDOPRA LIB$MOVC30 0>DFOR$INIT_UNDERFLOWB B=2*) KILLERDEC Fortran V6.3-711b b=^VPKh,cQ"7DISK$EXPLOIT:[ROGUET.WILLERJO.DESTROY.INSTAL]KILL.FOR;1O O=KCB=B4eژ"SYS$COMMON:[SYSLIB]FORSYSDEF.TLB;1$CLIDEFRO O=KCB= eژ"SYS$COMMON:[SYSLIB]FORSYSDEF.TLB;1$RMSDEFN N=JBA<׷jeژ"SYS$COMMON:[SYSLIB]FORSYSDEF.TLB;1$SSDEFO O=KCB=7Ueژ"SYS$COMMON:[SYSLIB]FORSYSDEF.TLB;1$STSDEFN N=JBA<׷jeژ"SYS$COMMON:[SYSLIB]FORSYSDEF.TLB;1$SSDEFO O=KCB=Jreieژ"SYS$COMMON:[SYSLIB]FORSYSDEF.TLB;1$JPIDEFN N=JBA<׷jeژ"SYS$COMMON:[SYSLIB]FORSYSDEF.TLB;1$SSDEFO O=KCB= B4eژ"SYS$COMMON:[SYSLIB]FORSYSDEF.TLB;1$CLIDEFGN N=JBA< ׷jeژ"SYS$COMMON:[SYSLIB]FORSYSDEF.TLB;1$SSDEFN N=JBA< ׷jeژ"SYS$COMMON:[SYSLIB]FORSYSDEF.TLB;1$SSDEFO O=KCB= D^eژ"SYS$COMMON:[SYSLIB]FORSYSDEF.TLB;1$HLPDEFO O=KCB= eژ"SYS$COMMON:[SYSLIB]FORSYSDEF.TLB;1$RMSDEFN N=JBA<׷jeژ"SYS$COMMON:[SYSLIB]FORSYSDEF.TLB;1$SSDEFO O=KCB=Jreieژ"SYS$COMMON:[SYSLIB]FORSYSDEF.TLB;1$JPIDEFP P=LDC> 2cZeژ"SYS$COMMON:[SYSLIB]FORSYSDEF.TLB;1$FSCNDEFN N=JBA<׷jeژ"SYS$COMMON:[SYSLIB]FORSYSDEF.TLB;1$SSDEFO O=KCB=_&eژ"SYS$COMMON:[SYSLIB]FORSYSDEF.TLB;1$OPCDEF = gh h  i   j   F k   ]& ^ C' q q r    Yd  !! 5V!  '' '  Qe'( f'  D*) Q* R0z o0 T1 U1 91 1 L7 7 8) H5 5= 44= KILLER4=$ И ܨܤܸ >  G  G  G  ^  ^  T d g L g G g  y p   > $ $= 4v v= 4= ST_LIB4= ST_SYS4= ST_CLI4= ST_OWN4= B_CLI4=,$ B_PROCLOG@4=C_LINE e4="@4=C_TEMP - e4=  4=)!L_LINE04= C_PROCESS n e4= $4= L_PROCLEN(4= L_POS4=( L_PID(4=C_IMAGE  e4= ,4=*"L_IMAGE04=C_TYPE  e4= D4= L_TYPE4= B_CLIPARAM4=B_CLIPID4= B_CLICODE4=,$ B_CLISTOP4= C_PRCSTRING  e4="4=C_PRCPID  e4=""4= C_PRCCODE  e4="14= C_PRCSTOP +B$ KILL062.A [FORCEX.SRC]KILL.OBJ_AXP_V62;1"t@ e4= @4= L_PRCSTRLEND4= L_PRCPIDLENH4=.& L_PRCCODLEN4=C_VERB  e4= 4=L_VERB: :=  4= @ = @4H4= ACTION@4=                 1 0 / @ @ @ G F E _ b f$ _ w }$ w8    @ 2+$ $= 4 =B_PRCLOGB_CODE+B_STOP92/&&&=& )C_PROC we4=ZR92/&&&;& 'C_CODE e4= x4= ST_SYS|4= ST_LIB4= ST_OTS4= ST_STR4=ST_OWNS_ITMLST`W_BUFLENW_ITMCOD L_BUFADR@L_RETADR L_ENDLIST:  se4= 4=R_JPI e4="P4= C_IMAGORG >e4= @4= W_CPT4= L_CPT4=L_INTPID4= L_DIFFIMAG4=L_CODLEN4= L_TIMEOUT4= L_INTCODE 4=.& F_LITTLEBITPX4= C_IMAGNAME e4= 4=-% L_IMAGNAME4=C_PRCNAM Le4= 4=L_PRCNAM4=( L_PIDH4=C_PID e4="4=C_PREMSG e4= 4= L_DEBSTRGP4=,$ W_FAORLENX4=C_SP01 )e4="4=C_CDTVS Ze4= 4= L_FLAGS`4=W_MSGLENh4=E=W_OUTLEN. p4= B_OUTBUFF e4="4=C_VERB e4= 4=L_VERB: := (4=  = )44= EPLUCHE)4=  - - , 4 4 3 A G G F O$ $= <)4 = 4= B_CLIPARAM4=B_CLIPID4= B_CLICODE4=,$ B_CLISTOP4= C_PRCSTRING ce4="4=C_PRCPID e4=""4= C_PRCCODE e4="14= C_PRCSTOP e4= @4= L_PRCSTRLEND4= L_PRCPIDLENH4=.& L_PRCCODLEN4=C_VERB se4= 4=L_VERB$: := ,4=  = ,44= KILL,4=910 ^ :!p B! B!$ $= ,4C C= 4= B_CLIPARAM4=B_CLIPID4= B_CLICODE4=,$ B_CLISTOP4= C_PRCSTRING je4="4=C_PRCPID e4=""4= C_PRCCODE e4="14= C_PRCSTOP e4= @4= L_PRCSTRLEND4= L_PRCPIDLENH4=.& L_PRCCODLEN4=C_VERB ze4= 4= L_VERB4=,$ B_PROCLOG4= C_PROCESS e4= 4= L_PROCLEN: := .4=  =  .484= HELP .4=QIH N! ܸ8 a* * * $ $= D.4 = 4= ST_SYS4= ST_LBR4=)!ST_LIB4=C_VERB e4= 4=)!L_VERB4= C_LINEDESC e4="4= C_FICTROUV =e4="4= C_HELPFIL re4= 4= L_FLAGS4= L_WIDTH4= L_CONTEXTFIND4=B_EXISTV: := 34= x x= 444= EXIT44= *$ $= 44: := (44= < = <444= GET_IMAGNAME<44=nfe ^02 7( 7 7 ܸ( ^0 $ $= 44 =) GET_IMAGNAME(L_PID@96&&&T & (C_IMAGE e4=rjL_IMAGE@96&&&T& 'C_TYPE ue4=L_TYPE04= ST_SYS44=ST_LIB S_ITMLST3`LENGTH CODE ADDRESS@RETLENEND_LIST:  e4= @4=R_JPI ne4= S_ITMLST2@LENGTH CODE ADDRESSEND_LIST: 2|$ KILL062.A [FORCEX.SRC]KILL.OBJ_AXP_V62;1je4= X4=R_FSCN  e4=  84= L_EF 4=( L_CPTp4= C_IMAGNAME e4= <4=c[ L_IMAGNAMEP: Pe4= p4=C_DUMMY e4: := t:4= | = :484= SNDOPR:4=/'& 7$ 7$ $= :4A A=rj(SNDOPR@96&&&T& 'C_CDTVS e4=  4= ST_SYS 4= ST_LIB 4= ST_OTS 4=ST_OWN. REQUEST_BUFFER@ B_RQ_TYPE B_RQ_TARG_ARY Ze4=4, L_RQ_ID@ C_RQ_TEXT e4=# C_REQUEST e4= ( 4=R_RQST e4=  4= L_TEMPVAR$ 4= L_BYTLEN: := 0<4=  =  !*[FORCEX.SRC]KILL.OBJ_VAX_V55;1+, ./ 4-0123KPWO567P|89GHJ1KILLER0126-Apr-1996 15:3826-Apr-1996 15:38VAX FORTRAN V5.8-155 KILLERP$Verb$Line KILLERP(0 ,(DX0x KILL_TABLES LIB$GET_INPUT LIB$GET_INPUT KILL_TABLES LIB$GET_INPUT LIB$GET_INPUT(0PO[\( GET_IMAGNAMEPPD@SYS$EXITP CLI$GET_VALUEPPd`SYS$EXITp CLI$GET_VALUEPkkk˄ˀSYS$EXIT-, PPP1,ˈˌː STR$POSITIONPWWPPX,n WXPWWP,PG X(Ь,W-X 1(Ь,kkzkˠ CLI$DISPATCHPVVVˬ˨SYS$EXIT˰ FOR$JIBITSPkSYS$EXITY>~W^(WnWVVZZZY^ CLI$DCL_PARSEY^PkWX>~¬,^(,nЬ,YYXXXW^ CLI$DCL_PARSEW^PkEPLUCHEEPLUCHE(@W(DWkzЏSYS$EXITWH "$(ACTIONPPRUN$ OKILLER CLI$GET_VALUE CLI$DCL_PARSE CLI$DISPATCH LIB$GET_INPUT STR$POSITION KILL_TABLES GET_IMAGNAMESYS$EXIT FOR$JIBITSEPLUCHEACTION1$CODE$PDATAP$LOCALH Z_GETIMAGNAMELSHAR_VAR SHAR_VERBP 1P KPkPoPwP;PPsP PP$PiPHPPPPh\ 11ACTION0126-Apr-1996 15:3826-Apr-1996 15:38VAX FORTRAN V5.8-155 ACTIONP%-I-TRYING, Trying to force exiting image of process...-I-SUSPENDED, process is suspended.-!8XL-I-DELPRC, Killing process in progress... ACTION(PPLPh@# % .(9O8H(XHX0]^dPc`(9O8HXHXL]^Pc`)e(9O8H9O8H(XHX]Q Q@Q PK[}PQ$P }PQ,P(, (,<(PԫP`,dh LIB$CVT_DX_DXPPxtSYS$EXITV~ FOR$WRITE_SL| FOR$IO_T_DSﰦ˄fˈ˄ FOR$IO_T_DSˌ FOR$IO_T_DS˔ FOR$IO_T_DS  FOR$IO_T_DS˜ FOR$IO_T_DS FOR$IO_ENDPP`P`P˔`Pޫ`P`P`P` Pޫ`P`P`Pޫ`P`P`1˴ˤ SYS$GETJPIWPRR RSYS$EXIT~ FOR$WRITE_SL FOR$IO_T_DSﰦf FOR$IO_T_DS FOR$IO_T_DS  FOR$IO_T_DS FOR$IO_T_DS FOR$IO_ENDRRSYS$EXIT,n PD STR$COPY_DXЫ  SYS$FORCEXPWW1W  SYS$GETMSG0 LIB$INDEXPRRPPR~ FOR$WRITE_SL< FOR$IO_T_DSﰦDfHD FOR$IO_T_DSL FOR$IO_T_DS2PRRPPTBXT FOR$IO_T_DS FOR$IO_END ի, P˔ЫtdSYS$FAO^(n~}~^(n~«^(nЫY6YX^(nX~X«^(˔nЫYYX^(nX~X^(nX~X,Xn PQ^ˀ LIB$INDEXPPˌː˔SNDOPRPPˠ˜ LIB$SIGNALW˨ˤSYS$EXIT1ˬ OTS$CVT_TZ_L SYS$GETJPIWPWW WSYS$EXIT~ FOR$WRITE_SL FOR$IO_T_DSﰦf FOR$IO_T_DS FOR$IO_T_DS  FOR$IO_T_DS FOR$IO_T_DS FOR$IO_ENDWW SYS$EXIT,n PD STR$COPY_DXЫ( SYS$FORCEXPWW1W0<, SYS$GETMSGL LIB$INDEXPXXPPX~ FOR$WRITE_SLX FOR$IO_T_DSﰦ`fd` FOR$IO_T_DSh FOR$IO_T_DS2PXXPPpHtp FOR$IO_T_DS\ FOR$IO_END ի, P˔ЫːˀSYS$FAO^(n~}~^(n~«^(nЫY6YX^(nX~X«^(˔nЫYYX^(nX~X^(nX~X,Xn PQ^˜ LIB$INDEXPP˨ˬ˰SNDOPRPP˼˸ LIB$SIGNALWSYS$EXITW1 1~ FOR$WRITE_SL FOR$IO_T_DSﰦf FOR$IO_T_DS FOR$IO_T_DS FOR$IO_END̴XY1Y12XPP 1ի1 SYS$GETJPIWPWW WSYS$EXIT~ FOR$WRITE_SL FOR$IO_T_DSﰦf FOR$IO_T_DS FOR$IO_T_DS  FOR$IO_T_DS  FOR$IO_T_DS FOR$IO_ENDWW,(SYS$EXIT0 STR$COMPAREPYիY<LIB$WAITҶX1,1Y12XPP 1ի1TD SYS$GETJPIWPWW[T,$ KILL062.A [FORCEX.SRC]KILL.OBJ_VAX_V55;1   WhdSYS$EXIT~ FOR$WRITE_SLl FOR$IO_T_DSﰦtfxt FOR$IO_T_DS| FOR$IO_T_DS  FOR$IO_T_DS˄ FOR$IO_T_DS FOR$IO_ENDWWːˌSYS$EXIT˔ STR$COMPAREPYիYˠLIB$WAITX1,˨ SYS$DELPRCPX˴ SYS$DELPRCPXX SYS$GETMSG LIB$INDEXPXXPPX~ FOR$WRITE_SL FOR$IO_T_DSﰦf FOR$IO_T_DS FOR$IO_T_DS2PXXPPH FOR$IO_T_DS FOR$IO_ENDP42DCLQJ KILL Sneak's Information:Q Image...: Q Process.: Q PID.....: Q was forced to exit.[ KACTION LIB$CVT_DX_DX OTS$CVT_TZ_L STR$COPY_DX STR$COMPARE SYS$FORCEX SYS$GETJPIW SYS$DELPRCSNDOPRSYS$EXIT SYS$GETMSG LIB$INDEXSYS$FAO LIB$SIGNALLIB$WAIT$CODE$PDATA$LOCAL SHAR_VERB FOR$IO_END FOR$IO_T_DS FOR$WRITE_SL%P LP 6P\SPlXPhPUPPPPlP|PPaPkPPT#P&P^PPPPPPGPQP\PdPPjPPSPP P P !P)P4P<PYPj^PnPSPPP P P P -!2EPLUCHE0126-Apr-1996 15:3826-Apr-1996 15:38VAX FORTRAN V5.8-155EPLUCHEiPPrc_NameIDENTCODESTOP-F-BADPARAM, at least, one parameter needed (either Process name or PID).EPLUCHE\P"(@ @ PD20HPH[\ CLI$PRESENTP0 CLI$GET_VALUElH CLI$PRESENTPX CLI$GET_VALUEll~ FOR$WRITE_SLhlh FOR$IO_T_DSp FOR$IO_T_DSx FOR$IO_T_DS FOR$IO_ENDˀSYS$EXITː CLI$PRESENTPˠ CLI$GET_VALUE˸ CLI$PRESENTP HEPLUCHE CLI$GET_VALUE CLI$PRESENTSYS$EXIT$CODEb$PDATA$LOCALLSHAR_VAR SHAR_VERB FOR$IO_END FOR$IO_T_DS FOR$WRITE_SLKP*P"6PDPPPMUPHPPP PB6/KILL0126-Apr-1996 15:3826-Apr-1996 15:38VAX FORTRAN V5.8-155 KILL KILLPPal@@P`pŏPRP@ |h LIB$MOVC5RžDRbR2RV,V\  V LVfV2VV,Vˬ VЫP |H GET_IMAGNAME SYS$GETJPIW SYS$FILESCAN LIB$MOVC5 LIB$GET_EF LIB$FREE_EFy$CODE$PDATAT$LOCAL(]PP PPP+NBry1SNDOPR0126-Apr-1996 15:3826-Apr-1996 15:38VAX FORTRAN V5.8-155 SNDOPR SNDOPRP 4Ph-0123KPWO?56WH/7`5P|89GHJ>$ KILL062.A [FORCEX.SRC]KILL.OBJ_VAX_V62;1?"1KILLER01 7-Jul-1995 09:27DEC Fortran V6.2-108 KILLER.+H0{?/OSRCF:[FORCEX]KILL.FOR;2 O@=@pV|ਘ"SYS$COMMON:[SYSLIB]FORSYSDEF.TLB;1$CLIDEF .+H0{?/OSRCF:[FORCEX]KILL.FOR;2P @=cߨ"SYS$COMMON:[SYSLIB]FORSYSDEF.TLB;1$RMSDEF .+H0{?/OSRCF:[FORCEX]KILL.FOR;2Q ?<Tਘ"SYS$COMMON:[SYSLIB]FORSYSDEF.TLB;1$SSDEF U.+H0{?/OSRCF:[FORCEX]KILL.FOR;2R @=J{5ᨘ"SYS$COMMON:[SYSLIB]FORSYSDEF.TLB;1$STSDEF D.+ H0{?/OSRCF:[FORCEX]KILL.FOR;2 S  KILLERP$Verb$Line,P(04,<DlD, , KILL_TABLES LIB$GET_INPUT LIB$GET_INPUT  KILL_TABLES LIB$GET_INPUT LIB$GET_INPUT<DPI[< GET_IMAGNAMEP Ы XTSYS$EXITd CLI$GET_VALUEPЫxtSYS$EXIT˄ CLI$GET_VALUEPЫ˘˔SYS$EXIT ,(\ ,PPP\ ,QQ R SSSR SS-\A RC1 ,(T ,\\\T ,PPT˜@ˠˤ STR$POSITIONPëRR,n \ \PQ QRRRPS STT \ QQQ\ RR,PD \B(,ܫ \ PPP\ QQ-\A 1(Ыԫѫz1˴ CLI$DISPATCHPЫ˼SYS$EXIT FOR$JIBITSPЫSYS$EXITV>~ (\ PPP\ QQ\^(\An\XX\\\V^ CLI$DCL_PARSEV^P1Z1X W \\\W QQWA>~ (\ WWW\ PP\^(\@n\WW\\\X^  CLI$DCL_PARSEX^PEPLUCHEEPLUCHE(@(DѫzЏЫ($SYS$EXIT W VVVW \\W,L0 HR HSSSR HTTR4D"8<ACTIONPPRUN IKILLER  lRCLIDEFCLI$L_INIARGCNT CLI$A_PROGXFER@CLI$A_UTILSERV`CLI$A_IMGHDADRCLI$A_IMGFILEDCLI$L_LINKFLAG CLI$L_CLIFLAG0, CLI$L_ARGLISTȧRCLIDEF1 CLI$B_RQTYPE0, CLI$W_SERVCOD CLI$B_RQINDX CLI$B_BITNUM CLI$B_RQFLGS0,0, CLI$B_RQSTAT0,0, CLI$A_ERRACT@ CLI$Q_RQDESC0,@ CLI$W_RQSIZEP` CLI$L_RQVALU` CLI$A_RQADDR CLI$A_PRSACT CLI$A_ABSACT CLI$A_QUALSTPpRCLIDEF2 0, CLI$Q_NAMDESC0,` CLI$Q_VALDESC0, CLI$Q_TABDESC0, CLI$L_ITMLST CLI$L_ATTRsRCLIDEF3`0, CLI$L_NEW_MASK@CLI$L_OLD_MASKg uRCLIDEF4@0, CLI$L_PID0vRCLIDEF50, CLI$B_FLAGS CLI$W_FLAGS 0,00,@ CLI$L_OUTPID`CLI$L_LSTSTATUS CLI$Q_CMDSTR0, CLI$Q_INPUT0, CLI$Q_OUTPUT0,@ CLI$Q_PRCNAM0, CLI$L_ASTADR CLI$L_ASTPRM CLI$B_EFN CLI$B_VERSION0,9 CLI$Q_PROMPT0,,  CLI$Q_CLI0,4` CLI$Q_TABLE0,<RCLIDEF6CLI$B_QDBLKSIZ CLI$B_QDCODE CLI$B_QDFLGS0, CLI$B_QDSTAT0, CLI$Q_QDVALDESC0, CLI$W_QDVALSIZ0@CLI$A_QDVALADR` CLI$A_TRUACT CLI$A_FLSACT CLI$L_USRVALdԔRCLIDEF7CLI$L_WORKAREA0,  kRCLIDEF8@0, CLI$L_CODESETRSTSDEF 0,0,0,0,z CLI$GET_VALUE CLI$DCL_PARSE CLI$DISPATCH LIB$GET_INPUT STR$POSITION KILL_TABLES GET_IMAGNAMEk ST_LIB ST_SYS ST_CLI ST_OWN B_CLI B_PROCLOGC_LINEC_TEMP  L_LINE C_PROCESS$ L_PROCLEN (L_POS L_PIDC_IMAGE(,L_IMAGEC_TYPE0 DL_TYPE B_CLIPARAMB_CLIPID B_CLICODE B_CLISTOP C_PRCSTRING C_PRCPID C_PRCCODE" C_PRCSTOP1@ L_PRCSTRLEND L_PRCPIDLENH L_PRCCODLENC_VERB L_VERB4SYS$EXIT FOR$JIBITSEPLUCHEACTION9 SS$_NORMAL STS$K_WARNINGzRMS$_EOF$CODE$PDATAd$LOCALH Z_GETIMAGNAMELSHAR_VAR SHAR_VERBFOR$INIT_UNDERFOR$INIT_VECALIGNP 5P SPPPPNPPP"P#P0PP&P<POPjPi]t  1ACTION01 7-Jul-1995 09:27DEC Fortran V6.2-108 ACTIONj.+ H0{?/OSRCF:[FORCEX]KILL.FOR;2  ?< Tਘ"SYS$COMMON:[SYSLIB]FORSYSDEF.TLB;1$SSDEF  U.+ H0{?/OSRCF:[FORCEX]KILL.FOR;2  @= yਘ"SYS$COMMON:[SYSLIB]FORSYSDEF.TLB;1$JPIDEF  .+H0{?/OSRCF:[FORCEX]KILL.FOR;2 c ACTIONP%-I-TRYING, Trying to force exiting image of process...-I-SUSPENDED, process is suspended.-!8XL-I-DELPRC, Killing process in progress...XPPL4Pp# % .X9OhxXH`]^cX$$9Ohx$H|]^c)eX9Ohx8$7$ KILL062.A [FORCEX.SRC]KILL.OBJ_VAX_V62;1?"9Ohx8X$H]Q Q@QPI [}PQPPL}PQXPT, TX$@ߨ"SYS$COMMON:[SYSLIB]FORSYSDEF.TLB;1$FSCNDEF$ 9.+%H0{?/OSRCF:[FORCEX]KILL.FOR;2% ?<&Tਘ"SYS$COMMON:[SYSLIB]FORSYSDEF.TLB;1$SSDEF& U.+'H0{?/OSRCF:[FORCEX]KILL.FOR;2'  GET_IMAGNAMEPP PQPP` QxQQQP@@P`֫ QxQQQP@P` QxQQQP@@P`֫ QxQQQP@`x QxQQQP@@P`| QďPQA ˈt LIB$MOVC5P QxQQQP@ = 155 $ Bel = "" ! = 7&$ Vb = "1m" ! Video brightness$$ Vs = "4m" ! Video soulign($ Vc = "5m" ! Video clignotement#$ Vr = "7m" ! Reverse video"$ Vn = "0m" ! Video Normal5$ !-------------------------------------------------- $IVP_TEXTE:$ Say "H2J"$ Type Sys$Input+ Installation Verification Procedure.K Le but de cet IVP est de tester certaines fonctionnalits de KILL etB de s'assurer que le verbe KILL se trouve dans la table DCL.J Pour ce faire, IVP cre un process dtach d'UIC [1,10] qui excuteI l'image KILL_IVP_IMAGE.EXE ($Hiber) puis il recherche le PID de ce( process pour mener deux actions :C - 1 : Invoquer KILL pour arrter l'image qui tourne dans ce> processus avec le statut 26 (%SYSTEM-E-EXQUOTA).3 Commande : KILL /IDEN=PID /STATUT=26 C - 2 : Invoquer KILL pour arrter l'image qui tourne dans ceA processus avec le statut 42 (%SYSTEM-E-ABORT) et le! processus lui-mme.8 Commande : KILL /IDEN=PID /STOP /STATUT=42N Nota : Voir les informations postes dans OPCOM : Reply/Enable=Central.?$ TexteDFOR$INIT_UNDERFLOWJ J=:21 KILL_IVP_IMAGEDEC Fortran V6.3-711L L=H@:5y!SRCF:[FORCEX]KILL_IVP_IMAGE.FOR;2N N=JBA<׷jeژ"SYS$COMMON:[SYSLIB]FORSYSDEF.TLB;1$SSDEFH H=D<    ! = 4p4=KILL_IVP_IMAGE4=7/.   $ $= $4 = 4= ST_SYS4=C;ST_LIB. 4= Q_FREQSCRUT le4= 4=/' L_DESTSTRING 4= C_FREQSCRUT e4="P4= C_DESTSTRING e4: := 4=  =  p(*[FORCEX.SRC]KILL_IVP_IMAGE.OBJ_VAX_V55;1+,./ 4"-0123KPWO56Z¿y7@ۺP|89GHJ9KILL_IVP_IMAGE0130-Aug-1996 10:39DEC Fortran V6.1-68KILL_IVP_IMAGE<9cy%ROWS03$DKB0:[LMF]KILL_IVP_IMAGE.FOR;2 ?<@U[xAB"SYS$COMMON:[SYSLIB]FORSYSDEF.TLB;1$SSDEF b<9cy%ROWS03$DKB0:[LMF]KILL_IVP_IMAGE.FOR;2  !KILL_IVP_IMAGEPSortie de l'image dans les 20 secondes... Stay tuned...tP P7thp|Q40 00:00:20.00PHh[~ FOR$WRITE_SL FOR$IO_T_DS FOR$IO_END$ SYS$BINTIMPk0 SYS$SCHDWKPkD SYS$HIBERPkLLIB$SYS_GETMSGP~ FOR$WRITE_SL P\ PPP\ QQ\dAhd FOR$IO_T_DS FOR$IO_ENDP HKILL_IVP_IMAGE @ SYS$BINTIM SYS$SCHDWK SYS$HIBERLIB$SYS_GETMSG hST_SYS lST_LIB2 Q_FREQSCRUTp L_DESTSTRING C_FREQSCRUT  C_DESTSTRINGP$CODE7$PDATA$LOCAL FOR$IO_END FOR$IO_T_DS FOR$WRITE_SLFOR$INIT_UNDERFOR$INIT_VECALIGN#{*[FORCEX.SRC]KILL_TABLES.CLD;1+,./ 4L-0123KPWO56S]7P|89GHJL! UnCopyright 1996 J.P.Willeretz Software Product. All rights Unreserved. Module KILL_TABLES Ident "KILL V6.2"!! Dfinition du Verbe HELP.! Define Verb HELP Routine HELP!! Dfinition du Verbe EXIT.! Define Verb EXIT Routine EXIT!! Dfinition du Verbe KILL.! Define Verb KILL Routine KILL! Parameter P1, Label=Prc_name, Prompt="_Nom du Process "' Value(Type=$Process)**yP$ KILL062.A[FORCEX.SRC]KILL_TABLES.CLD;1L2" Qualifier Identification, Label=Ident+ NonNegatable. Value(Required) Qualifier Stop, Label=Stop Negatable! Qualifier Debug, Label=Debug Negatable! Qualifier Statut, Label=Code# NonNegatable Default5 Value(Type=$Number,Default=42)# DisAllow Any2(Prc_name, Ident)* DisAllow (Not Prc_name and Not Ident)*[FORCEX.SRC]KITINSTAL.COM;1+,./ 4`-0123KPWO56͹N|7uP|89GHJN$ ! UnCopyright 1996 J.P.Willeretz Software Product. All rights Unreserved.$ !4$ ! K I T I N S T A L . C O M $ !3$ ! UNCOPYRIGHT un 1996 BY>$ ! J.P.WILLERETZ SOFTWARE PRODUCT, MAISONS LAFFITTE9$ ! FRANCE C.E.E. ALL RIGHTS UNRESERVED.$ ! A$ ! Je suis capable du meilleur comme du pire mais dans le pire $ ! je suis le meilleur.$ !J$ ! This software is furnished without a license. As the owner/developer K$ ! of this software, I expect no renumerances or payments for the use of 7$ ! this software from Digital or Digital's customers.$ !M$ ! J.P.WILLERETZ SOFTWARE PRODUCT ASSUMES NO RESPONSIBILITY FOR THE USE OR N$ ! RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY DIGITAL.$ !N$ !***************************************************************************$ !$ Say := Write Sys$Output$ !;$ ! Mise en place des dbranchements Warning and Interrupt.$ !+$ On Control Then VMI$CALLBACK CONTROL_Y.$ On Warning Then Goto KILL_INSTALL_WARNING$ ! $ ! Si mode DEBUG mettre verify $ ! $ Kill_Verify = F$Verify (P2)$ !!$ ! Vrification des paramteres.$ !C$ ! Ne prendre que INSTALL et IVP. Exit sur n'importe quoi d'autre.$ !6$ If P1 .eqs. "VMI$_INSTALL" Then Goto KILL_INSTALL.$ If P1 .eqs. "VMI$_IVP" Then Goto KILL_IVP$ NO_MATCH: )$ Kill_Verify = F$Verify (Kill_Verify)$ Exit VMI$_UNSUPPORTED$ !$ ! Dbut d'installation$ !$ KILL_INSTALL:$ !)$ ! Vrifier le numro de version de VMS.$ !D$ ! Dfinir la version la plus rcente de VMS supportant le produit.$ ! $ Product$Rel_Version = "050"$ !O$ ! Dfinir la version field test la plus rcente de VMS supportant le produit.$ !$ Product$Ft_Version = "050"$ !1$ ! Extraire le numro courant de version de VMS.$ !8$ Product$Type = F$Element (0, "," , Vmi$Vms_Version)$ ! $ V_RELEASED:$ !!$ ! Vrifier la version RELEASED.$ !K$ ! NOTE: utiliser la comparaison de chane de caractres afin de vrifier :$ ! si le numro de version contient des caractres.$ !8$ If Product$Type .nes. "RELEASED" Then Goto V_UPDATET$ If F$Element (1, ",", Vmi$Vms_Version) .ges. Product$Rel_Version Then Goto V_OK$ ! $ V_REL10:$ !9$ Ver = "V" + F$Extract (1, 1, Product$Rel_Version) +-6 "." + F$Extract (2, 2, Product$Rel_Version)G$ Say "This product requires VMS version ''Ver' or later to install" $ Exit $ ! $ V_UPDATE:$ !#$ ! Vrifier la version Field Test.$ !<$ If Product$Type .nes. "UPDATE FT" Then Goto V_BASELEVELG$ If F$Element (1, ",", F$Element (1, " ", Vmi$Vms_Version)) .ges. -) Product$Ft_Version Then Goto V_OK$ ! $ V_UPD10:$ !8$ Ver = "T" + F$Extract (1, 1, Product$Ft_Version) +-5 "." + F$Extract (2, 2, Product$Ft_Version)G$ Say "This product requires VMS version ''Ver' or later to install" $ Exit $ !$ !$ V_BASELEVEL:$ !C$ ! Toujours autoriser l'installation sur un niveau de base de VMS.8$ ! Au besoin s'assurer des tests prcdants du produit.$ !H$ Baselevel = F$Element (1, ",", F$Element (1, " ", Vmi$Vms_Version))3$ If Product$Type .nes. "UPGRADE FT" Then $ ExitM$ Say "Installing on VMS baselevel ''Baselevel', installation continuing."$ !$ !$ V_OK:$ ! $ ASK_PURGE:$ !-$ ! Purge des fichiers aprs l'installation ??$ ! Option D = Une ligne est saute avant de poser la question.$ !!$ VMI$CALLBACK SET PURGE ASK D$ !U$ If F$Element (1, ",", Vmi$Vms_Version) .lts. "044" Then Goto AFTER_RELEASE_NOTES$ !'$ ! Passer l'IVP aprs l'installation ?$ !$ VMI$CALLBACK SET IVP ASK D$ ! $ ASK_LANG:$ !4$ ! Installation en franais [Defaut] ou en anglais.$ !6$ Phrase = "Installation in French or in English ?":$ VMI$CALLBACK ASK KILL$LANG "''Phrase'" French N,D,R,SK$ If F$TrnLnm (Kill$Lang) .nes. "" Then Kill$Lang = F$TrnLnm (Kill$Lang);$ B_Lang := True ! Installation en francais par dfaut.7$ If Kill$Lang .nes. "FRENCH" Then $ B_Lang := FalseR$ Phras0A = "Questions and informations are displayed in Shakespeare language."`$ Phras0F = "Les questions et les informations sont affiches dans la langue de Victor Hugo."$ Phrase = Phras0A($ If (B_Lang) Then $ Phrase = Phras0F $ Say ""0$ VMI$CALLBACK MESSAGE I LANGUAGE "''Phrase'"$ !$ INF_ALTER_ROOT:$ !%$ ! Demander o installer le produit.$ !$ If B_Lang $ Then$ Type Sys$InputI *********************************************************************F Par dfaut, l'installation du produit se fait dans les rpertoires> standards d'OpenVMS (Sys$System, Sys$Help, Sys$Test, ...).: Cependant, vous pouvez l'installer o bon vous semble.H Dans ce cas, il vous faut donner le nom complet d'un chemin d'accs 9 valide dans lequel sera stock l'ensemble du produit.I *********************************************************************$ ! $ Else$ !$ Type Sys$InputI *********************************************************************I By default, the product installation is done in the OpenVMS standards6 directories (Sys$System, Sys$Help, Sys$Test, ...).> Therefore, you can install this product anywhere you want.F In this case, you must specify the complete name of the directory & you want to use (Dev:[Directory]).I *********************************************************************$ ! $ EndIf$ !$ ASK_ALTER_ROOT:$ !;$ Phras1A = "Where do you want to install the product ?"6$ Phras1F = "O voulez-vous installer ce produit ?"$ Phrase = Phras1A($ If (B_Lang) Then $ Phrase = Phras1F;$ VMI$CALLBACK ASK KILL$ROOT "''Phrase'" Default N,D,R,S$ !.$ ! Vrifier la cohrence de la chane donne.$ ! $ ! Est-ce un nom logique ?$ !K$ If F$TrnLnm (Kill$Root) .nes. "" Then Kill$Root = F$TrnLnm (Kill$Root)2$ B_Default := True ! Installation par dfaut.=$ If Kill$Root .nes. "DEFAULT" Then $ B_Default := False -$ If B_Default Then Goto ASK_ALTER_ROOT_OK$ !$ ! Extraire le nom du device.$ !0$ Kill$Device = F$Element (0, ":", Kill$Root)9$ If Kill$Device .eqs. "" Then Goto ASK_ALTER_ROOT_BAD$ !$ ! Le device existe-t-il ?$ !K$ If .not. F$GetDvi (Kill$Device, "Exists") Then Goto ASK_ALTER_ROOT_BAD$ !1$ ! Vrifier la prsence des open et back braket.$ !X$ If F$Locate ("[", Kill$Root) .ge. F$Length (Kill$Root) Then Goto ASK_ALTER_ROOT_BADX$ If F$Locate ("]", Kill$Root) .ge. F$Length (Kill$Root) Then Goto ASK_ALTER_ROOT_BAD$ !$ ! Tout est OK$ !$ VMI$ALTERNATE_ROOT == 1$ Goto ASK_ALTER_ROOT_OK$ !$ ASK_ALTER_ROOT_BAD:*$ Phras2A = "No Such Device Available."-$ Phras2F = "Priphrique non disponible."$ Phrase = Phras2A($ If (B_Lang) Then $ Phrase = Phras2F1$ VMI$CALLBACK MESSAGE W NOSUCHDEV "''Phrase'"$ Goto ASK_ALTER_ROOT$ !$ ASK_AL7$ KILL062.AORCEX.SRC]KITINSTAL.COM;1` TER_ROOT_OK:$ !$ If B_Lang $ Then$ Type Sys$InputI *********************************************************************I * Vous avez rpondu l'ensemble des questions relatives *I * l'installation de ce produit. *I * *I * L'installation ne devrait pas excder les 4 minutes.... *I * *I *********************************************************************$ ! $ Else$ !$ Type Sys$InputI *********************************************************************I * There are no more questions. You've answered ALL the questions *I * for the installation. *I * *I * Installation takes approximately 4 minutes on a standalone *I * *I *********************************************************************$ ! $ EndIf$ !$ AFTER_RELEASE_NOTES:$ !'$ ! Besoin de 100 blocs pour installer.$ !?$ VMI$CALLBACK CHECK_NET_UTILIZATION KILL_PLENTY_SPACE 1000$ !$ If .not. Kill_Plenty_Space $ Then $ Say " "=$ Phras3A = "You need approximatively 1000 free blocks"D$ Phras3F = "Ce kit demande au moins 1000 blocs disque libres"$ Phrase = Phras3A+$ If (B_Lang) Then $ Phrase = Phras3F1$ VMI$CALLBACK MESSAGE E NOROOM "''Phrase'"$ Exit VMI$_FAILURE $ EndIf$ !$ ! Indicateur de suret.$ !-$ VMI$CALLBACK SET SAFETY CONDITIONAL 1000'$ If B_Default Then Goto BUILT_IMAGE$ !2$ ! Crer un rpertoire pour les fichiers de KILL.$ !5$ VMI$CALLBACK CREATE_DIRECTORY USER 'KILL$ROOT' -= "/PROTECTION=(SY:RWE,OW:RWE,GR:RWE,WO:RWE)"$ !F$ ! Modifier l'item IMAGE dans le CLD par rapport au rpertoire donn.$ !7$ VMI$CALLBACK FIND_FILE KILL_ KILL.CLD VMI$KWD W,E/$ Open /Read /Error=LOOP_END Kill_Org Kill_/$ Open /Write /Error=LOOP_END Kill_New Kill_$ LOOP:)$ Read /End=LOOP_END Kill_Org Kill_Enr=$ If F$Locate ("Image", Kill_Enr) .lt. F$Length (Kill_Enr) $ Then8$ Write Kill_New " Image ''KILL$ROOT'Kill.Exe" $ Else$ Write Kill_New Kill_Enr $ EndIf$ Goto LOOP $ LOOP_END:<$ If F$TrnLnm ("Kill_Org") .nes. "" Then $ Close Kill_Org<$ If F$TrnLnm ("Kill_New") .nes. "" Then $ Close Kill_New6$ Kill_Cld = F$Element (0, ";", F$TrnLnm ("Kill_"))$ Purge /NoLog 'Kill_Cld'$ !$ BUILT_IMAGE:$ !$ ! Bibliothque d'Aide...$ !:$ VMI$CALLBACK FIND_FILE KILL_HLP KILL.HLP VMI$KWD W,E4$ Library /Help /Create Vmi$Kwd:KILL.HLB KILL_HLP$ !$ ! Edition de lien.$ !D$ VMI$CALLBACK FIND_FILE KILL_TABLES KILL_TABLES.CLD VMI$KWD W,E8$ Set Command /Object=Vmi$Kwd:Kill_Tables Kill_TablesB$ VMI$CALLBACK FIND_FILE KILL_SOBJ KILL_TABLES.OBJ VMI$KWD W,E$ !E$ ! Obtenir l'objet correspondant la version et l'architecture...$ !C$ Arch_Nam = F$Edit (F$GetSyi ("Arch_Name"), "Collapse, UpCase")8$ Product$Vers = F$Element (1, "," , Vmi$Vms_Version) $ If Product$Vers .ges. "062" $ Then!$ If Arch_Nam .eqs. "ALPHA" $ ThenW$ VMI$CALLBACK FIND_FILE KILL_OBJ KILL.OBJ_AXP_V62 VMI$KWD W,EW$ VMI$CALLBACK FIND_FILE KILL_IVP_OBJ KILL_IVP_IMAGE.OBJ_AXP_V62 VMI$KWD W,E $ ElseW$ VMI$CALLBACK FIND_FILE KILL_OBJ KILL.OBJ_VAX_V62 VMI$KWD W,EW$ VMI$CALLBACK FIND_FILE KILL_IVP_OBJ KILL_IVP_IMAGE.OBJ_VAX_V55 VMI$KWD W,E $ EndIf $ ElseT$ VMI$CALLBACK FIND_FILE KILL_OBJ KILL.OBJ_VAX_V55 VMI$KWD W,ET$ VMI$CALLBACK FIND_FILE KILL_IVP_OBJ KILL_IVP_IMAGE.OBJ_VAX_V55 VMI$KWD W,E $ EndIf$ !L$ Link /NoDebug /NoTrace /Executable=Vmi$Kwd:Kill.Exe Kill_Obj, Kill_SobjF$ Link /NoDebug /Executable=Vmi$Kwd:Kill_Ivp_Image.Exe Kill_Ivp_Obj;$ Kill_Clear = F$Element (0, ";", F$TrnLnm ("Kill_Obj"))$ Purge /NoLog 'Kill_Clear'<$ Kill_Clear = F$Element (0, ";", F$TrnLnm ("Kill_SObj"))$ Purge /NoLog 'Kill_Clear'?$ Kill_Clear = F$Element (0, ";", F$TrnLnm ("Kill_Ivp_Obj"))$ Purge /NoLog 'Kill_Clear' $ Deassign /Process KILL_OBJ !$ Deassign /Process KILL_SOBJ #$ Deassign /Process KILL_IVP_OBJ$ !$ If .not. B_Default $ Then $ !<$ ! Copier l'ensemble des fichiers dans ce rpertoire. $ !I$ VMI$CALLBACK PROVIDE_FILE KILL_ KILL.FOR 'KILL$ROOT'I$ VMI$CALLBACK PROVIDE_FILE KILL_ KILL_IVP_IMAGE.FOR 'KILL$ROOT'I$ VMI$CALLBACK PROVIDE_FILE KILL_ KILL.CLD 'KILL$ROOT'I$ VMI$CALLBACK PROVIDE_FILE KILL_ KILL_TABLES.CLD 'KILL$ROOT'I$ VMI$CALLBACK PROVIDE_FILE KILL_ KILL.HLB 'KILL$ROOT'I$ VMI$CALLBACK PROVIDE_FILE KILL_ KILL.EXE 'KILL$ROOT'I$ VMI$CALLBACK PROVIDE_FILE KILL_ FREEWARE_CD.TXT 'KILL$ROOT'I$ VMI$CALLBACK PROVIDE_FILE KILL_ FREEWARE_DEMO.TXT 'KILL$ROOT'I$ VMI$CALLBACK PROVIDE_FILE KILL_ FREEWARE_README.TXT 'KILL$ROOT' $ ElseW$ VMI$CALLBACK PROVIDE_FILE KILL_ KILL.FOR VMI$ROOT:[SYSHLP.EXAMPLES]W$ VMI$CALLBACK PROVIDE_FILE KILL_ KILL_IVP_IMAGE.FOR VMI$ROOT:[SYSHLP.EXAMPLES]N$ VMI$CALLBACK PROVIDE_FILE KILL_ KILL.HLB VMI$ROOT:[SYSHLP]N$ VMI$CALLBACK PROVIDE_FILE KILL_ KILL.EXE VMI$ROOT:[SYSEXE] $ EndIf$ !7$ ! Insrer le HELP dans la bibliothque d'aide du DCL.$ !,$ VMI$CALLBACK PROVIDE_DCL_HELP KILL.HLP$ ! $ Say ""7$ Phras4A = "Insert HELP into the DCL help library."J$ Phras4F = "Insertion de l'aide dans la bibliothque gnrale d'aide."$ Phrase = Phras4A($ If (B_Lang) Then $ Phrase = Phras4F2$ VMI$CALLBACK MESSAGE S INSERTHELP "''Phrase'"$ !/$ ! Ajouter la commande KILL dans la table DCL.$ !/$ VMI$CALLBACK PROVIDE_DCL_COMMAND KILL.CLD$ ! $ Say ""B$ Phras5A = "Add a DCL command KILL to the DCL command tables."=$ Phras5F = "Ajout de la commande KILL dans la table DCL."$ Phrase = Phras5A($ If (B_Lang) Then $ Phrase = Phras5F1$ VMI$CALLBACK MESSAGE S ADDTODCL "''Phrase'" $ Say ""$ !$ ! Mettre l'IVP dans SYS$TEST$ !L$ VMI$CALLBACK PROVIDE_FILE KILL_ KILL_IVP.COM VMI$ROOT:[SYSTEST]L$ VMI$CALLBACK PROVIDE_FILE KILL_ KILL_IVP_DETACH.COM VMI$ROOT:[SYSTEST]L$ VMI$CALLBACK PROVIDE_FILE KILL_ KILL_IVP_IMAGE.EXE VMI$ROOT:[SYSTEST]$ !$ ! Installation complte.$ !$ KILL_INSTALL_DONE:)$ Kill_Verify = F$Verify (Kill_Verify)$ Exit VMI$_SUCCESS $ KILL_IVP: $ Say ""4$ Say " Running the IVP for ''Vmi$Pretty' ..."$ !+$ @Vmi$Root:[SysTest]Kill_Ivp.Com $ ! $ Say ""P$ If $Status Then Say " The IVP for ''Vmi$Pretty' completed successfully."$ Goto KILL_INSTALL_DONE$ !$ ! Erreur d'installation.$ !$ KILL_INSTALL_WARNING:$ Kill_Status = $Status)$ Kill_Verify = F$Verify (Kill_Verify)$ Exit Kill_StatusBM "[FORCEX.SRC]KITI?FTK.7S5-UnHEc;1TQ n+8>;/DÅ J ⟂qJj @SyW. nSm Y&ÒtQ읬4}Aδa!K+$6 e_cJW,o eNa[" xE۔ʔwTXt ߰Q{V3!nD}"tP*3!@l peУoȢ)<=Muxd3u|먹{vGf9;E~קD$H1 ўG2Z>i=ہIXֱ(k6;HROY82K05K5>Í:Bzk|"[&A!1m]?T~{plXi@C*Sud'>܉$1թ˔6Y[PS>iY/0vhqg0" qf62CYa)̒ZH_E5U:7 {9ېQyP6*'oP3U(ϡCVpwD3ckx^8,}S:# U瞢~eDa}qY{9y{qua.9tX`s<'B:(Zg~M6b0>/؎Vqe ;tdӾ9L܀ri*G^NĥV}` 3ؤYؽ0[wy5/2Mg>}GӋV@쌳!`9"B̙9,@khkh6= 6L@38agb\ANbkRgA̮f/FVg]oxET0*^: M"5ACZk NmnGHӡ1hN#GP_0׫n!m_F-L=JQ2ӍUq3l_՜|DBJ ڴUZJ$> ǼWk%oXvJ4jljY%B/b' ϗR@^t8 QUJ4 ׎=d/[N<\6)Z:E!8;^3<;X3u]!eExQ=fur!s*Lx#B~0Kʿ2c1[ GK6 #KMGlAT1'nk]9HăOZ>j>!_2Cd+(}_ .wp/Wubr1}A招Q4r\Qh~ݡ ̒s;&zs UvԮr8P8G`ؓB4qG4C> _"Г-o]{h2Xs@|:zLQax3j%rPBΜ46.v Qη] L49K#`K`zkbtdX Px}g;?, ==tɄLMθ&3IB:}RR"m)5dT @ZH&_//{'=s&ZG%?zPu\DpF&j;ۿ(zO~&?#oR_mTd*NA3L"uC{;|짮W}a 1CgzY@s'&E|1vW&:{ĺ(X5.֑xXn[з̘A̛oSU4y鹨e;4xi!юXͫ.w W-8P]2KEY:L;Oa(LFL*v\G$wz0+~=p'b7'~As/3كH1t*(x%|"ݘXEhZJ SRpFāJ* JU2xєuj=HohSް}s qP9EE ZH !HJW=vO@yB0l)R,_gJ7_iZc _-MQYR*Uȝ1/V evDue C~Q5"h?^fv| qfN7r(+ Z5É*HީD՘%eƙ0Ww@݁@ /5g ALOC[s+xhN-ɍ'Z" 7鼪P ߿[2c*򧰡ƪW !PI%eӬwP+ʣޅ]5l5e]yĔsÚ]ZbVhB44s򵚩O|Imgm&yH6 =⦧tvv#TfL %0{Njt:D1f^/U%a5z>5fC-"~HX`G;E.›i{rw\)Y m䲀|ɌEfKX"|AuTY Ti%#T;|cjخI|&\}COoȉGHǪ~n!r:ҟ߿ZciP7M5z ^(RLG?VIw'@q@tea{ؾ >!*n/άrSMX :wZQR3cDpҙaxk9`$s< 8'J;_% L9㒘FrGszoA =ǻN{2蓊5bM/H_6sFt0yqcY07ebF/Zy΀ 8SuA\u0pa(}֡&K?ŭH%.4iNZ2FK")&&*Q@ƺ5Z"Z~YEE r)Z?Pb@Sc5bYa.p7la -7Ilq=Ğ)Lk6]_OPa];s 1iymSR+dkcd̕ `n&1 Ŕ|ۣ dz$<;:eN %;>nL ]EI9e_Z157>}h201M˥zmm ',&(ǤlYd0UTLUZvc=?]u6'\eT#܂ARW;a"Y{i<BO] ai xX! ڀD=LIceHwi2Etñ%AiѵtjJVt[4AY4?7+kqi{؏a dEy\#I);DFF* oN3}08[!Ex356 FTf'"VjRә#磌;O]e)c㗐)Lc@Aؚ]Iw|Ey 5aoX#]F4͛1 J#Q0?98m"tR8Ɂyyi FS 4d,K91Q'ᑽ*H zņQ>3 x@,O ]gN[1>DwZr@Q} Z3V"fboԿ`P~+tj)']ٺھeD(V+a}rʌo ?Ty=Q +ίMTr^(7'&j_DS',)L;A7 i.\}h:>h,uь_ 7jH/D˳MlaDdP93ot(k(#wqhs7Tk4Vm۷B秳 )'kg`1b9b֧,s{Fz iǶxOՆ H`k"J$^NyLM-VҤ#~t֓ g(w@%1` =)om\XzbG'܍Om3cƂ7F@S(8:&}, ]7nG ߸(K|x#i-w^7I]V~}a(Quw\`\Wu(N|J-_Rm QlQ%>8( ZsD a.Acw75U|'w)ShhQ+00UIد_9au=H 1ezY9Q{(!r/l-Е4M/ƫoL[BeHռ`I*vUBdMbxqkQ:ÑcI{\]<椑EޅJk2 Jq,9v~$"5lVŠn"ϲf44ĜjFx-4W S0CRaqΤxc ؜l=8"A"F\TD%rQ X~cGb?x\sfqyep u X\l]"cT8l|?3q5Fīc[Y9./ l:+ag tÁ!/gdpbff/•ɜ؛u"&S(AD3XW"!i,2nxuecjQǐc2ͅ] VxYs8K { :7 PRuɂ^le?{ _u?@IFjF2k:[Rf}TV[SPcbU 1b <]U{e&)h׆aO-tDUp_Ia9$z[II7OD5ҁofh%Mn:`%éSFunosfh޿ 8LwjA^ ]NgX)gG;~ÿ.h\}7K%/$wmsVoglR.3r-/ e,ZȐ@ |سgiSD-r̀sNsZퟷ51o"&G9XMj6ĄU%Ҙ &ej?’Ƥ3{jsϲklUy޺I& Ąѩ-:5t5s)N #\A*?G',Vb1K?+nx}E ln>=h^#ܷG[KLc'~14k&!`C.Aց =\4VvM+!\4"x*xd3 _zYh4 ^d0=4A =Z^ :p{d=[ Ԝ3Ø<]|-rRTwj-nmp31j@ww~~cpgJG\NyMA>-P_-:R/!Okm6;^R)6楄Ƃ/Ggq (֮.34;YCX/zb\_їcXBcLD15 >mx36dU'ŜLd8o0uͫMbuɹ\{E@ IFlo_vT-IYf#IeM˩(;ƿyFbd"dl;#yU "j xj*b8x?,djk;"__d Ie4B`0lwf4($bpI"[Q hl޴1G_i6 ̋C?bB $q?"+X +H p$0V$: p%m֑JذS7DLSq#Wnx"t6`>ʕxp?H7 酃iWZ"R=.Wbm|M԰YG= a:̔a >$iw:K]UrML+sXGs.k‘%Uů>0 $]گUNI\n2ψ{u=m #Ŝ&сDcJg3q ?e0c9kȋ=9JK-}$iqݕB;P~!Ӱ#v~zB) sD-¦A#Q' 7 zwŮ)<^6A(tdNۈɘ3 2!{*6 nfޫ^=<Ή (ZW*v1U ;MCӸ*/b;S!I^ Ic+ەUq&fx>r<9 I"F$Ҟys[oG7{6NjfL+CqH8nkayTA%bCnZ$g<{@  BeeQ@kmsەiƋ: hhFDDm/uV/=TMes{!vOi11 $``谌>;VKkWr3[t NחnD!8`^:%H{//LToqiKUVNoNAzDEERDLIMA1L J8^EyAp *e0S fit, cette commande permet d'arrter plus proprement un processus@C que l@