[comp.os.vms] FORCEX

RVALENTI@DREW.BITNET (06/15/88)

Does anyone have a program demonstrating $FORCEX?

E-MAIL RVALENTI@DREW.BITNET

thanks.
-Ross

GG.SPY@ISUMVS.BITNET ("John Hascall") (06/21/88)

> Date:         Tue, 14 Jun 88 16:16:00 EDT
> Sender:       INFO-VAX Discussion <INFO-VAX@UBVM>
> From:         RVALENTI%DREW.BITNET@CUNYVM.CUNY.EDU
> Subject:      FORCEX
>
> Does anyone have a program demonstrating $FORCEX?
>
> E-MAIL RVALENTI@DREW.BITNET
>
> thanks.
> -Ross

  Here is one I use all the time, note that it accepts the PID in HEX,
and before any flames me: yes, I know VAX Pascal can read in hex--this
was written before it could.

  It also prints out some stuff, no one really cares about as well, but
so what....

-------------------------- cut here -----------------------
program forcex( input, output );

var     pid_s : packed array[1..8] of char;
    code,pid  : integer;

[ASYNCHRONOUS,EXTERNAL(SYS$FORCEX)] FUNCTION $FORCEX (
       PIDADR : INTEGER := %IMMED 0;
       PRCNAM : [CLASS_S] PACKED ARRAY [$l2..$u2:INTEGER] OF CHAR := %IMMED 0;
  %IMMED CODE : INTEGER := %IMMED 0
             ): INTEGER; EXTERNAL;

[ASYNCHRONOUS,EXTERNAL(OTS$CVT_TZ_L)] FUNCTION $CVT_HEX_INT(
  %STDESCR INPSTR : PACKED ARRAY[$Z..$X:INTEGER] OF CHAR;
         %REF VAL : INTEGER;
      %immed SIZE : INTEGER := %immed 4;
     %immed FLAGS : INTEGER := %immed 1
                 ):INTEGER; EXTERNAL;

begin
   write( 'PID> ' );                                (* who to kill? *)
   readln( pid_s );
   writeln( 'CVT=',$CVT_HEX_INT( PID_S, PID ):1 );  (* convert to decimal *)
   writeln( 'PID=',pid:1);
   write( 'CODE> ' );                               (* cond code, usually 44 *)
   readln( code );
   writeln( 'FORCEX=',$FORCEX( pid, ,code ):1 );    (* adios... *)
   writeln( 'bye bye' );
end.