$max_loops = 1000 $IF p1.EQS."" THEN p1 = 10 ! Minutes $IF p2.NES."" THEN max_loops = p2 $high_max = %X20000000 ! Absolute max = 3FFF0000 = just under 1 Gigabyte $mail_to = "not.heinvandenheuvel@gmail.com" $IF p1.NES."" THEN minutes = p1 $hours = 0 $IF minutes.GE.60 THEN hours = minutes/60 $IF minutes.GE.60 THEN minutes = minutes - 60*hours $ $loops = 0 $report_top_p0_vm_usage: $loops = loops + 1 $i=0 $init_loop: $ user_'i = "" $ high_'i = 0 $ pid_'i = "00000000" $ i = i + 1 $ IF i.LE.10 THEN GOTO init_loop $ $context = "" $pid_loop: $pid = F$PID(context) $IF pid.EQS."" THEN GOTO report $high_text = F$GETJPI(pid,"FREP0VA") $IF high_text.EQS."" THEN GOTO pid_loop $high = %x'high_text $IF high.LE.high_10 THEN GOTO pid_loop $user = F$GETJPI(pid,"USERNAME") $IF user.EQS."" THEN GOTO pid_loop $ $i = 11 $insert_find: $i = i - 1 $IF high.GE.high_'i .AND. i.GT.0 THEN GOTO insert_find $i = i + 1 $ $j = 10 $! WRITE sys$output F$FAO("!4UL !8XL !8XL", i, high, high_'i) $insert_loop: $k = j - 1 $! WRITE sys$output F$FAO(" !8XL !8XL", high_'k, high_'j) $high_'j = high_'k $user_'j = user_'k $pid_'j = pid_'k $j = k $IF j.GT.i THEN GOTO insert_loop $high_'i = high $user_'i = user $pid_'i = pid $GOTO pid_loop $ $report: $ $IF high_1.GT.high_max ! Absolute max = 3FFF0000 = just under 1 Gigabyte $THEN $ text = F$FAO("FREP0VA=!8XL pid=!AS user=!AS Image=!AS",high_1,pid_1,user_1,F$GETJPI(pid_1,"imagname")) $ REPLY/USER=HEIN &text $ IF mail_to.NES."" THEN MAIL/SUBJ="''text'" NL: "''mail_to'" $ mail_to="" $ENDIF $ $i = 1 $ WRITE sys$output "Rank, FREP0VA, PID, User, Image, loop=''loops' @", F$CVTIME() $report_loop: $ WRITE sys$output F$FAO("!4UL !8XL !8AS !12AS !AS",i,high_'i,pid_'i,user_'i,F$GETJPI(pid_'i,"imagname")) $i = i + 1 $IF i.LE.10 THEN GOTO report_loop $ $IF loops.GE.max_loops .or. p1.EQ.0 THEN EXIT $WAIT 'hours':'minutes':0 $GOTO report_top_p0_vm_usage $EXIT