$! ------------------ CUT HERE ----------------------- $ v='f$verify(f$trnlnm("SHARE_UNPACK_VERIFY"))' $! $! This archive created by VMS_SHARE Version 8.2 $! On 5-FEB-1993 14:31:38.49 By user GOATHUNTER (@WKUVX1.BITNET) $! $! The VMS_SHARE software that created this archive $! was written by Andy Harper, Kings College London UK $! -- December 1992 $! $! Credit is due to these people for their original ideas: $! James Gray, Michael Bednarek $! $! 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. CSPY.DESC;1 $! 2. CSPY.FOR;1 $! 3. SMG_STUFF.INC;1 $! $set="set" $set symbol/scope=(nolocal,noglobal) $f=f$parse("SHARE_UNPACK_TEMP","SYS$SCRATCH:."+f$getjpi("","PID")) $e="write sys$error ""%UNPACK"", " $w="write sys$output ""%UNPACK"", " $ if .not. f$trnlnm("SHARE_UNPACK_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, P3=attributes $ 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: $ x=f$search(P1) $ if x .eqs. "" then $ goto file_absent $ e "-W-EXISTS, File ''P1' exists. Skipped" $ delete 'f'* $ exit $file_absent: $ w "-I-UNPACK, Unpacking file ", P1 $ n=P1 $ if P3 .nes. "" then $ n=f $ if .not. f$verify() then $ define/user sys$output nl: $ EDIT/TPU/NOSEC/NODIS/COM=SYS$INPUT 'f'/OUT='n' PROCEDURE GetHex(s,p)LOCAL x1,x2;x1:=INDEX(t,SUBSTR(s,p,1))-1;x2:=INDEX(t, SUBSTR(s,p+1,1))-1;RETURN 16*x1+x2;ENDPROCEDURE; PROCEDURE SkipPartsep LOOP EXITIF MARK(NONE)=END_OF(b);EXITIF INDEX(ERASE_LINE, "-+-+-+-+-+-+-+-+")=1;ENDLOOP;ENDPROCEDURE;PROCEDURE ProcessLine LOCAL c,s,l,b, n,p;c := ERASE_CHARACTER(1);s := ERASE_LINE;IF c = "X" THEN SPLIT_LINE; ENDIF; MOVE_HORIZONTAL(-1);l := LENGTH(s);p := 1;LOOP EXITIF p > l;c := SUBSTR(s,p,1); p := p+1;CASE c FROM ' ' TO '`' ['`']: COPY_TEXT(ASCII(GetHex(s,p))); p:=p+2;[ ' ']: p:=p+1;[INRANGE,OUTRANGE]: COPY_TEXT(c);ENDCASE;ENDLOOP;ENDPROCEDURE; PROCEDURE Decode POSITION(BEGINNING_OF(b));LOOP EXITIF MARK(NONE)=END_OF(b); IF INDEX(CURRENT_LINE,"+-+-+-+-+-+-+-+-")=1 THEN SkipPartSep;ELSE ProcessLine; MOVE_HORIZONTAL(1);ENDIF;ENDLOOP;ENDPROCEDURE;SET(FACILITY_NAME,"UNPACK");SET( SUCCESS,OFF);SET(INFORMATIONAL,OFF);t:="0123456789ABCDEF";f:=GET_INFO( COMMAND_LINE,"file_name");b:=CREATE_BUFFER(f,f);Decode;WRITE_FILE(b,GET_INFO( COMMAND_LINE,"output_file"));QUIT; $ if p3 .eqs. "" then $ goto dl $ open/write fdl &f $ write fdl "RECORD" $ write fdl P3 $ close fdl $ w "-I-CONVRFM, Converting record format to ", P3 $ convert/fdl=&f &f-1 &P1 $dl: delete 'f'* $ checksum 'P1' $ if checksum$checksum .nes. P2 then $ - e "-E-CHKSMFAIL, Checksum of ''P1' failed." $ exit $ endsubroutine $start: $! $ create 'f' XThis`20file`20features`20code`20previously`20published`20in`20the`20January/Fe Vbruary`201993`20 Xissue`20of`20Digital`20Systems`20Journal.`20Originally`20run`20as`20part`20of V`20J.`20Wren`20Hunt's Xarticle,`20"CSPY:`20A`20Clusterwide`20SPY`20Utility"`20which`20ran`20on`20page V`2027,`20the`20program Xhere`20was`20written`20to`20perform`20the`20$SHOW`20PROCESS/CONTINUOUS/ID=pid V`20over`20a Xdifferent`20cluster`20node. $ call unpack CSPY.DESC;1 406716973 "" $! $ create 'f' X`09Program`20Cspy XC********************************************************************* XC* XC*`20`20PROGRAM:`20Cspy`20(Cluster`20SPY) XC* XC* XC*`20`20PURPOSE:`20VMS`20currently`20will`20not`20let`20you`20do`20a`20Spy`20( V$`20SHOW`20PROC/CONT/ID=) XC*`09`20`20`20`20`20over`20a`20different`20cluster`20node.`20CSpy`20(Cluster-w Vide`20Spy)`20was`20written XC*`09`20`20`20`20`20to`20allow`20just`20that. XC* XC* XC*`20`20OPERATION:`20CSPY`20remote_pid XC* XC* XC*`20`20ENVIRONMENT:`09VAX`20VMS`20V5.2 XC*`20`20`09`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20VAX`20Fortran`205.3 V XC* XC*`20`20RESTRICTIONS:`20`20Must`20have`20standard`20SPY`20privileges`20(GROUP V`20and/or`20WORLD). XC*`09`20`20`20`20`20`20`20`20`20`20`20Define`20CSPY`20as`20a`20foreign`20symbo Vl`20 XC*`09`09`20`20`20(i.e.,`20CSPY`20==`20"$directory:CSPY") XC* XC* XC*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20`20Information`20America XC*`09`09`09`20`20`20`20`20`20`20Systems`20Department XC*`09`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 V`20J.`20Wren`20Hunt XC*`09`09`09`20`20`20`20`20`20`20February`203,`201990 XC* XC*`20`20MODIFICATION`20HISTORY: XC* XC* XC********************************************************************** X X`09implicit`20none X X`09include`20'($jpidef)' X`09include`20'($pscandef)'`09`20`20`20`20 X X`09include`20'SMG_Stuff.inc' X X X XC++++++++++++++++++++ XC XC`20External`20Routines XC XC++++++++++++++++++++ X X X`09integer*4`20`20`20sys$process_scan,sys$getjpi,sys$getjpiw,lib$get_foreign, X`20`20`20`20`201`09`09`20`20`20`20`20`20ots$cvt_tz_l,ots$cvt_l_tu,sys$idtoasc X X XC+++++++++++++++++++++ XC XC`20Local/global`20variables XC XC++++++++++++++++++++++ X X`09logical`09`20`20`20`20show_screen,SDA_screen X X`09integer*2`20`20`20iosb(4),nodename_len,prcnam_len,imagname_len,pid_len, X`20`20`20`20`201`09`09`20`20`20`20terminator,namlen,upper_e,lower_e,upper_v,lo Vwer_v,ptr,space X`09integer*2`20`20`20resid(2),grpid(2),memlen,grplen,holder(2) X X`09integer*4`20`20`20ots$cvt_l_tz,group,res X X`09integer*4`20`20`20context,jpiflags,numeric_pid,decimal,i,str$upcase, X`20`20`20`20`201`09`09`20`20`20`20`20`20jpi_pid,jpi_bufio,jpi_dirio,jpi_cputim V,jpi_pageflts, X`20`20`20`20`202`09`09`20`20`20`20`20`20jpi_pri,jpi_prib,jpi_uic,jpi_uaf_flags V,jpi_virtpeak, X`20`20`20`20`203`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20jpi_wssize,jpi V_state,seconds,minutes,hours,days, X`20`20`20`20`204`09`09`20`20`20`20`20`20jpi_astact,jpi_astcnt,jpi_asten,jpi_as Vtlm,jpi_efcs, X`20`20`20`20`205`09`09`20`20`20`20`20`20jpi_efcu,jpi_efwm,jpi_enqcnt,jpi_enqlm V,jpi_filcnt, X`20`20`20`20`206`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20jpi_fillm,jpi_ Vgpgcnt,jpi_jobprccnt,jpi_logintim, X`20`20`20`20`207`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20jpi_tmbu,jpi_t Vqcnt,jpi_tqlm,jpi_sts,jpi_proc_index, X`20`20`20`20`208`09`09`20`20`20`20`20`20jpi_master_pid,jpi_biocnt,jpi_biolm,jp Vi_diocnt, X`20`20`20`20`209`09`20`20`20`20`20`20`20`20`20`20`20`20`20`20jpi_diolm,jpi_apt Vcnt,jpi_bytcnt,jpi_bytlm X X X`09integer*4`09`20`20`20`20`20milliseconds X X`09character*2`09tpri,tprib,tseconds,tminutes,thours,tdays,tmilliseconds X`09character*4`09tasten,tastact,tastcnt,tbiocnt,tbiolm,tdiocnt,tdiolm, X`20`20`20`20`201`09`09`20`20`20`20`20`20`20`20tbytcnt,tbytlm,tfilcnt,t_tqcnt X X`09character*8`09tstate,twssize,tvirtpeak,tbufio,tdirio,tsts,t_efcs, X`20`20`20`20`201`09`09`20`20`20`20`20`20`20`20tcputim,tpageflts,tproc_index,t_ Vefcu,t_efwm,taptcnt,`20 X`20`20`20`20`202`09`09`09tjobprccnt,tmaster_pid,tmbu X X X`09character*16`09prcnam,nodename,pid,cpu_time X`09character*30`09line X`09character*80`09imagname,text,nambuf X`09character*255`09mem,grp X X`09equivalence`20(group,grpid),`20(res,resid) X`09 X`09structure`20/item_list/ X`09`20`20`20`20integer*2`09buflen X`09`20`20`20`20integer*2`09item_code X`09`20`20`20`20integer*4`09bufadr X`09`20`20`20`20integer*4`09retlen X`09end`20structure X X X`09structure`20/pscan_list/ X`09`20`20`20`20integer*2`09buflen X`09`20`20`20`20integer*2`09item_code X`09`20`20`20`20integer*4`09bufadr X`09`20`20`20`20integer*4`09itmflags X`09end`20structure X X X`09record`20/item_list/`20itmlst(50) X`09record`20/pscan_list/`20pscanlst(10) X X`09integer*4`20`20`20sch$c_cef,sch$c_com,sch$c_como,sch$c_cur,sch$c_colpg, X`20`20`20`20`201`09`09`20`20`20`20sch$c_fpg,sch$c_hib,sch$c_hibo,sch$c_lef,sch V$c_lefo, X`20`20`20`20`202`09`09`20`20`20`20sch$c_mwait,sch$c_pfw,sch$c_susp,sch$c_suspo V X X`09PARAMETER`09(SCH$C_COLPG`20=`091) X`09PARAMETER`09(SCH$C_MWAIT`20=`092) X`09PARAMETER`09(SCH$C_CEF`20`20`20=`093) X`09PARAMETER`09(SCH$C_PFW`20`20`20=`094) X`09PARAMETER`09(SCH$C_LEF`20`20`20=`095) X`09PARAMETER`09(SCH$C_LEFO`20`20=`096) X`09PARAMETER`09(SCH$C_HIB`20`20`20=`097) X`09PARAMETER`09(SCH$C_HIBO`20`20=`098) X`09PARAMETER`09(SCH$C_SUSP`20`20=`099) X`09PARAMETER`09(SCH$C_SUSPO`20=`0910) X`09PARAMETER`09(SCH$C_FPG`20`20`20=`0911) X`09PARAMETER`09(SCH$C_COM`20`20`20=`0912) X`09PARAMETER`09(SCH$C_COMO`20`20=`0913) X`09PARAMETER`09(SCH$C_CUR`20`20`20=`0914) X X`09Upper_E`20=`2069 X`09Lower_E`20=`20101 X X`09Upper_V`20=`2086 X`09Lower_V`20=`20118 X X`09Space`20=`2032 X X XC*********************************************************** XC XC`20`20M`20A`20I`20N`20L`20I`20N`20E`20`20`20`20`20C`20O`20D`20E`20`20`20`20 V`20S`20T`20A`20R`20T`20S`20`20`20`20`20H`20E`20R`20E XC XC*********************************************************** X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 V`20 X XC`20Setup`20the`20SMG`20stuff`20so`20we`20can`20have`20a`20right-nice`20lookin V'`20display! X X`09Call`20SMG_Setup X XC`20See`20which`20remote`20PID`20the`20user`20specified`20on`20the`20command V`20line X`20 X`09sts$value`20=`20lib$get_foreign(pid,,pid_len) X`09if`20(.not.`20sts$value)`20call`20lib$signal(%val(sts$value)) X X XC`09Convert`20hexadecimal`20text`20to`20unsigned`20integer.`20Size`20is`204 V`20bytes X X`09sts$value`20=`20ots$cvt_tz_l(pid(1:pid_len),numeric_pid,%val(4)) X`09if`20(.not.`20sts$value)`20call`20lib$signal(%val(sts$value)) X X X XC`09Initialize`20item`20list`20for`20$PROCESS_SCAN X X`09pscanlst(1).buflen`20=`200`09`20`20`20`20`20`20!`20Specify`20cluster`20id V`20<>`200`20gives`20all`20nodes X`09pscanlst(1).item_code`20=`20pscan$_node_csid X`09pscanlst(1).bufadr`20=`200 X`09pscanlst(1).itmflags`20=`20pscan$m_neq X X`09pscanlst(2).buflen`20=`200 X`09pscanlst(2).item_code`20=`20PSCAN$_master_pid X`09pscanlst(2).bufadr`20=`20numeric_pid X`09pscanlst(2).itmflags`20=`20pscan$m_eql X X`09pscanlst(3).buflen`20=`200 X`09pscanlst(3).item_code`20=`200 X X XC`20Clear`20out`20all`20the`20$GETJPI`20control`20flags`20'cause`20we're`20gon Vna`20specify XC`20some`20of`20'em`20in`20a`20minute. X X X`09itmlst(1).buflen`20=`204 X`09itmlst(1).item_code`20=`20iand('ffff'x,`20jpi$_getjpi_control_flags) X`09itmlst(1).bufadr`20=`20%loc(jpiflags) X`09itmlst(1).retlen`20=`200 X X`09itmlst(2).buflen`20=`20len(nodename) X`09itmlst(2).item_code`20=`20jpi$_nodename X`09itmlst(2).bufadr`20=`20%loc(nodename) X`09itmlst(2).retlen`20=`20%loc(nodename_len) X X`09itmlst(3).buflen`20=`20len(imagname) X`09itmlst(3).item_code`20=`20jpi$_imagname X`09itmlst(3).bufadr`20=`20%loc(imagname) X`09itmlst(3).retlen`20=`20%loc(imagname_len) X X`09itmlst(4).buflen`20=`20len(prcnam) X`09itmlst(4).item_code`20=`20jpi$_prcnam X`09itmlst(4).bufadr`20=`20%loc(prcnam) X`09itmlst(4).retlen`20=`20%loc(prcnam_len) X X`09itmlst(5).buflen`20=`204 X`09itmlst(5).item_code`20=`20jpi$_pid X`09itmlst(5).bufadr`20=`20%loc(jpi_pid) X`09itmlst(5).retlen`20=`200 X`20`20`20 X`09itmlst(6).buflen`20=`204 X`09itmlst(6).item_code`20=`20jpi$_bufio X`09itmlst(6).bufadr`20=`20%loc(jpi_bufio) X`09itmlst(6).retlen`20=`200 X X`09itmlst(7).buflen`20=`204 X`09itmlst(7).item_code`20=`20jpi$_cputim X`09itmlst(7).bufadr`20=`20%loc(jpi_cputim) X`09itmlst(7).retlen`20=`200 X X`09itmlst(8).buflen`20=`204 X`09itmlst(8).item_code`20=`20jpi$_dirio X`09itmlst(8).bufadr`20=`20%loc(jpi_dirio) X`09itmlst(8).retlen`20=`200 X X`09itmlst(9).buflen`20=`204 X`09itmlst(9).item_code`20=`20jpi$_pageflts`20 X`09itmlst(9).bufadr`20=`20%loc(jpi_pageflts) X`09itmlst(9).retlen`20=`200 X X`09itmlst(10).buflen`20=`204 X`09itmlst(10).item_code`20=`20jpi$_pri X`09itmlst(10).bufadr`20=`20%loc(jpi_pri) X`09itmlst(10).retlen`20=`200 X X`09itmlst(11).buflen`20=`204 X`09itmlst(11).item_code`20=`20jpi$_prib X`09itmlst(11).bufadr`20=`20%loc(jpi_prib) X`09itmlst(11).retlen`20=`200 X X`09itmlst(12).buflen`20=`204 X`09itmlst(12).item_code`20=`20jpi$_uic X`09itmlst(12).bufadr`20=`20%loc(jpi_uic) X`09itmlst(12).retlen`20=`200 X X`09itmlst(13).buflen`20=`204 X`09itmlst(13).item_code`20=`20jpi$_uaf_flags`20`20 X`09itmlst(13).bufadr`20=`20%loc(jpi_uaf_flags) X`09itmlst(13).retlen`20=`200 X X`09itmlst(14).buflen`20=`204 X`09itmlst(14).item_code`20=`20jpi$_virtpeak X`09itmlst(14).bufadr`20=`20%loc(jpi_virtpeak) X`09itmlst(14).retlen`20=`200 X X`09itmlst(15).buflen`20=`204 X`09itmlst(15).item_code`20=`20jpi$_wssize X`09itmlst(15).bufadr`20=`20%loc(jpi_wssize) X`09itmlst(15).retlen`20=`200 X X`09itmlst(16).buflen`20=`204 X`09itmlst(16).item_code`20=`20jpi$_state X`09itmlst(16).bufadr`20=`20%loc(jpi_state) X`09itmlst(16).retlen`20=`200 X X`09itmlst(17).buflen`20=`204 X`09itmlst(17).item_code`20=`20jpi$_astact`20`20!`20access`20modes`20having`20a Vctive`20ASTs X`09itmlst(17).bufadr`20=`20%loc(jpi_astact) X`09itmlst(17).retlen`20=`200 X X`09itmlst(18).buflen`20=`204 X`09itmlst(18).item_code`20=`20jpi$_astcnt`20`20!`20count`20of`20remaining`20AS VT`20quota X`09itmlst(18).bufadr`20=`20%loc(jpi_astcnt) X`09itmlst(18).retlen`20=`200 X X`09itmlst(19).buflen`20=`204 X`09itmlst(19).item_code`20=`20jpi$_asten`20`20!`20access`20modes`20having`20AS VTs`20enabled X`09itmlst(19).bufadr`20=`20%loc(jpi_asten) X`09itmlst(19).retlen`20=`200 X X`09itmlst(20).buflen`20=`204 X`09itmlst(20).item_code`20=`20jpi$_astlm X`09itmlst(20).bufadr`20=`20%loc(jpi_astlm) X`09itmlst(20).retlen`20=`200 X X`09itmlst(21).buflen`20=`204 X`09itmlst(21).item_code`20=`20jpi$_efcs`20`20`20`20!`20local`20event`20flags V`200`20-`2031 X`09itmlst(21).bufadr`20=`20%loc(jpi_efcs) X`09itmlst(21).retlen`20=`200 X X`09itmlst(22).buflen`20=`204 X`09itmlst(22).item_code`20=`20jpi$_efcu`20`20`20`20!`20local`20event`20flags V`2032`20-`2063 X`09itmlst(22).bufadr`20=`20%loc(jpi_efcu) X`09itmlst(22).retlen`20=`200 X X`09itmlst(23).buflen`20=`204 X`09itmlst(23).item_code`20=`20jpi$_efwm`20`20`20`20!`20process's`20event`20fla Vg`20wait`20mask X`09itmlst(23).bufadr`20=`20%loc(jpi_efwm) X`09itmlst(23).retlen`20=`200 X X`09itmlst(24).buflen`20=`204 X`09itmlst(24).item_code`20=`20jpi$_enqcnt`20`20!`20remaining`20lock`20request V`20quota X`09itmlst(24).bufadr`20=`20%loc(jpi_enqcnt) X`09itmlst(24).retlen`20=`200 X X`09itmlst(25).buflen`20=`204 X`09itmlst(25).item_code`20=`20jpi$_enqlm`20`20`20!`20process's`20lock`20reques Vt`20quota X`09itmlst(25).bufadr`20=`20%loc(jpi_enqlm) X`09itmlst(25).retlen`20=`200 X X`09itmlst(26).buflen`20=`204 X`09itmlst(26).item_code`20=`20jpi$_filcnt`20`20!`20process's`20remaining`20ope Vn`20file`20quota X`09itmlst(26).bufadr`20=`20%loc(jpi_filcnt) X`09itmlst(26).retlen`20=`200 X X`09itmlst(27).buflen`20=`204 X`09itmlst(27).item_code`20=`20jpi$_fillm`20`20`20!`20process's`20open`20file V`20limit`20quota X`09itmlst(27).bufadr`20=`20%loc(jpi_fillm) X`09itmlst(27).retlen`20=`200 X X`09itmlst(28).buflen`20=`204 X`09itmlst(28).item_code`20=`20jpi$_gpgcnt`20`20!`20global`20page`20count`20in V`20working`20set X`09itmlst(28).bufadr`20=`20%loc(jpi_gpgcnt) X`09itmlst(28).retlen`20=`200 X X`09itmlst(29).buflen`20=`204 X`09itmlst(29).item_code`20=`20jpi$_jobprccnt`09!`20total`20#`20subprocesses V`20owned X`09itmlst(29).bufadr`20=`20%loc(jpi_jobprccnt) X`09itmlst(29).retlen`20=`200 X X`09itmlst(30).buflen`20=`204 X`09itmlst(30).item_code`20=`20jpi$_logintim`09!`20time`20which`20process`20was V`20created X`09itmlst(30).bufadr`20=`20%loc(jpi_logintim) X`09itmlst(30).retlen`20=`200 X X`09itmlst(31).buflen`20=`204 X`09itmlst(31).item_code`20=`20jpi$_tmbu`20`20`20`20!`20termination`20mailbox V`20unit`20# X`09itmlst(31).bufadr`20=`20%loc(jpi_tmbu) X`09itmlst(31).retlen`20=`200 X X`09itmlst(32).buflen`20=`204 X`09itmlst(32).item_code`20=`20jpi$_tqcnt`20`20`20!`20remaining`20timer`20queue V`20entry`20quota X`09itmlst(32).bufadr`20=`20%loc(jpi_tqcnt) X`09itmlst(32).retlen`20=`200 X X`09itmlst(33).buflen`20=`204 X`09itmlst(33).item_code`20=`20jpi$_tqlm`20`20`20`20!`20limit`20on`20timer`20qu Veue`20entries X`09itmlst(33).bufadr`20=`20%loc(jpi_tqlm) X`09itmlst(33).retlen`20=`200 X X`09itmlst(34).buflen`20=`204 X`09itmlst(34).item_code`20=`20jpi$_sts`09`20`20`20`20!`20process's`20status V`20flags X`09itmlst(34).bufadr`20=`20%loc(jpi_sts) X`09itmlst(34).retlen`20=`200 X X`09itmlst(35).buflen`20=`204 X`09itmlst(35).item_code`20=`20jpi$_proc_index X`09itmlst(35).bufadr`20=`20%loc(jpi_proc_index) X`09itmlst(35).retlen`20=`200 X X`09itmlst(36).buflen`20=`204 X`09itmlst(36).item_code`20=`20jpi$_master_pid X`09itmlst(36).bufadr`20=`20%loc(jpi_master_pid) X`09itmlst(36).retlen`20=`200 X X`09itmlst(37).buflen`20=`204 X`09itmlst(37).item_code`20=`20jpi$_biocnt X`09itmlst(37).bufadr`20=`20%loc(jpi_biocnt) X`09itmlst(37).retlen`20=`200 X X`09itmlst(38).buflen`20=`204 X`09itmlst(38).item_code`20=`20jpi$_biolm X`09itmlst(38).bufadr`20=`20%loc(jpi_biolm) X`09itmlst(38).retlen`20=`200 X X`09itmlst(39).buflen`20=`204 X`09itmlst(39).item_code`20=`20jpi$_diocnt X`09itmlst(39).bufadr`20=`20%loc(jpi_diocnt) X`09itmlst(39).retlen`20=`200 X X`09itmlst(40).buflen`20=`204 X`09itmlst(40).item_code`20=`20jpi$_diolm X`09itmlst(40).bufadr`20=`20%loc(jpi_diolm) X`09itmlst(40).retlen`20=`200 X X`09itmlst(41).buflen`20=`204 X`09itmlst(41).item_code`20=`20jpi$_aptcnt X`09itmlst(41).bufadr`20=`20%loc(jpi_aptcnt) X`09itmlst(41).retlen`20=`200 X X`09itmlst(42).buflen`20=`200 X`09itmlst(42).item_code`20=`200 X X`20 X`20`20`20`20`20`20`20`20SDA_screen`20=`20.False. X`09show_screen`20=`20.True. X X`09jpiflags`20=`20jpi$m_no_target_inswap`20.or.`20jpi$m_ignore_target_status X X100`09sts$value`20=`20sys$process_scan(context,pscanlst) X`09if`20(.not.`20sts$value)`20call`20lib$signal(%val(sts$value)) X X XC`20`09Startup`20priming`20read X X X`09sts$value`20=`20sys$getjpiw(,context,,itmlst,iosb,,) X`09if`20(.not.`20sts$value)`20call`20lib$signal(%val(sts$value)) X`09if`20(.not.`20iosb(1))`20return`20`20`20!`20no`20more`20processes`20(nopriv V`20!?!?)`09 X`09sts$value`20=`20iosb(1) X X`20 X`09do`20while`20(sts$value) X XC`20`09`20`20`20`20If`20it`20matches`20then`20spill`20it`20out. X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 X`20`09`20`20`20`20if`20(numeric_pid`20.eq.`20jpi_pid)`20then X XC`20`09`09`20`20`20`20Convert`20UIC`20to`20identifier`20name X X`09`09`20`20`20`20sts$value`20=`20sys$idtoasc(%val(jpi_uic),namlen,nambuf,resi Vd,,) X`09`09`20`20`20`20if`20(.not.`20sts$value)`20call`20lib$signal(%val(sts$value) V) X`09`09`20 XC`20`20If`20the`20high`20order`20bit`20of`20the`20RESID`20argument`20is`20clea Vr,`20RESID`20contains XC`20`20a`20UIC`20in`20standard`20VMS`20syntax,`20i.e.`20the`20group`20is`20in V`20the`20high-order XC`20`20word`20and`20the`20member`20is`20in`20the`20low-order`20word.`20`20If V`20the`20high-order XC`20`20bit`20is`20set,`20then`20RESID`20contains`20an`20Identifier. X Xc`09`09`20`20`20`20if`20(bjtest`20(res,`2031))`20then XC`20`09`09`09Set`20up`20to`20translate`20the`20GROUP. X X`20`20`20`20`09`09`09grpid(2)`20=`20resid(2) X`20`20`20`20`20`20`09`09`09grpid(1)`20=`20'177777'o X`20`20`20`20`20`20`09`09`20`20`20`20`20`20`20`20sts$value`20=`20sys$idtoasc V`20(%val(group),`20grplen,`20grp,,,) X`09`09`09if`20(.not.`20sts$value)`20call`20lib$signal(%val(sts$value))`09 Xc`09`09`20`20`20`20end`20if X X`09`09if`20(show_screen)`20then X XC`09`09`20`20`20`20Convert`20all`20numeric`20values`20into`20text`20so`20that V`20SMG`20can`20 XC`09`09`20`20`20`20display`20them. X X`09`09`20`20`20`20sts$value`20=`20ots$cvt_l_tu(jpi_wssize,twssize) X`09`09`20`20`20`20if`20(.not.`20sts$value)`20call`20lib$signal(%val(sts$value) V) X X`09`09`20`20`20`20sts$value`20=`20ots$cvt_l_tu(jpi_pri,tpri) X`09`09`20`20`20`20if`20(.not.`20sts$value)`20call`20lib$signal(%val(sts$value) V) X X`09`09`20`20`20`20sts$value`20=`20ots$cvt_l_tu(jpi_prib,tprib) X`09`09`20`20`20`20if`20(.not.`20sts$value)`20call`20lib$signal(%val(sts$value) V) X X`09`09`20`20`20`20sts$value`20=`20ots$cvt_l_tu(jpi_virtpeak,tvirtpeak) X`09`09`20`20`20`20if`20(.not.`20sts$value)`20call`20lib$signal(%val(sts$value) V) X X`09`09`20`20`20`20sts$value`20=`20ots$cvt_l_tu(jpi_pageflts,tpageflts) X`09`09`20`20`20`20if`20(.not.`20sts$value)`20call`20lib$signal(%val(sts$value) V) X X`09`09`20`20`20`20sts$value`20=`20ots$cvt_l_tu(jpi_bufio,tbufio) X`09`09`20`20`20`20if`20(.not.`20sts$value)`20call`20lib$signal(%val(sts$value) V) X X`09`09`20`20`20`20sts$value`20=`20ots$cvt_l_tu(jpi_dirio,tdirio) X`09`09`20`20`20`20if`20(.not.`20sts$value)`20call`20lib$signal(%val(sts$value) V) X X X`09`09`20`20`20`20if`20(jpi_state`20.eq.`20sch$c_cef)`20tstate`20=`20'CEF' X`09`09`20`20`20`20if`20(jpi_state`20.eq.`20sch$c_com)`20tstate`20=`20'COM' X`09`09`20`20`20`20if`20(jpi_state`20.eq.`20sch$c_cur)`20tstate`20=`20'CUR' X`09`09`20`20`20`20if`20(jpi_state`20.eq.`20sch$c_colpg)`20tstate`20=`20'COLPG' V X`09`09`20`20`20`20if`20(jpi_state`20.eq.`20sch$c_fpg)`20tstate`20=`20'FPG' X`09`09`20`20`20`20if`20(jpi_state`20.eq.`20sch$c_hib)`20tstate`20=`20'HIB' X`09`09`20`20`20`20if`20(jpi_state`20.eq.`20sch$c_lef)`20tstate`20=`20'LEF' X`09`09`20`20`20`20if`20(jpi_state`20.eq.`20sch$c_mwait)`20tstate`20=`20'MWAIT' V X`09`09`20`20`20`20if`20(jpi_state`20.eq.`20sch$c_pfw)`20tstate`20=`20'PFW' X`09`09`20`20`20`20if`20(jpi_state`20.eq.`20sch$c_susp)`20tstate`20=`20'SUSP' X X`20`20`20`20`20`20`09`09`20`20`20`20text`20=`20'Process`20'`20//`20prcnam(1:pr Vcnam_len) X`09`09`20`20`20`20sts$value`20=`20smg$put_chars(contents_id,text,1,31) X X`09`09`20`20`20`20text`20=`20'Node:`20'`20//`20nodename(1:nodename_len) X`09`09`20`20`20`20sts$value`20=`20smg$put_chars(contents_id,text,2,31) X X`09 X`09`09`20`20`20`20text`20=`20'State`20`20`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20`20'`20//`20tstate`20//`20 X`20`20`20`20`201`09`09`09`20`20'`20`20`20`20`20`20`20`20`20`20`20Working`20Set V`20`20`20'`20//`20twssize X`09`09`20`20`20`20sts$value`20=`20smg$put_chars(contents_id,text,5,2) X X`09`09`20`20`20`20text`20=`20'Cur/Base`20Priority`20`20`20`20'`20//`20tpri`20/ V/`20'/'`20//`20tprib`20//`20 X`20`20`20`20`201`09`09`20`20`20`20`20`20'`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20`20Virtual`20Pages`20'`20//`20tvirtpeak X`09`09`20`20`20`20sts$value`20=`20smg$put_chars(contents_id,text,7,2) X X`09`09`20`20`20`20milliseconds`20=`20mod(jpi_cputim,100) X X`09`09`20`20`20`20seconds`20=`20(jpi_cputim)`20/`20100 X X`09`09if`20(seconds`20.ge.`2086400)`20then`09`20`20`20`20!`20#`20seconds`20per V`20day X`09`09`20`20`20`20days`20=`20seconds`20/`2086400 X`09`09`20`20`20`20seconds`20=`20mod(seconds,86400) X`09`09end`20if X X`09`09if`20(seconds`20.ge.`203600)`20then`09`20`20`20`20!`20#`20seconds`20per V`20hour X`09`09`20`20`20`20hours`20=`20seconds`20/`203600 X`09`09`20`20`20`20seconds`20=`20mod(seconds,3600) X`09`09end`20if X`09 X`09`09if`20(seconds`20.ge.`2060)`20then`09`20`20`20`20!`20#`20seconds`20per V`20minute X`09`09`20`20`20`20minutes`20=`20seconds`20/`2060 X`09`09`20`20`20`20seconds`20=`20mod(seconds,60) X`09`09end`20if X`09 X`09 X`09`09sts$value`20=`20ots$cvt_l_tu(milliseconds,tmilliseconds) X`09`09if`20(.not.`20sts$value)`20call`20lib$signal(%val(sts$value)) X`09 X`09`09sts$value`20=`20ots$cvt_l_tu(seconds,tseconds) X`09`09if`20(.not.`20sts$value)`20call`20lib$signal(%val(sts$value)) X`09 X`09`09sts$value`20=`20ots$cvt_l_tu(minutes,tminutes) X`09`09if`20(.not.`20sts$value)`20call`20lib$signal(%val(sts$value)) X`09 X`09`09sts$value`20=`20ots$cvt_l_tu(hours,thours) X`09`09if`20(.not.`20sts$value)`20call`20lib$signal(%val(sts$value)) X`09 X`09`09sts$value`20=`20ots$cvt_l_tu(days,tdays) X`09`09if`20(.not.`20sts$value)`20call`20lib$signal(%val(sts$value)) X`09`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 X`09`09cpu_time`20=`20tdays`20//`20':'`20//`20thours`20//`20':'`20//`20tminutes V`20//`20':'`20//`20 X`20`20`20`20`201`09`20`20`20`20`20`20`20`20`20`20`20tseconds`20//`20'.'`20// V`20tmilliseconds X`09 XC`09`09Filter`20out`20intervening`20blanks`20in`20the`20cpu`20time X`09 X`09`09Call`20Remove_blanks(cpu_time) X`09 X`09`09text`20=`20'CPU`20Time:`20`20`20`20`20'`20//`20cpu_time X`09`09`09`20sts$value`20=`20smg$put_chars(contents_id,text,9,2) X`09 X`09 X`09`09text`20=`20'Direct`20I/O`20`20`20`20`20`20`20`20'`20//`20tdirio`20//`20' V`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20Buffered`20I/O`20'`20//`20tbufio X`09`09`20sts$value`20=`20smg$put_chars(contents_id,text,11,2) X X`09`09`20`20`20text`20=`20'PID`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20' V`20//`20pid`20//`20'`20`20`20`20`20`20`20Page`20Faults`20`20'`20//`20tpageflts V X`09`09`20sts$value`20=`20smg$put_chars(contents_id,text,13,2) X X`09`09text`20=`20'UIC`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`5B'`20// V`20grp(1:grplen)`20//`20','`20//`20 X`20`20`20`20`201`09`09`09`09`09`20`20nambuf(1:namlen)`20//`20'`5D' X X`09`09`20sts$value`20=`20smg$put_chars(contents_id,text,15,2) X X`09`09`20if`20(imagname_len`20.gt.`200)`20then X`09`09`20sts$value`20=`20smg$put_chars(contents_id,imagname(1:imagname_len), X`20`20`20`20`201`09`09`09`09`09`20`20`20`20`20`2019,2) X`09`09`20end`20if`09`20`20`20`20 X`09`20`20`20`20 X X`09`09end`20if`20!`20screen`20flag X X Xc`09`09******************************************************* X X`09`09if`20(sda_screen)`20then X Xc`09`09`20`20`20`20Start`20display`20batching X X`09`09`20`20`20`20sts$value`20=`20smg$begin_display_update(contents_id) X`09`09`20`20`20`20if`20(.not.`20sts$value)`20call`20lib$signal(%val(sts$value) V) X`09`09`20`20`20`20 X`09`09`20`20`20`20sts$value`20=`20ots$cvt_l_tu(jpi_proc_index,tproc_index)`20! V`20convert`20to`20text`20format X X`09`09`20`20`20`20text`20=`20'Process`20index:'`20//`20tproc_index X`09`09`20`20`20`20sts$value`20=`20smg$put_chars(contents_id,text,1,2) X`09 X`09`09`20`20`20`20text`20=`20'Name:`20'`20//`20prcnam(1:prcnam_len) X`09`09`20`20`20`20sts$value`20=`20smg$put_chars(contents_id,text,1,26) X`09 X`09`09`20`20`20`20text`20=`20'Extended`20PID:`20'`20//`20pid X`09`09`20`20`20`20sts$value`20=`20smg$put_chars(contents_id,text,1,50) X`09`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 X`09 XC`20$PCBDEF`20not`20included`20in`20FORSYSDEF.TLB X X`09`09`20`20`20`20Ptr`20=`204`09 X`09`09`20`20`20`20line`20=`20'`20' X`09 X`09`09`20`20`20`20if`20(bjtest(jpi_sts,17))`20call`20build_status_line(ptr,lin Ve,'ASTPEN') X`09`09`20`20`20`20if`20(bjtest(jpi_sts,14))`20call`20build_status_line(ptr,lin Ve,'BATCH`20') X`09`09`20`20`20`20if`20(bjtest(jpi_sts,1`20))`20call`20build_status_line(ptr,l Vine,'DELPEN') X`09`09`20`20`20`20if`20(bjtest(jpi_sts,24))`20call`20build_status_line(ptr,lin Ve,'DISAWS') X`09`09`20`20`20`20if`20(bjtest(jpi_sts,2`20))`20call`20build_status_line(ptr,l Vine,'FORCPEN') X`09`09`20`20`20`20if`20(bjtest(jpi_sts,19))`20call`20build_status_line(ptr,lin Ve,'HIBER`20') X`09`09`20`20`20`20if`20(bjtest(jpi_sts,3`20))`20call`20build_status_line(ptr,l Vine,'INQUAN') X`09`09`20`20`20`20if`20(bjtest(jpi_sts,25))`20call`20build_status_line(ptr,lin Ve,'INTER`20') X`09`09`20`20`20`20if`20(bjtest(jpi_sts,20))`20call`20build_status_line(ptr,lin Ve,'LOGIN`20') X`09`09`20`20`20`20if`20(bjtest(jpi_sts,21))`20call`20build_status_line(ptr,lin Ve,'NETWRK') X`09`09`20`20`20`20if`20(bjtest(jpi_sts,15))`20call`20build_status_line(ptr,lin Ve,'NOACNT') X`09`09`20`20`20`20if`20(bjtest(jpi_sts,23))`20call`20build_status_line(ptr,lin Ve,'NODELET') X`09`09`20`20`20`20if`20(bjtest(jpi_sts,18))`20call`20build_status_line(ptr,lin Ve,'PHDRES') X`09`09`20`20`20`20if`20(bjtest(jpi_sts,4`20))`20call`20build_status_line(ptr,l Vine,'PSWAPM') X`09`09`20`20`20`20if`20(bjtest(jpi_sts,22))`20call`20build_status_line(ptr,lin Ve,'PWRAST') X`09`09`20`20`20`20if`20(bjtest(jpi_sts,26))`20call`20build_status_line(ptr,lin Ve,'RECOVER') X`09`09`20`20`20`20if`20(bjtest(jpi_sts,0`20))`20call`20build_status_line(ptr,l Vine,'RES`20`20`20') X`09`09`20`20`20`20if`20(bjtest(jpi_sts,5`20))`20call`20build_status_line(ptr,l Vine,'RESPEN') X`09`09`20`20`20`20if`20(bjtest(jpi_sts,6`20))`20call`20build_status_line(ptr,l Vine,'SSFEXC') X`09`09`20`20`20`20if`20(bjtest(jpi_sts,7`20))`20call`20build_status_line(ptr,l Vine,'SSFEXCE') X`09`09`20`20`20`20if`20(bjtest(jpi_sts,8`20))`20call`20build_status_line(ptr,l Vine,'SSFEXCS') X`09`09`20`20`20`20if`20(bjtest(jpi_sts,9`20))`20call`20build_status_line(ptr,l Vine,'SSFEXCSU') X`09`09`20`20`20`20if`20(bjtest(jpi_sts,10))`20call`20build_status_line(ptr,lin Ve,'SSRWAIT') X`09`09`20`20`20`20if`20(bjtest(jpi_sts,11))`20call`20build_status_line(ptr,lin Ve,'SUSPEN') X`09`09`20`20`20`20if`20(bjtest(jpi_sts,12))`20call`20build_status_line(ptr,lin Ve,'WAKEPEN') X`09`09`20`20`20`20if`20(bjtest(jpi_sts,13))`20call`20build_status_line(ptr,lin Ve,'WALL`20`20') X`09`20`20`20`20`20`20`20`20`20`20`20`20 X`09`09`20`20`20`20ptr`20=`20ptr`20-`201 X`09`09`20`20`20`20line(ptr:ptr)`20=`20'`20'`09`20`20`20`20!`20remove`20last V`20',' X`09`09`20`20`20`20sts$value`20=`20ots$cvt_l_tu(jpi_sts,tsts)`20!`20convert`20t Vo`20text`20format X`09 X`09`09`20`20`20`20text`20=`20'Process`20status:`20'`20//`20tsts`20//`20line X`09`09`20`20`20`20sts$value`20=`20smg$put_chars(contents_id,text,3,2) X`09`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 X`09`09`20`20`20`20text`20=`20'State:`20`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20`20`20`20`20`20`20`20'`20//`20tstate`20 X`09`09`20`20`20`20sts$value`20=`20smg$put_chars(contents_id,text,5,2) X`09 X`09`09`20`20`20`20text`20=`20'Current`20Priority:`20`20`20`20`20`20`20`20`20 V`20`20`20'`20//`20tpri X`09`09`20`20`20`20sts$value`20=`20smg$put_chars(contents_id,text,6,2) X`09 X`09`09`20`20`20`20text`20=`20'Base`20priority:`20`20`20`20`20`20`20`20`20`20 V`20`20`20`20`20'`20//`20tprib X`09`09`20`20`20`20sts$value`20=`20smg$put_chars(contents_id,text,7,2) X`09 X`09`09`20`20`20`20text`20=`20'UIC:`20`20`20`20`5B'`20//`20grp(1:grplen)`20// V`20','`20// X`20`20`20`20`201`09`09`09`20`20`20`20`20`20nambuf(1:namlen)`20//`20'`5D' X`20 X`09`09`20`20`20`20sts$value`20=`20smg$put_chars(contents_id,text,8,2) X`09 XC`20Event`20flag`20clusters`20are`20returned`20as`20a`20longword`20bit`20vecto Vr.`20Convert`20these XC`20to`20hex`20for`20display`20purposes. X`09 X`09`09`20`20`20`20sts$value`20=`20ots$cvt_l_tz(jpi_efwm,t_efwm,%val(8),%val(4) V) X`09`09`20`20`20`20if`20(.not.`20sts$value)`20call`20lib$signal(%val(sts$value) V) X`09`09 X`09`09`20`20`20`20text`20=`20'Event`20flag`20wait`20mask'`20//`20'`20`20`20' V`20//`20t_efwm X`09`09`20`20`20`20sts$value`20=`20smg$put_chars(contents_id,text,9,2) X`09 X`09`09`20`20`20`20sts$value`20=`20ots$cvt_l_tz(jpi_efcs,t_efcs,%val(8),%val(4) V) X`09`09`20`20`20`20if`20(.not.`20sts$value)`20call`20lib$signal(%val(sts$value) V) X`09 X`09`09`20`20`20`20text`20=`20'Local`20EF`20cluster`200:'`20//`20'`20`20`20`20' V`20//`20t_efcs X`09`09`20`20`20`20sts$value`20=`20smg$put_chars(contents_id,text,10,2) X`09 X`09`09`20`20`20`20sts$value`20=`20ots$cvt_l_tz(jpi_efcu,t_efcu,%val(8),%val(4) V) X`09`09`20`20`20`20if`20(.not.`20sts$value)`20call`20lib$signal(%val(sts$value) V) X`09 X`09`09`20`20`20`20text`20=`20'Local`20EF`20cluster`201:'`20//`20'`20`20`20`20' V`20//`20t_efcu X`09`09`20`20`20`20sts$value`20=`20smg$put_chars(contents_id,text,11,2) X`09`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20`20`20`20`20`20`20`20`20`20`20 X`09`09`20`20`20`20sts$value`20=`20ots$cvt_l_tu(jpi_jobprccnt,tjobprccnt)`20! V`20convert`20to`20text`20format X`09 X`09`09`20`20`20`20text`20=`20'Subprocess`20count:`20`20`20`20`20`20`20`20`20 V`20'`20//`20tjobprccnt X`09`09`20`20`20`20sts$value`20=`20smg$put_chars(contents_id,text,5,43) X`09 X`09`09`20`20`20`20sts$value`20=`20ots$cvt_l_tz(jpi_master_pid,tmaster_pid,%val V(8),%val(4)) X`09 X`09`09`20`20`20`20text`20=`20'Creator`20extended`20PID:`20`20`20`20`20`20'`20/ V/`20tmaster_pid X`09`09`20`20`20`20sts$value`20=`20smg$put_chars(contents_id,text,6,43) X`09`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 X`09`09`20`20`20`20sts$value`20=`20ots$cvt_l_tu(jpi_tmbu,tmbu)`20!`20convert V`20to`20text`20format X`09 X`09`09`20`20`20`20text`20=`20'Termination`20mailbox:`20`20`20`20`20`20`20'`20/ V/`20tmbu X`09`09`20`20`20`20sts$value`20=`20smg$put_chars(contents_id,text,7,43) X`09 X`09`09`20`20`20`20tasten`20=`20'`20' X`09`09`20`20`20`20ptr`20=`201 X`09`09`20`20`20`20if`20(bjtest(jpi_asten,0))`20then X`09`09`09tasten(ptr:ptr)`20=`20'K' X`09`09`09ptr`20=`20ptr`20+`201 X`09`09`20`20`20`20end`20if X`09 X`09`09`20`20`20`20if`20(bjtest(jpi_asten,1))`20then X`09`09`09tasten(ptr:ptr)`20=`20'E' X`09`09`09ptr`20=`20ptr`20+`201 X`09`09`20`20`20`20end`20if X`09 X`09`09`20`20`20`20if`20(bjtest(jpi_asten,2))`20then X`09`09`09tasten(ptr:ptr)`20=`20'S' X`09`09`09ptr`20=`20ptr`20+`201 X`09`09`20`20`20`20end`20if X`09 X`09`09`20`20`20`20if`20(bjtest(jpi_asten,3))`20then X`09`09`09tasten(ptr:ptr)`20=`20'U' X`09`09`20`20`20`20end`20if X`09`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 X`09`09`20`20`20`20if`20(tasten`20.eq.`20'`20')`20tasten`20=`20'NONE' X`09 X`09`09`20`20`20`20text`20=`20'ASTs`20enabled:`20'`20//`20tasten X`09`09`20`20`20`20sts$value`20=`20smg$put_chars(contents_id,text,8,43) X`09 X`09`09`20`20`20`20tastact`20=`20'`20' X`09`09`20`20`20`20ptr`20=`201 X`09`09`20`20`20`20if`20(bjtest(jpi_ASTACT,0))`20then X`09`09`09tASTACT(ptr:ptr)`20=`20'K' X`09`09`09ptr`20=`20ptr`20+`201 X`09`09`20`20`20`20end`20if X`09 X`09`09`20`20`20`20if`20(bjtest(jpi_ASTACT,1))`20then X`09`09`09tASTACT(ptr:ptr)`20=`20'E' X`09`09`09ptr`20=`20ptr`20+`201 X`09`09`20`20`20`20end`20if X`09 X`09`09`20`20`20`20if`20(bjtest(jpi_ASTACT,2))`20then X`09`09`09tASTACT(ptr:ptr)`20=`20'S' X`09`09`09ptr`20=`20ptr`20+`201 X`09`09`20`20`20`20end`20if X`09 X`09`09`20`20`20`20if`20(bjtest(jpi_ASTACT,3))`20then X`09`09`09tASTACT(ptr:ptr)`20=`20'U' X`09`09`20`20`20`20end`20if X`09 X`09`20`20`20`20`20`20`20`20`20`20`20`20if`20(tastact`20.eq.`20'`20')`20tastact V`20=`20'NONE' X`09 X`09`09`20`20`20`20text`20=`20'ASTs`20active:`20'`20//`20tastact X`09`09`20`20`20`20sts$value`20=`20smg$put_chars(contents_id,text,9,43) X`09`09`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20`20`20`20`20`20`20`20`20`20`20 X`09`09`20`20`20`20sts$value`20=`20ots$cvt_l_tu(jpi_astcnt,tastcnt)`20!`20conve Vrt`20to`20text`20format X`09 X`09`09`20`20`20`20text`20=`20'ASTs`20remaining:`20`20`20`20`20`20`20`20`20`20 V`20`20`20`20`20`20'`20//`20tastcnt X`09`09`20`20`20`20sts$value`20=`20smg$put_chars(contents_id,text,10,43) X`09 X`09`09`20`20`20`20sts$value`20=`20ots$cvt_l_tu(jpi_biocnt,tbiocnt)`20!`20conve Vrt`20to`20text`20format X`09`09`20`20`20`20sts$value`20=`20ots$cvt_l_tu(jpi_biolm,tbiolm)`20!`20convert V`20to`20text`20format X`09 X`09`09`20`20`20`20text`20=`20'Buffered`20I/O`20count/limit:`20'`20//`20tbiocnt V`20//`20'/'`20//`20tbiolm X`09`09`20`20`20`20sts$value`20=`20smg$put_chars(contents_id,text,11,43) X`09 X`09`09`20`20`20`20sts$value`20=`20ots$cvt_l_tu(jpi_diocnt,tdiocnt)`20!`20conve Vrt`20to`20text`20format X`09`09`20`20`20`20sts$value`20=`20ots$cvt_l_tu(jpi_diolm,tdiolm)`20!`20convert V`20to`20text`20format X`09 X`09`09`20`20`20`20text`20=`20'Direct`20I/O`20count/limit:`20`20`20'`20//`20tdi Vocnt`20//`20'/'`20//`20tdiolm X`09`09`20`20`20`20sts$value`20=`20smg$put_chars(contents_id,text,12,43) X`09 X`09`09`20`20`20`20sts$value`20=`20ots$cvt_l_tu(jpi_bytcnt,tbytcnt)`20!`20conve Vrt`20to`20text`20format X`09`09`20`20`20`20sts$value`20=`20ots$cvt_l_tu(jpi_bytlm,tbytlm)`20!`20convert V`20to`20text`20format X`09 X`09`09`20`20`20`20text`20=`20'BUFIO`20byte`20count/limit:`20`20`20'`20//`20tby Vtcnt`20//`20'/'`20//`20tbytlm X`09`09`20`20`20`20sts$value`20=`20smg$put_chars(contents_id,text,13,43) X`09 X`09`09`20`20`20`20sts$value`20=`20ots$cvt_l_tu(jpi_filcnt,tfilcnt)`20!`20conve Vrt`20to`20text`20format X`09`09`09 X`09`09`20`20`20`20text`20=`20'#`20open`20files`20allowed`20left:`20`20`20`20 V`20'`20//`20tfilcnt X`09`09`20`20`20`20sts$value`20=`20smg$put_chars(contents_id,text,14,43) X`09 X`09`09`20`20`20`20sts$value`20=`20ots$cvt_l_tu(jpi_tqcnt,t_tqcnt)`20!`20conver Vt`20to`20text`20format X`09 X`09`09`20`20`20`20text`20=`20'Timer`20entries`20allowed`20left:`20`20`20`20' V`20//`20t_tqcnt X`09`09`20`20`20`20sts$value`20=`20smg$put_chars(contents_id,text,15,43) X`09 X`09`09`20`20`20`20sts$value`20=`20ots$cvt_l_tu(jpi_aptcnt,taptcnt)`20!`20conve Vrt`20to`20text`20format X`09 X`09`09`20`20`20`20text`20=`20'Active`20page`20table`20count:`20`20`20'`20// V`20taptcnt X`09`09`20`20`20`20sts$value`20=`20smg$put_chars(contents_id,text,16,43) X`09 X`09`09`20`20`20`20sts$value`20=`20smg$end_display_update(contents_id) X`09`09`20`20`20`20if`20(.not.`20sts$value)`20call`20lib$signal(%val(sts$value) V) X`09 X`09`09end`20if`20`20`20!`20sda`20flag X`09 X`09 X`09`20`20`20`20end`20if`20`20!`20pid`20match X`09 X`09 X`09 X`09 X`09`20`20`20`20sts$value`20=`20sys$getjpiw(,context,,itmlst,iosb,,) X`09`20`20`20`20if`20(.not.`20sts$value)`20call`20lib$signal(%val(sts$value)) X`09`20`20`20`20sts$value`20=`20iosb(1) X`09 X`09end`20do X`09 X`20`20`20`20`20`20`20`20`20`20`20`20 X`09 XC`20`09Loop`20forever`20spying`20on`20the`20process`20until`20the`20user`20pre Vsses`20'E'`20to`20exit. XC`20`09(If`20'V'`20key`20is`20pressed,`20then`20show`20SDA`20equivalent`20disp Vlay) X X`09sts$value`20=`20smg$read_keystroke(keyboard_id,terminator,,1) X`09if`20(terminator`20.eq.`20upper_e`20.or.`20terminator`20.eq.`20lower_e)`20t Vhen X`09`20`20`20`20sts$value`20=`20smg$delete_pasteboard(pasteboard,1) X`09`20`20`20`20if`20(.not.`20sts$value)`20call`20lib$signal(%val(sts$value)) X`09`20`20`20`20call`20exit X`09end`20if X X`09if`20(terminator`20.eq.`20upper_v`20.or.`20terminator`20.eq.`20lower_v)`20t Vhen`20 X`09`20`20`20`20sts$value`20=`20smg$erase_display(contents_id) X`09`20`20`20`20show_screen`20=`20.false. X`09`20`20`20`20sda_screen`20=`20.true. X`09`20`20`20`20terminator`20=`200 X`09end`20if X`09`09`20`20`20`20 X`09if`20(terminator`20.eq.`20space)`20then X`09`20`20`20`20sts$value`20=`20smg$erase_display(contents_id) X`09`20`20`20`20show_screen`20=`20.true. X`09`20`20`20`20sda_screen`20=`20.false. X`09`20`20`20`20terminator`20=`200 X`09end`20if X X Xc`09Start`20the`20whole`20thing`20over X X`09goto`20100 X X`09end`09!`20of`20Mainline`20program X X X X`0C X`09Subroutine`20OUT_OF_BAND_ROUTINE(smg_info,r0,r1,pc,psl) XC***************************************************************************** V XC XC`20This`20routine`20handles`20"out-of-band"`20AST's`20that`20are`20generated V`20whenever`20a XC`20user`20types`20CTRL/R`20or`20CTRL/W`20on`20the`20screen.`20These`20charact Ver`20sequences`20will XC`20repaint`20the`20screen`20thus`20getting`20rid`20of`20any`20broadcast`20mes Vsages`20etc., XC XC XC`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20`20`20`20Information`20America XC`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20`20`20`20`20`20`20`20Wren`20Hunt XC`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20`20`20`20`20`20February`201990 XC XC`20These`20are`20the`20arguments`20that`20are`20passed`20to`20us`20from`20the V`20AST: XC XC`09+---------------------------+`20`20`20`20`20`20`20`20`20+----------------- V----+ XC`20`20`20`20`20`20`20!`20address`20of`20data`20structure`20!------->`20!`20SM VG$L_PASTEBOARD_ID`20! XC`09+---------------------------+`20`20`20`20`20`20`20`20`20+----------------- V----+ XC`20`20`20`20`20`20`20!`20`20`20`20`20`20`20`20`20R0`20`20`20`20`20`20`20`20 V`20`20`20`20`20`20`20`20!`20`20`20`20`20`20`20`20`20!`20SMG$L_ARG`20`20`20`20 V`20`20`20`20`20`20`20! XC`09+---------------------------+`20`20`20`20`20`20`20`20`20+----------------- V----+ XC`20`20`20`20`20`20`20!`20`20`20`20`20`20`20`20`20R1`20`20`20`20`20`20`20`20 V`20`20`20`20`20`20`20`20!`20`20`20`20`20`20`20`20`20!`20blanks`20`20`20`20`20 V`20`20!`20`20`20`20`20`20! XC`09+---------------------------+`20`20`20`20`20`20`20`20`20+----------------- V----+ XC`20`20`20`20`20`20`20!`20`20`20`20`20`20`20`20`20PC`20`20`20`20`20`20`20`20 V`20`20`20`20`20`20`20`20!`20`20`20`20`20`20`20`2031`20`20`20`20`20`20`20`20 V`20`20`20`20`208`207`20`20`5E`20`200 XC`09+---------------------------+`20`20`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20`20`20`20`20`20`20`20`20`20`20`20`20! XC`20`20`20`20`20`20`20!`20`20`20`20`20`20`20`20`20PSL`20`20`20`20`20`20`20`20 V`20`20`20`20`20`20`20!`20`20`20`20`20`20`20`20`20`20`20`20`20SMG$B_CHARACTER XC`09+---------------------------+ XC***************************************************************************** V X X X`09implicit`20none`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 X X`09include`20'smg_stuff.inc'`09`20 X X`09record`20/smg$r_out_of_band_table/`20smg_info X X X`09integer*4`20address,r0,r1,pc,psl X X`09character*1`20user_character X X`09sts$value`20=`20smg$repaint_screen(pasteboard) X`09if`20(.not.`20sts$value)`20call`20lib$signal(%val(sts$value)) X X`20 X`09end X`20 X X X`0C X`20`20`20`20`20`20`20Subroutine`20`20Remove_Blanks(text) XC***************************************************************************** V XC XC`20`20This`20routine`20copies`20an`20input`20string`20to`20another`20string, V`20removing`20blanks XC`20`20in`20the`20process.`20The`20'deblanked'`20string`20is`20then`20returned V. XC XC XC`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20`20`20`20Information`20America XC`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20`20`20`20`20`20`20`20Wren`20Hunt XC`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20`20`20`20`20`20`20`20June`201991 XC XC***************************************************************************** V X`20 X`20`20`20`20`20`20`20implicit`20none X`20 X`20 X`09character*(*)`09text X`09character*30`09output_text X X`09integer*2`20i,j X X`09J`20=`201 X`09Do`20i`20=`201,len(text) X`09`20`20`20`20if`20(text(i:i)`20.ne.`20'`20')`20then X`09`09output_text(j:j)`20=`20text(i:i) X`09`09j`20=`20j`20+`201 X`09`20`20`20`20end`20if X`09End`20Do X X`09text`20=`20output_text(1:j)`20 X`20 X`20 X`20`20`20`20`20`20`20end`20`20`20`20!`20REMOVE_BLANKS X`20 X X`20 X X X X`09Subroutine`20Smg_setup XC********************************************************************** XC`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20`20`20`20`20`20`20 XC`20This`20routine`20handles`20the`20prelimanary`20SMG`20setup`20required`20to V`20get`20 XC`20everything`20going. XC XC`09`09`09`20`20`20`20`20`20J.`20Wren`20Hunt XC`09`09`09`20`20`20`20`20`20`20March`201990 XC XC********************************************************************** X X X`09implicit`20none X X`09include`20'SMG_Stuff.inc'`09!`20contains`20COMMONs`20to`20pass`20data`20fro Vm X`09`09`09`20`20`20`20`20`20`20`20!`20`20mainline`20to`20subroutines`20and`20vi Vce-versa. X X`09external`20out_of_band_routine`09!`20implements`20CTRL/R`20`26`20CTRL/W X`09`09`09`09`20`20`20`20`20`20`20`20!`20`20"out-of-bands"`20refresh`20characte Vrs X X XC+++++++++++++++++++++ XC XC`20Local/global`20variables XC XC++++++++++++++++++++++ X X`09integer*4`09num_rows,num_columns,control_char_mask X X X`09sts$value`20=`20smg$create_pasteboard(pasteboard,'sys$output', X`20`20`20`20`201`09`09`09`09`09`09num_rows,num_columns) X`09if`20(.not.`20sts$value)`20call`20lib$signal(%val(sts$value)) X X X X`09sts$value`20=`20smg$create_virtual_display(22,78,contents_id) X`09if`20(.not.`20sts$value)`20call`20lib$signal(%val(sts$value)) X X XC`20Display`20for`20the`20SDA`20screen X X`09sts$value`20=`20smg$create_virtual_display(22,78,SDA_id) X`09if`20(.not.`20sts$value)`20call`20lib$signal(%val(sts$value)) X X X X XC`20`20Put`20labels`20around`20each`20display X X X`09sts$value`20=`20smg$label_border(contents_id,'Cluster`20Spy`20Utility', X`20`20`20`20`201`09`09`09smg$k_top,,smg$m_bold) X`09if`20(.not.`20sts$value)`20call`20lib$signal(%val(sts$value)) X X X X XC`20`20Create`20a`20virtual`20keyboard. X X`09sts$value`20=`20smg$create_virtual_keyboard(keyboard_id) X`09if`20(.not.`20sts$value)`20call`20lib$signal(%val(sts$value)) X X XC`20Paste`20the`20virtual`20display(s)`20to`20the`20pasteboard. X X X X`09sts$value`20=`20smg$paste_virtual_display(contents_id,pasteboard,2,2) X`09if`20(.not.`20sts$value)`20call`20lib$signal(%val(sts$value)) X X XC`20The`20following`20is`20a`20bit`20mask`20which`20read`20from`20right`20to V`20left XC`20starts`20with`20bit`200,`20followed`20by`20bit`201`20(A)`20etc.,`20As`20yo Vu XC`20can`20see,`20bits`2018`20`26`2023`20are`20set`20meaning`20that`20an`20out- Vof-bands XC`20AST`20is`20set`20for`20CTRL/R`20`26`20CTRL/W`20("Refresh"`20and`20"Wipe") XC`20The`20binary`20value`20of`2000000000100001000000000000000000`20has`20been XC`20converted`20to`20a`20Hexadecimal`20value`20below.`20(You`20may`20also`20us Ve XC`20exponential`20notation`20to`20arrive`20at`20this`20value.`20e.g.,`202**18) V X X X`09control_char_mask`20=`20'00840000'X X X`09sts$value`20=`20smg$set_out_of_band_asts(pasteboard,control_char_mask, X`20`20`20`20`201`09`09`09`09`09`09out_of_band_routine) X`09if`20(.not.`20sts$value)`20call`20lib$signal(%val(sts$value)) X X X X X X`09end`20`20`20`20`20`20`20`20!`20SMG_SETUP X X X`0C X`09Subroutine`20Build_status_line(ptr,line,flag) XC***************************************************************************** V XC XC`20This`20routine`20builds`20the`20process`20'status`20line'`20(e.g.,`20RES,I VNTER,PHDRES) XC`20It`20determines`20where`20in`20the`20line`20to`20place`20each`20process V`20attribute`20and`20delimits XC`20each`20one`20with`20commas. XC XC***************************************************************************** V X X`09implicit`20none X X`09integer*2`20`20`20ptr,i X`09character*80`20line X`09character*7`20`20flag X`20`20`20`20`20`20`20`20`20`20`20 X`09do`20i`20=`201,7`20`20!`20maximum`20length`20of`20process`20'flag'`20attrib Vute. X`09`20`20`20`20if`20(flag(i:i)`20.ne.`20'`20')`20then X`09`09line(ptr:ptr)`20=`20flag(i:i) X`09`09ptr`20=`20ptr`20+`201 X`20`20`20`20`20`20`20`20`20`20`20`20`20end`20if X`09end`20do X XC`20insert`20comma`20to`20delimit X X`09line(ptr:ptr)`20=`20',' X`09ptr`20=`20ptr`20+`201 X X`09end $ call unpack CSPY.FOR;1 173278264 "" $! $ create 'f' XC`20`20SMG_STUFF.INC X X X`09include`20'($ssdef)' X`09include`20'($smgdef)'`09 X X`09integer*4`20smg$label_border,smg$create_virtual_display, X`20`20`20`20`201`09`09`09smg$create_virtual_keyboard,smg$paste_virtual_display V, X`20`20`20`20`202`09`09`09smg$create_pasteboard,smg$put_chars,smg$put_with_scro Vll, X`20`20`20`20`203`09`09`09smg$scroll_display_area,smg$read_keystroke, X`20`20`20`20`205`09`09`09smg$erase_display, X`20`20`20`20`206`09`09`09smg$set_broadcast_trapping,smg$set_out_of_band_asts, X`20`20`20`20`209`09`09`09smg$repaint_screen,smg$delete_pasteboard, X`20`20`20`20`201`09`09`09smg$begin_display_update,smg$end_display_update X X X X`09integer*4`20`09sts$value,pasteboard,contents_id,directory_id X`09integer*4`09statistics_id,menu_id,keyboard_id,SDA_id X X X`09common`20/stuff/`20`20pasteboard,contents_id,directory_id,statistics_id, X`20`20`20`20`201`09`09`09menu_id,keyboard_id,SDA_id $ call unpack SMG_STUFF.INC;1 1815088563 "" $ v=f$verify(v) $ exit