$! ------------------ CUT HERE ----------------------- $ v='f$verify(f$trnlnm("SHARE_VERIFY"))' $! $! This archive created by VMS_SHARE Version 7.2-011 26-Jun-1992 $! On 3-AUG-1992 10:54:13.30 By user GOATHUNTER (@WKUVX1.BITNET) $! $! This VMS_SHARE Written by: $! Andy Harper, Kings College London UK $! $! Acknowledgements to: $! James Gray - Original VMS_SHARE $! Michael Bednarek - Original Concept and implementation $! $! TO UNPACK THIS SHARE FILE, CONCATENATE ALL PARTS IN ORDER $! AND EXECUTE AS A COMMAND PROCEDURE ( @name ) $! $! THE FOLLOWING FILE(S) WILL BE CREATED AFTER UNPACKING: $! 1. WATCH.VAX;1 $! $set="set" $set symbol/scope=(nolocal,noglobal) $f=f$parse("SHARE_TEMP","SYS$SCRATCH:.TMP_"+f$getjpi("","PID")) $e="write sys$error ""%UNPACK"", " $w="write sys$output ""%UNPACK"", " $ if f$trnlnm("SHARE_LOG") then $ w = "!" $ ve=f$getsyi("version") $ if ve-f$extract(0,1,ve) .ges. "4.4" then $ goto START $ e "-E-OLDVER, Must run at least VMS 4.4" $ v=f$verify(v) $ exit 44 $UNPACK: SUBROUTINE ! P1=filename, P2=checksum $ x = P1 - f$parse(P1,,,"version") $ y = f$search(x) $ if y .eqs. "" then $ goto file_absent $ x = f$integer(f$parse(P1,,,"version")-";") $ y = f$integer(f$parse(y,,,"version")-";") $ if x .gt. y then $ goto file_absent $ if f$mode() .eqs. "INTERACTIVE" then $ goto file_interactive $ if x .eq. y then e "-W-EXISTS, File ''P1' exists. Skipped." $ if x .ne. y then e "-W-NEWERVERSION, of File ''P1' exists. Skipped." $file_delete: $ delete 'f'* $ exit $file_interactive: $ if x .eq. y then e "-W-EXISTS, File ''P1' exists." $ if x .ne. y then e "-W-NEWERVERSION, of File ''P1' exists." $ read/error=file_delete/end=file_delete- /prompt="Create new version [y/n]: " - sys$command x $ if .not. x then $ e "-W-SKIPPED, File ''P1' skipped." $ if .not. x then $ goto file_delete $ P1 = P1 - f$parse(P1,,,"version") $file_absent: $ if f$parse(P1) .nes. "" then $ goto dirok $ dn=f$parse(P1,,,"DIRECTORY") $ w "-I-CREDIR, Creating directory ''dn'." $ create/dir 'dn' $ if $status then $ goto dirok $ e "-E-CREDIRFAIL, Unable to create ''dn'. File skipped." $ delete 'f'* $ exit $dirok: $ w "-I-PROCESS, Processing file ''P1'." $ if .not. f$verify() then $ define/user sys$output nl: $ EDIT/TPU/NOSEC/NODIS/COM=SYS$INPUT 'f'/OUT='P1' PROCEDURE Unpacker ON_ERROR ENDON_ERROR;SET(FACILITY_NAME,"UNPACK");SET( SUCCESS,OFF);SET(INFORMATIONAL,OFF);f:=GET_INFO(COMMAND_LINE,"file_name");b:= CREATE_BUFFER(f,f);p:=SPAN(" ")@r&LINE_END;POSITION(BEGINNING_OF(b)); LOOP EXITIF SEARCH(p,FORWARD)=0;POSITION(r);ERASE(r);ENDLOOP;POSITION( BEGINNING_OF(b));g:=0;LOOP EXITIF MARK(NONE)=END_OF(b);x:=ERASE_CHARACTER(1); IF g=0 THEN IF x="X" THEN MOVE_VERTICAL(1);ENDIF;IF x="V" THEN APPEND_LINE; MOVE_HORIZONTAL(-CURRENT_OFFSET);MOVE_VERTICAL(1);ENDIF;IF x="+" THEN g:=1; ERASE_LINE;ENDIF;ELSE IF x="-" THEN IF INDEX(CURRENT_LINE,"+-+-+-+-+-+-+-+")= 1 THEN g:=0;ENDIF;ENDIF;ERASE_LINE;ENDIF;ENDLOOP;t:="0123456789ABCDEF"; POSITION(BEGINNING_OF(b));LOOP r:=SEARCH("`",FORWARD);EXITIF r=0;POSITION(r); ERASE(r);x1:=INDEX(t,ERASE_CHARACTER(1))-1;x2:=INDEX(t,ERASE_CHARACTER(1))-1; COPY_TEXT(ASCII(16*x1+x2));ENDLOOP;WRITE_FILE(b,GET_INFO(COMMAND_LINE, "output_file"));ENDPROCEDURE;Unpacker;QUIT; $ delete/nolog 'f'* $ CHECKSUM 'P1' $ IF CHECKSUM$CHECKSUM .eqs. P2 THEN $ EXIT $ e "-E-CHKSMFAIL, Checksum of ''P1' failed." $ ENDSUBROUTINE $START: $ create 'f' X--++ X-- Creation Date: 02-Mar-1991 X-- X-- Author: Alan Cohn X-- X-- Modification History: X-- X-- Functional Description: X-- X--`09 This program (Watch) displays process information for the specified X--`09 process every two seconds. The information is displayed on X--`09 the users VT terminal. The user must have WORLD priviledge. X--`09 To terminate Watch press any key on the terminal. X--`09 This program was created with VAX Ada 2.1. X-- X-- Calling Format: X-- X--`09 Watch is a foreign command. Define it with a symbol as: X--`09 WATCH == "$" + f$search("WATCH.EXE") X--`09 Then envoke watch with: X--`09 WATCH PID !PID is the hexadecimal ID of the process to watch. X-- X--- Xwith system;`09`09`09--Ada/VMS spec. Xuse system; Xwith starlet;`09`09`09--VMS Ada starlet spec. Xuse starlet; Xwith integer_text_io;`09`09--VMS integer text io Xuse integer_text_io; Xwith text_io;`09`09`09--Ada text io. Xuse text_io; Xwith condition_handling;`09--Processes status from VMS calls. Xuse condition_handling; Xwith lib;`09`09`09--Contains VMS LIB$ specs. Xwith ots;`09`09`09--Contains VMS OTS$ specs. X X---------------------------------------------------------------------- Xfunction Watch`09return Condition_Handling.Cond_Value_Type is X X X Channel`09 : Starlet.channel_type; X Error_cnt`09 : integer := 0; X Iosb`09`09 : Iosb_type; X Pidadr`09 : Starlet.process_id_type; X Prvnew`09 : Mask_privileges_type := Prv_type_init; --Reset All Priv's X Prvold`09 : Mask_privileges_type; X Qio_status`09 : Condition_handling.cond_value_type; X Qio_buffer`09 : Integer; X Status`09 : Condition_handling.cond_value_type; X Timlen`09 : Unsigned_word; X Timbuf`09 : Starlet.Time_Name_Type(1..50); X Timbuf_size`09 : Unsigned_word; X Timadr`09 : Starlet.Date_Time_Type; X Timadr_size`09 : Unsigned_word; X Whole_pid_string : String(1..8); X X --VTxxx screen commands X bell`09 : constant string := ascii.bel & ""; X Cls`09 : constant string := ascii.esc & "`5BJ"; X eeol`09 : constant string := ascii.esc & "`5BK"; X home`09 : constant string := ascii.esc & "`5B1;1H"; X norm`09 : constant string := ascii.esc & "`5B0m"; X nosee_cur : constant string := ascii.esc & "`5B?25l"; X rev`09 : constant string := ascii.esc & "`5B7m"; X see_cur : constant string := ascii.esc & "`5B?25h"; X tab`09 : constant string := ascii.ht & ""; X X -- array of strings X Jobtype_desc : Constant Array (0..5) Of String(1..8) := ( X`09`09 ("Detached"), X`09`09 ("Network "), X`09`09 ("Batch "), X`09`09 ("Local "), X`09`09 ("Dialup "), X`09`09 ("Remote ") ); X X Jobmode_desc : Constant Array (0..3) Of String(1..11) := ( X`09`09 ("Other "), X`09`09 ("Network "), X`09`09 ("Batch "), X`09`09 ("Interactive") ); X X State_desc : Constant Array (1..14) Of String(1..5) := ( X`09`09 ("COLPG"), X`09`09 ("MWAIT"), X`09`09 ("CEF "), X`09`09 ("PFW "), X`09`09 ("LEF "), X`09`09 ("LEFO "), X`09`09 ("HIB "), X`09`09 ("HIBO "), X`09`09 ("SUSP "), X`09`09 ("SUSPO"), X`09`09 ("FPG "), X`09`09 ("COM "), X`09`09 ("COMO "), X`09`09 ("CUR ") ); X X Biocnt`09 : integer; X Biocnt_size`09 : Unsigned_word; X Biolm `09 : integer; X Biolm_size`09 : Unsigned_word; X Bufio `09 : integer; X Bufio_size`09 : Unsigned_word; X Bytcnt`09 : integer; X Bytcnt_size`09 : Unsigned_word; X Bytlm `09 : integer; X Bytlm_size`09 : Unsigned_word; X Cputim`09 : integer; X Cputim_size`09 : Unsigned_word; X Dfwscnt`09 : integer; X Dfwscnt_size`09 : Unsigned_word; X Diocnt`09 : integer; X Diocnt_size`09 : Unsigned_word; X Diolm `09 : integer; X Diolm_size`09 : Unsigned_word; X Enqcnt`09 : integer; X Enqcnt_size`09 : Unsigned_word; X Enqlm `09 : integer; X Enqlm_size`09 : Unsigned_word; X Filcnt`09 : integer; X Filcnt_size`09 : Unsigned_word; X Fillm `09 : integer; X Fillm_size`09 : Unsigned_word; X Freptecnt`09 : integer; X Freptecnt_size : Unsigned_word; X Gpgcnt`09 : integer; X Gpgcnt_size`09 : Unsigned_word; X Image_name`09 : String(1..80); X Image_name_size : Unsigned_word; X Itmlst`09 : Item_list_type(1..35); X Jobtype`09 : integer; X Jobtype_size`09 : Unsigned_word; X Mode`09`09 : integer; X Mode_size`09 : Unsigned_word; X Pageflts`09 : integer; X Pageflts_size : Unsigned_word; X Pagfilcnt`09 : integer; X Pagfilcnt_size : Unsigned_word; X Pgflquota`09 : integer; X Pgflquota_size : Unsigned_word; X Pid`09`09 : Unsigned_longword; X Pid_prompt`09 : constant string := "Enter PID> "; X Pid_prompt_flag : constant Unsigned_longword := 0; X Pid_size`09 : Unsigned_word; X Pid_string`09 : String(1..20); X Pid_string_size : Unsigned_word; X Ppgcnt`09 : integer; X Ppgcnt_size`09 : Unsigned_word; X Pri`09`09 : integer; X Pri_size`09 : Unsigned_word; X Prib`09`09 : integer; X Prib_size`09 : Unsigned_word; X Process_name`09 : String(1..15); X Process_name_size : Unsigned_word; X State `09 : integer; X State_size`09 : Unsigned_word; X Terminal_name : String(1..7); X Terminal_name_size: Unsigned_word; X Username`09 : String(1..12); X Username_size : Unsigned_word; X Virtpeak`09 : integer; X Virtpeak_size : Unsigned_word; X Wsextent`09 : integer; X Wsextent_size : Unsigned_word; X Wsquota`09 : integer; X Wsquota_size`09 : Unsigned_word; X Wssize`09 : integer; X Wssize_size`09 : Unsigned_word; X---------------------------------------------------------------------------- V- X-- This function converts an integer to string and returns string without X-- leading space. Xfunction Integer_Image( Int : integer ) return string is X Int_Length : integer := integer'image( int )'length; Xbegin X return integer'image( Int )( 2 .. Int_Length ); --return all but first ch Var Xend; X--------------------------------------------------------------------------- X-- This function returns a file name without the disk, directory, X-- extension, or version part. Xfunction file_name( fn : string ) return string is X start_fn : natural := 1; X end_fn : natural := fn'length; -- in case no version ';' Xbegin X for x in reverse 1..Fn'Length loop --search backwards for '`5D' X if fn(x) = '`5D' then X start_fn := x+1;`09`09`09`09--use next character X exit; X end if; X end loop; X X for x in reverse Start_Fn..Fn'Length loop --search backwards for ';' X if fn( x ) = ';' then X end_fn := x - 5;`09`09`09 -- backup over ".EXE;" X exit; X end if; X end loop; X X if fn( end_fn-3 .. end_fn ) = ".EXE" then --make sure last 4 chara's X end_fn := end_fn - 4;`09`09 --are not ".EXE" X end if; X X return Fn( Start_Fn .. End_Fn); Xend; X--------------------------------------------------------------------------- Xbegin`09-- watch -- X X Prvnew.World := true;`09`09 --requested priviledge WORLD. X Starlet.Setprv ( Status => Status, X`09`09 Enbflg => True,`09 --Enable Priv World X`09`09 Prvadr => Prvnew, --List Of New Priv's X`09`09 Prmflg => False, --Not Permenant X`09`09 Prvprv => Prvold); --Old Priv World X if not Condition_Handling.Success( Status ) then X return Status; X end if; X X X Lib.get_foreign( Status`09`09=> Status,`09--Get Command Pid X`09`09 Resultant_string`09=> Pid_string, X`09`09 Prompt_string`09=> Pid_prompt, X`09`09 Resultant_length`09=> Pid_string_size); X if not Condition_Handling.Success( Status ) then X return Status; X end if; X X Ots.Cvt_Tz_L ( Status => Status, --convert hex string to long X`09`09 Fixed_Or_Dynamic_Input_String X`09`09`09 => Pid_String( 1..integer( Pid_String_Size)), X`09`09 Varying_Output_Value => Pidadr); X if not Condition_Handling.Success( Status ) then X return Status; X end if; X X Starlet.Assign (Status => Qio_Status, `09-- connect to vt terminal X`09`09 Devnam => "TT:", X`09`09 Chan`09 => Channel); X if not Condition_Handling.Success( Qio_Status ) then X return Qio_Status; X end if; X X X -- initialize GetJpi item list X X Itmlst( Itmlst'last).buf_len := 0; --mark end of list X Itmlst( Itmlst'last).item_code := Jpi_C_Listend; X X Itmlst( 1 ).Buf_len`09 := Process_name'length; X Itmlst( 1 ).Item_code := Starlet.Jpi_Prcnam; X Itmlst( 1 ).Buf_address := Process_name'address; X Itmlst( 1 ).Ret_address := Process_name_size'address; X X Itmlst( 2 ).Buf_len`09 := 4; X Itmlst( 2 ).Item_code := Starlet.Jpi_Biocnt; X Itmlst( 2 ).Buf_address := Biocnt'address; X Itmlst( 2 ).Ret_address := Biocnt_size'address; X X Itmlst( 3 ).Buf_len`09 := 4; X Itmlst( 3 ).Item_code := Starlet.Jpi_Biolm; X Itmlst( 3 ).Buf_address := Biolm'address; X Itmlst( 3 ).Ret_address := Biolm_size'address; X X Itmlst( 4 ).Buf_len`09 := 4; X Itmlst( 4 ).Item_code := Starlet.Jpi_Bufio; X Itmlst( 4 ).Buf_address := Bufio'address; X Itmlst( 4 ).Ret_address := Bufio_size'address; X X Itmlst( 5 ).Buf_len`09 := 4; X Itmlst( 5 ).Item_code := Starlet.Jpi_Cputim; X Itmlst( 5 ).Buf_address := Cputim'address; X Itmlst( 5 ).Ret_address := Cputim_size'address; X X Itmlst( 6 ).Buf_len`09 := 4; X Itmlst( 6 ).Item_code := Starlet.Jpi_Diocnt; X Itmlst( 6 ).Buf_address := Diocnt'address; X Itmlst( 6 ).Ret_address := Diocnt_size'address; X X Itmlst( 7 ).Buf_len`09 := 4; X Itmlst( 7 ).Item_code := Starlet.Jpi_Diolm; X Itmlst( 7 ).Buf_address := Diolm'address; X Itmlst( 7 ).Ret_address := Diolm_size'address; X X Itmlst( 8 ).Buf_len`09 := Image_name'length; X Itmlst( 8 ).Item_code := Starlet.Jpi_Imagname; X Itmlst( 8 ).Buf_address := Image_name'address; X Itmlst( 8 ).Ret_address := Image_name_size'address; X X Itmlst( 9 ).Buf_len`09 := 4; X Itmlst( 9 ).Item_code := Starlet.Jpi_Jobtype; X Itmlst( 9 ).Buf_address := Jobtype'address; X Itmlst( 9 ).Ret_address := Jobtype_size'address; X X Itmlst( 10).buf_len`09 := 4; X Itmlst( 10).item_code := Starlet.Jpi_Mode; X Itmlst( 10).buf_address := Mode'address; X Itmlst( 10).ret_address := Mode_size'address; X X Itmlst( 11).buf_len`09 := 4; X Itmlst( 11).item_code := Starlet.Jpi_Pageflts; X Itmlst( 11).buf_address := Pageflts'address; X Itmlst( 11).ret_address := Pageflts_size'address; X X Itmlst( 12).buf_len`09 := 4; X Itmlst( 12).item_code := Starlet.Jpi_Pgflquota; X Itmlst( 12).buf_address := Pgflquota'address; X Itmlst( 12).ret_address := Pgflquota_size'address; X X Itmlst( 13 ).Buf_len`09 := Username'length; X Itmlst( 13 ).Item_code := Starlet.Jpi_Username; X Itmlst( 13 ).Buf_address := Username'address; X Itmlst( 13 ).Ret_address := Username_size'address; X X Itmlst( 14 ).Buf_len`09 := 4; X Itmlst( 14 ).Item_code := Starlet.Jpi_Wsextent; X Itmlst( 14 ).Buf_address := Wsextent'address; X Itmlst( 14 ).Ret_address := Wsextent_size'address; X X Itmlst( 15 ).Buf_len`09 := 4; X Itmlst( 15 ).Item_code := Starlet.Jpi_Dfwscnt; X Itmlst( 15 ).Buf_address := Dfwscnt'address; X Itmlst( 15 ).Ret_address := Dfwscnt_size'address; X X Itmlst( 16 ).Buf_len`09 := 4; X Itmlst( 16 ).Item_code := Starlet.Jpi_Wsquota; X Itmlst( 16 ).Buf_address := Wsquota'address; X Itmlst( 16 ).Ret_address := Wsquota_size'address; X X Itmlst( 17 ).Buf_len`09 := Terminal_name'length; X Itmlst( 17 ).Item_code := Starlet.Jpi_Terminal; X Itmlst( 17 ).Buf_address := Terminal_name'address; X Itmlst( 17 ).Ret_address := Terminal_name_size'address; X X Itmlst( 18 ).Buf_len`09 := 4; X Itmlst( 18 ).Item_code := Starlet.Jpi_Wssize; X Itmlst( 18 ).Buf_address := Wssize'address; X Itmlst( 18 ).Ret_address := Wssize_size'address; X X Itmlst( 19 ).Buf_len`09 := 4; X Itmlst( 19 ).Item_code := Starlet.Jpi_Freptecnt; X Itmlst( 19 ).Buf_address := Freptecnt'address; X Itmlst( 19 ).Ret_address := Freptecnt_size'address; X X Itmlst( 20 ).Buf_len`09 := 4; X Itmlst( 20 ).Item_code := Starlet.Jpi_State; X Itmlst( 20 ).Buf_address := State'address; X Itmlst( 20 ).Ret_address := State_size'address; X X Itmlst( 21 ).Buf_len`09 := 4; X Itmlst( 21 ).Item_code := Starlet.Jpi_Enqcnt; X Itmlst( 21 ).Buf_address := Enqcnt'address; X Itmlst( 21 ).Ret_address := Enqcnt_size'address; X X Itmlst( 22 ).Buf_len`09 := 4; X Itmlst( 22 ).Item_code := Starlet.Jpi_Enqlm; X Itmlst( 22 ).Buf_address := Enqlm'address; X Itmlst( 22 ).Ret_address := Enqlm_size'address; X X Itmlst( 23 ).Buf_len`09 := 4; X Itmlst( 23 ).Item_code := Starlet.Jpi_Ppgcnt; X Itmlst( 23 ).Buf_address := Ppgcnt'address; X Itmlst( 23 ).Ret_address := Ppgcnt_size'address; X X Itmlst( 24 ).Buf_len`09 := 4; X Itmlst( 24 ).Item_code := Starlet.Jpi_Gpgcnt; X Itmlst( 24 ).Buf_address := Gpgcnt'address; X Itmlst( 24 ).Ret_address := Gpgcnt_size'address; X X Itmlst( 25 ).Buf_len`09 := 8; --Quadword X Itmlst( 25 ).Item_code := Starlet.Jpi_Logintim; X Itmlst( 25 ).Buf_address := Timadr'address; X Itmlst( 25 ).Ret_address := Timadr_size'address; X X Itmlst( 26 ).Buf_len`09 := 4; X Itmlst( 26 ).Item_code := Starlet.Jpi_Pri; X Itmlst( 26 ).Buf_address := Pri'address; X Itmlst( 26 ).Ret_address := Pri_size'address; X X Itmlst( 27 ).Buf_len`09 := 4; X Itmlst( 27 ).Item_code := Starlet.Jpi_Prib; X Itmlst( 27 ).Buf_address := Prib'address; X Itmlst( 27 ).Ret_address := Prib_size'address; X X Itmlst( 28 ).Buf_len`09 := 4; X Itmlst( 28 ).Item_code := Starlet.Jpi_Pagfilcnt; X Itmlst( 28 ).Buf_address := Pagfilcnt'address; X Itmlst( 28 ).Ret_address := Pagfilcnt_size'address; X X Itmlst( 29 ).Buf_len`09 := 4; X Itmlst( 29 ).Item_code := Starlet.Jpi_Filcnt; X Itmlst( 29 ).Buf_address := Filcnt'address; X Itmlst( 29 ).Ret_address := Filcnt_size'address; X X Itmlst( 30 ).Buf_len`09 := 4; X Itmlst( 30 ).Item_code := Starlet.Jpi_Fillm; X Itmlst( 30 ).Buf_address := Fillm'address; X Itmlst( 30 ).Ret_address := Fillm_size'address; X X Itmlst( 31 ).Buf_len`09 := 4; X Itmlst( 31 ).Item_code := Starlet.Jpi_Virtpeak; X Itmlst( 31 ).Buf_address := Virtpeak'address; X Itmlst( 31 ).Ret_address := Virtpeak_size'address; X X Itmlst( 32 ).Buf_len`09 := 4; X Itmlst( 32 ).Item_code := Starlet.Jpi_Pid; X Itmlst( 32 ).Buf_address := Pid'address; X Itmlst( 32 ).Ret_address := Pid_size'address; X X Itmlst( 33 ).Buf_len`09 := 4; X Itmlst( 33 ).Item_code := Starlet.Jpi_Bytcnt; X Itmlst( 33 ).Buf_address := Bytcnt'address; X Itmlst( 33 ).Ret_address := Bytcnt_size'address; X X Itmlst( 34 ).Buf_len`09 := 4; X Itmlst( 34 ).Item_code := Starlet.Jpi_Bytlm; X Itmlst( 34 ).Buf_address := Bytlm'address; X Itmlst( 34 ).Ret_address := Bytlm_size'address; X X Put_Line( Nosee_Cur & Home & Cls );`09--turn off cursor and home position X X loop X put( home );`09`09`09--home cursor X X Starlet.Gettim( Status, Timadr );`09--Get Time X Starlet.Asctim( Status => Status, X`09`09 Timlen => Timlen, X`09`09 Timbuf => Timbuf, X`09`09 Timadr => Timadr); X Put( Timbuf( 1..integer( Timlen-3 ) ) ); X Put_line( Eeol );`09`09`09--erase to end of line X New_line; X X Starlet.GetJpiw ( Status => Status, --Get Process Information X`09`09 Pidadr => Pidadr, X`09`09 Itmlst => Itmlst, X`09`09 Iosb => Iosb); X X -- GetJpiw request must fail 3 times before giving up. X if not Condition_Handling.Success( Status ) then X Error_Cnt := Error_Cnt + 1;`09`09--bump error count. X put_line( bell ); `09`09`09--ring vt bell for error X if Error_Cnt = 3 then X`09Put_Line( See_Cur );`09`09`09--turn vt cursor on X`09Starlet.Dassgn( Qio_Status, Channel );`09 --deassging vt channel X`09return Status;`09`09`09`09-- return bad status X end if; X else X Error_Cnt := 0; X end if; X X X if Error_Cnt = 0 then`09`09 --don't display if errors X for x in reverse Username'range loop X`09if Username(x) /= ' ' then X`09 Put( "Username: " & Username(1..x) ); X`09 exit; X`09end if; X end loop; X PUT(" Process: " & Process_Name(1.. integer( Process_Name_Size))); X X --convert long to hex string X Ots.Cvt_L_Tz( status`09`09`09 => status, X`09`09 varying_input_value `09 => PID, X`09`09 fixed_length_resultant_string => whole_PID_string, X`09`09 number_of_digits`09`09 => whole_PID_string'length, X`09`09 input_value_size`09`09 => 4); -- bytes in X Put(" PID: " & Whole_Pid_String); X if Terminal_Name_Size > 0 then X`09Put(" Terminal: " & Terminal_Name(1..integer( Terminal_Name_Size))); X end if; X X Put_Line( Eeol ); X Put("Job Type: " & Jobtype_Desc( Jobtype )); X Put(" Mode: " & Jobmode_Desc( Mode )); X X Asctim( Status => Status, X`09 Timlen => Timlen, X`09 Timbuf => Timbuf, X`09 Timadr => Timadr); X Put(" Login: " & Timbuf( 1.. integer( Timlen))); X Put_Line( Eeol ); X X New_Line; X X if Image_Name_Size > 0 then X`09Put("Image: " & File_Name(Image_Name( 1..integer( Image_Name_Size)))); X else X`09Put("Image: *None*"); X end if; X Put_Line( Eeol ); X X new_line; X X X Put("Free PTE Count: " & Integer_Image( freptecnt)); X Put(" State: " & State_Desc( State)); X Put(" CPU Time: " & Integer_Image( Cputim) ); X Put(" Priority/Base: " & Integer_Image( Pri ) & "/" & X`09`09`09`09`09`09 Integer_Image( prib )); X put_line( eeol ); X X new_line; X X Put("BIO Count/Limit: " & Integer_Image( Biolm-Biocnt) & "/" & X`09`09`09`09`09 Integer_Image( biolm)); X Put(" BUF IO Operations: " & Integer_Image( bufio) ); X Put(" DIO Count/Limit: " & Integer_Image( Diolm-Diocnt) & "/" & X`09`09`09`09`09 Integer_Image( Diolm)); X Put_Line( eeol ); X Put("Enq Count/Limit: " & Integer_Image( Enqlm-Enqcnt) & "/" & X`09`09`09`09`09 Integer_Image( Enqlm)); X Put_Line( eeol ); X Put("File Count/Limit: " & Integer_Image( Fillm-filcnt) & "/" & X`09`09`09`09`09 Integer_Image( fillm)); X Put(" Buffered Byte Count/Limit: " & X`09 Integer_Image( Bytlm-Bytcnt) & "/" & Integer_Image( Bytlm)); X Put_Line( eeol ); X X new_line; X X Put("Page Faults: " & Integer_Image( pageflts)); X Put(" Virtural Peak: " & Integer_Image( virtpeak)); X Put_Line( eeol ); X Put("Page File Count/Quota: " & Integer_Image( pagfilcnt) & "/" & X`09`09`09`09 Integer_Image( pgflquota ) ); X Put(" Page File Used: " & Integer_Image( pgflquota-pagfilcnt) ); X Put_Line( eeol ); X X Put("WS Size: " & Integer_Image( wssize)); X Put(" WS Default: " & Integer_Image( dfwscnt)); X Put(" WS Quota: " & Integer_Image( wsquota)); X Put(" WS Extent: " & Integer_Image( wsextent)); X Put_Line( eeol ); X X Put("Total Page Count: " & Integer_Image( Ppgcnt + Gpgcnt)); X Put(" Process Page Count: " & Integer_Image( Ppgcnt)); X Put(" Global Page Count: " & Integer_Image( Gpgcnt)); X Put_Line( eeol ); X end if; X X X --wait up to two seconds for any Input. X Starlet.Qiow ( Status => Status, X`09`09 Chan => Channel, X`09`09 Func => System.Unsigned_Word( Starlet.Io_Readvblk + X`09`09`09`09`09`09 Starlet.Io_M_Timed ), X`09`09 iosb => Iosb, X`09`09 P1 => X`09`09`09 System.To_Unsigned_Longword( Qio_Buffer'Address), X`09`09 P2 => 1,`09`09 --read 1 character X`09`09 P3 => 2 );`09`09 --Seconds to wait X X exit when Iosb.Status /= Ss_Timeout;`09 --Exit when key pressed X end loop; X X Starlet.Dassgn ( Qio_Status, Channel); X Put_Line( See_Cur );`09`09`09`09--turn cursor on X return Status;`09`09`09`09--return to VMS Xend; $ CALL UNPACK WATCH.VAX;1 1896383727 $ v=f$verify(v) $ EXIT