u$ DISKM010.B` DISKM010.BBACKUP/NOASSIST/NODISMOUNT/COMMENT=VAX/VMS SPKITBLD Procedure/INTER/LOG/VERIFY $1$DIA2:[DISK.B]*.*; $1$DIA2:[DISK]DISKM010.B/LABEL=(DISKM)/SAVE/BLOCK=9000/GROUP=25/NOINIT/NOREWIVAX/VMS SPKITBLD Procedure BUCKLEY @m,<^V6.1 _DEWEY::  _$1$DIA2: V6.1 $I*[DISK.B]FRAG_SUMMARY.COM;3+,./ 4WL- 0123KPWO56 *䓥7>+,<^89GHJ 2$ ! COPYRIGHT (C) 1992 BY=$ ! DIGITAL EQUIPMENT CORPORATION, MAYNARD<$ ! MASSACHUSETTS. ALL RIGHTS RESERVED.$ !J$ ! THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIEDM$ ! ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSIONF$ ! OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIESI$ ! THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHERN$ ! PERSON. NO TITLE TO AND OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.$ !M$ ! THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE ANDN$ ! SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT CORPORATION.$ !H$ ! DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS;$ ! SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY DIGITAL.$ !N$ !***************************************************************************$ !F$!PERFORMANCE METRICS THAT ARE CUSTOMIZABLE (DEFAULTS SET FOR AN RA92)$!L$!THESE THRESHOLDS ARE USED TO INCREASE/DECREASE THE NUMEBR OF DISKS SINGLEDK$!OUT FOR ACTION. IF NO DISKS ARE BEING FLAGGED YOU PROBIBALY WANT TO LOWERL$!THE TRESHOLDS. THE OPTIMAL VALUE WOULD SINGLE OUT THE NUMBER OF DISKS THAT+$!CAN BE REFRESHED DURING A ONE WEEK CYCLE.$!8$!DEFINE LOGICALS FOR MEDIA TYPES THAT HAVE BEEN DEFINED$DEFINE/NOLOG DEF_DEFINED "YES" $DEFINE/NOLOG RA92_DEFINED "YES" $DEFINE/NOLOG RA90_DEFINED "YES" $DEFINE/NOLOG RA82_DEFINED "YES" $DEFINE/NOLOG RA81_DEFINED "YES" $DEFINE/NOLOG RZ23_DEFINED "YES" $DEFINE/NOLOG RF73_DEFINED "YES" $DEFINE/NOLOG RF72_DEFINED "YES" $DEFINE/NOLOG RF71_DEFINED "YES"$! $! PCT OF DISK TO KEEP FREE [20]$DEF_DISK_FREE = 20$RA92_DISK_FREE = 20$RA90_DISK_FREE = 20$RA82_DISK_FREE = 20$RA81_DISK_FREE = 20$RZ23_DISK_FREE = 20$RF73_DISK_FREE = 20$RF72_DISK_FREE = 20$RF71_DISK_FREE = 20$!;$!PCT OF FREE SPACE REQUIRED IN THE LARGEST BITMAP HOLE [5]$DEF_BHOLE_FREE = 5$RA92_BHOLE_FREE = 5$RA90_BHOLE_FREE = 5$RA82_BHOLE_FREE = 5$RA81_BHOLE_FREE = 5$RZ23_BHOLE_FREE = 5$RF73_BHOLE_FREE = 5$RF72_BHOLE_FREE = 5$RF71_BHOLE_FREE = 5$!;$!FREE SPACE THRESHOLD FOR BITMAP HOLE CONCLUSIONS [300000]$DEF_FREE_FRAG = 300000$RA92_FREE_FRAG = 300000$RA90_FREE_FRAG = 300000$RA82_FREE_FRAG = 100000$RA81_FREE_FRAG = 70000$RZ23_FREE_FRAG = 20000$RF73_FREE_FRAG = 300000$RF72_FREE_FRAG = 200000$RF71_FREE_FRAG = 70000$!2$!LARGEST BITMAP HOLE MUST BE GREATER THEN [50000]$DEF_BHOLE = 50000$RA92_BHOLE = 50000$RA90_BHOLE = 50000$RA82_BHOLE = 20000$RA81_BHOLE = 10000$RZ23_BHOLE = 5000$RF73_BHOLE = 50000$RF72_BHOLE = 30000$RF71_BHOLE = 10000$!1$!NUMBER OF BITMAP HOLES MUST BE LESS THEN [5000]$DEF_BHOLE_NUM = 5000$RA92_BHOLE_NUM = 5000$RA90_BHOLE_NUM = 5000$RA82_BHOLE_NUM = 2000$RA81_BHOLE_NUM = 1000$RZ23_BHOLE_NUM = 500$RF73_BHOLE_NUM = 5000$RF72_BHOLE_NUM = 3000$RF71_BHOLE_NUM = 1000$!7$!NUMBER OF FILES WITH EXTENSION HEADERS MUST BE < [10]$DEF_FILE_HEAD = 10$RA92_FILE_HEAD = 10$RA90_FILE_HEAD = 10$RA82_FILE_HEAD = 7$RA81_FILE_HEAD = 5$RZ23_FILE_HEAD = 3$RF73_FILE_HEAD = 10$RF72_FILE_HEAD = 7$RF71_FILE_HEAD = 5$!A$!NUMBER OF FILES WITH EXTENTS > DISK WINDOW SIZE MUST BE < [500]$DEF_FILE_EXT = 500$RA92_FILE_EXT = 500$RA90_FILE_EXT = 500$RA82_FILE_EXT = 200$RA81_FILE_EXT = 100$RZ23_FILE_EXT = 50$RF73_FILE_EXT = 500$RF72_FILE_EXT = 300$RF71_FILE_EXT = 100$!.$!LARGEST NUMBER OF HEADERS IN ONE FILE < [10]$DEF_NUM_HEAD = 10$RA92_NUM_HEAD = 10$RA90_NUM_HEAD = 10$RA82_NUM_HEAD = 10$RA81_NUM_HEAD = 10$RZ23_NUM_HEAD = 10$RF73_NUM_HEAD = 10$RF72_NUM_HEAD = 10$RF71_NUM_HEAD = 10$!O$!MAX NUMBER EXTENTS IN THE INDEXF.SYS (ONLY 1 HEADER) FILE BEFORE REFRESH [40]$DEF_INDEXF_EXTENTS = 40$RA92_INDEXF_EXTENTS = 40$RA90_INDEXF_EXTENTS = 40$RA82_INDEXF_EXTENTS = 40$RA81_INDEXF_EXTENTS = 40$RZ23_INDEXF_EXTENTS = 40$RF73_INDEXF_EXTENTS = 40$RF72_INDEXF_EXTENTS = 40$RF71_INDEXF_EXTENTS = 40$!%$!END OF DISK SPECIFIC CUSTOMIZATIONS$!$ON ERROR THEN GOTO EXIT6$!CREATE FILE CONTAINING OUTPUT OF "DIREX/DATE *.FRAG"?$DIREX/NOHEAD/NOTRAIL/COL=1/OUTPUT=SYS$LOGIN:SUMLIST.TMP *.FRAG#$OPEN SUMLIST SYS$LOGIN:SUMLIST.TMP$$OPEN/WRITE OUTFILE FRAG_SUMMARY.RPT$$OPEN/WRITE SUMFILE FRAG_SUMMARY.SUM$ON ERROR THEN GOTO DONE $READREC:!$!READ FILE TO EXTRACT DISK NAMES)$READ/END=DONE/ERROR=EROR SUMLIST FILEREC3$FILE = F$EDIT("''F$EXTRACT(0,80,FILEREC)'","TRIM")$DISKFILE1 = " "$DISKFILE2 = " "$DISKFILE3 = " "$DISKFILE4 = " "$DISKFILE5 = " "$NUM_INDEXF_EXT = 0$SHOW SYM FILEJ$!OPEN/READ REVIEW_DISK FILE FOR A DEVICE TO SEE IF IT IS BADLY FRAGMENTED$OPEN DISK 'FILE'.$READ/END=DISKDONE/ERROR=DISKERR DISK DISKNAME/$READ/END=DISKDONE/ERROR=DISKERR DISK DISKHOLES/$READ/END=DISKDONE/ERROR=DISKERR DISK DISKSPACE/$READ/END=DISKDONE/ERROR=DISKERR DISK DISKFILES-$READ/END=DISKDONE/ERROR=DISKERR DISK DISKERR.$READ/END=DISKDONE/ERROR=DISKERR DISK DISKBUSY.$READ/END=DISKDONE/ERROR=DISKERR DISK DISKSUMM0$READ/END=DISKDONE/ERROR=DISKERR DISK DISKBLANK11$READ/END=DISKDONE/ERROR=DISKERR DISK DISKHEADER11$READ/END=DISKDONE/ERROR=DISKERR DISK DISKHEADER20$READ/END=DISKDONE/ERROR=DISKERR DISK DISKBLANK2+$READ/END=NOFRAG/ERROR=DISKERR DISK DISKRECN$IF (F$LOCATE("Files larger",DISKREC) .NE. F$LENGTH(DISKREC)) THEN GOTO NOFRAG$DISKFILE1 = "''DISKREC'"B$IF (F$LOCATE("INDEXF.SYS",DISKREC) .NE. F$LENGTH(DISKREC)) THEN -= NUM_INDEXF_EXT = F$EDIT("''F$EXTRACT(10,8,DISKREC)'","TRIM")+$READ/END=NOFRAG/ERROR=DISKERR DISK DISKRECN$IF (F$LOCATE("Files larger",DISKREC) .NE. F$LENGTH(DISKREC)) THEN GOTO NOFRAG$DISKFILE2 = "''DISKREC'"B$IF (F$LOCATE("INDEXF.SYS",DISKREC) .NE. F$LENGTH(DISKREC)) THEN -= NUM_INDEXF_EXT = F$EDIT("''F$EXTRACT(10,8,DISKREC)'","TRIM")+$READ/END=NOFRAG/ERROR=DISKERR DISK DISKRECN$IF (F$LOCATE("Files larger",DISKREC) .NE. F$LENGTH(DISKREC)) THEN GOTO NOFRAG$DISKFILE3 = "''DISKREC'"B$IF (F$LOCATE("INDEXF.SYS",DISKREC) .NE. F$LENGTH(DISKREC)) THEN -= NUM_INDEXF_EXT = F$EDIT("''F$EXTRACT(10,8,DISKREC)'","TRIM")+$READ/END=NOFRAG/ERROR=DISKERR DISK DISKRECN$IF (F$LOCATE("Files larger",DISKREC) .NE. F$LENGTH(DISKREC)) THEN GOTO NOFRAG$DISKFILE4 = "''DISKREC'"B$IF (F$LOCATE("INDEXF.SYS",DISKREC) .NE. F$LENGTH(DISKREC)) THEN -= NUM_INDEXF_EXT = F$EDIT("''F$EXTRACT(10,8,DISKREC)'","TRIM")+$READ/END=NOFRAG/ERROR=DISKERR DISK DISKRECN$IF (F$LOCATE("Files larger",DISKREC) .NE. F$LENGTH(DISKREC)) THEN GOTO NOFRAG$DISKFILE5 = "''DISKREC'"B$IF (F$LOCATE("INDEXF.SYS",DISKREC) .NE. F$LENGTH(DISKREC)) THEN -= NUM_INDEXF_EXT = F$EDIT("''F$EXTRACT(10,8,DISKREC)'","TRIM") $INDEXF_LOOP:+$READ/END=NOFRAG/ERROR=DISKERR DISK DISKRECN$IF (F$LOCATE("Files larger",DISKREC) .NE. F$LENGTH(DISKREC)) THEN GOTO NOFRAGB$IF (F$LOCATE("INDEXF.SYS",DISKREC) .NE. F$LENGTH(DISKREC)) THEN -= NUM_INDEXF_EXT = F$EDIT("''F$EXTRACT(10,8,DISKREC)'","TRIM")1$IF (NUM_INDEXF_EXT .EQ. 0) THEN GOTO INDEXF_LOOP$NOFRAG:$!SHOW SYM NUM_INDEXF_EXT $CLOSE DISK9$BITHOLES = F$EDIT("''F$EXTRACT(14,8,DISKHOLES)'","TRIM")8$BIGHOLE = F$EDIT("''F$EXTRACT(36,8,DISKHOLES)'","TRIM")8$TOTSIZE = F$EDIT("''F$EXTRACT(14,8,DISKSPACE)'","TRIM"):$FREESPACE = F$EDIT("''F$EXTRACT(36,8,DISKSPACE)'","TRIM")8$NUMHEADER = F$EDIT("''F$EXTRACT(1,4,DISKSUMM)'","TRIM"):$NUMEXTENTS = F$EDIT("''F$EXTRACT(23,4,DISKSUMM)'","TRIM")8$MOSTHEAD = F$EDIT("''F$EXTRACT(2,8,DISKFILE1)'","TRIM")8$FFBUSY1 = F$EDIT("''F$EXTRACT(27,3,DISKFILE1)'","TRIM")8$FFBUSY2 = F$EDIT("''F$EXTRACT(27,3,DISKFILE2)'","TRIM")8$FFBUSY3 = F$EDIT("''F$EXTRACT(27,3,DISKFILE3)'","TRIM")8$FFBUSY4 = F$EDIT("''F$EXTRACT(27,3,DISKFILE4)'","TRIM")8$FFBUSY5 = F$EDIT("''F$EXTRACT(27,3,DISKFILE5)'","TRIM")<$FFBUSYALL = FFBUSY1 + FFBUSY2 + FFBUSY3 + FFBUSY4 + FFBUSY5<$DISKLOGICAL = F$EDIT("''F$EXTRACT(19,20,DISKNAME)'","TRIM")0$MEDIA = F$GETDVI("''DISKLOGICAL'","MEDIA_NAME")/$IF (F$TRNLNM("''MEDIA'_DEFINED") .NES. "YES") $THEN $WRITE SYS$OUTPUT -J"Disk threasholds for ''media' have not been dpy $ DISKM010.B [DISK.B]FRAG_SUMMARY.COM;3WTefined, using ra92 defaults"$MEDIA = "DEF"$ENDIF$$MEDIA_DISK_FREE = 'MEDIA'_DISK_FREE&$MEDIA_BHOLE_FREE = 'MEDIA'_BHOLE_FREE$$MEDIA_FREE_FRAG = 'MEDIA'_FREE_FRAG$MEDIA_BHOLE = 'MEDIA'_BHOLE$$MEDIA_BHOLE_NUM = 'MEDIA'_BHOLE_NUM$$MEDIA_FILE_HEAD = 'MEDIA'_FILE_HEAD"$MEDIA_FILE_EXT = 'MEDIA'_FILE_EXT"$MEDIA_NUM_HEAD = 'MEDIA'_NUM_HEAD.$MEDIA_INDEXF_EXTENTS = 'MEDIA'_INDEXF_EXTENTS$FILEFRAG = "NO"$DEFRAG = "NO" $SPACE = "NO"$WRITEIT = "NO"$NOSPACE = "NO"$FREESP = "NO"$SMHOLE = "NO"$HOLESIZE = "NO"$NUMHOLE = "NO"$EXTHEAD = "NO"$EXTWIN = "NO"$FFBUSY = "NO"$FFHEAD = "NO"$INDEXFEXT = "NO"$!NO FREE SPACE (DISK IS FULL) $NOSPACE:N$IF ((FREESPACE .NE. 0) .AND. (BIGHOLE .NE. 0) .AND. (BITHOLES .NE. 0)) THEN - GOTO FREESP$WRITEIT = "YES"$NOSPACE = "YES"$SPACE = "YES"+$!FREE SPACE < MEDIA_DISK_FREE OF DISK SIZE$FREESP:&$PCTFREE = (100 * FREESPACE) / TOTSIZE3$IF (PCTFREE .GT. MEDIA_DISK_FREE) THEN GOTO SMHOLE$WRITEIT = "YES"$FREESP = "YES"$SPACE = "YES"6$!LARGEST BITMAP HOLE < MEDIA_BHOLE_FREE% OF FREESPACE$SMHOLE:'$HOLEFREE = (100 * BIGHOLE) / FREESPACE7$IF (HOLEFREE .GT. MEDIA_BHOLE_FREE) THEN GOTO HOLESIZE$WRITEIT = "YES"8$IF (FREESPACE .GT. MEDIA_FREE_FRAG) THEN DEFRAG = "YES"$SMHOLE = "YES"*$!LARGEST BITMAP HOLE < MEDIA_BHOLE BLOCKS $HOLESIZE:'$HOLEFREE = (100 * BIGHOLE) / FREESPACE0$IF (BIGHOLE .GT. MEDIA_BHOLE) THEN GOTO NUMHOLE$WRITEIT = "YES"8$IF (FREESPACE .GT. MEDIA_FREE_FRAG) THEN DEFRAG = "YES"$HOLESIZE = "YES"*$!NUMBER OF BITMAP HOLES > MEDIA_BHOLE_NUM $NUMHOLE:5$IF (BITHOLES .LT. MEDIA_BHOLE_NUM) THEN GOTO EXTHEAD$WRITEIT = "YES"$NUMHOLE = "YES"$DEFRAG = "YES"7$!NUMBER OF FILES WITH EXTENT HEADERS > MEDIA_FILE_HEAD $EXTHEAD:5$IF (NUMHEADER .LT. MEDIA_FILE_HEAD) THEN GOTO EXTWIN$WRITEIT = "YES"$FILEFRAG = "YES"$EXTHEAD = "YES"B$!NUMBER OF FILES WITH EXTENTS > DISK WINDOW SIZE > MEDIA_FILE_EXT$EXTWIN:5$IF (NUMEXTENTS .LT. MEDIA_FILE_EXT) THEN GOTO FFHEAD$WRITEIT = "YES"$FILEFRAG = "YES"$EXTWIN = "YES"9$!FILE(S) WITH MEDIA_NUM_HEAD OR MORE HEADERS ON THE DISK$FFHEAD:3$IF (MOSTHEAD .LT. MEDIA_NUM_HEAD) THEN GOTO FFBUSY$WRITEIT = "YES"$FILEFRAG = "YES"$FFHEAD = "YES"3$!ONE OR MORE OF THE 5 WORST FILES IS A VPA HOTFILE$FFBUSY:'$IF (FFBUSYALL .EQ. 0) THEN GOTO INDEXF$WRITEIT = "YES"$!FILEFRAG = "YES"$FFBUSY = "YES"$INDEXF:@$IF (NUM_INDEXF_EXT .LT. MEDIA_INDEXF_EXTENTS) THEN GOTO CHECKIT$WRITEIT = "YES"$DEFRAG = "YES"$INDEXFEXT = "YES" $CHECKIT:+$IF (WRITEIT .EQS. "NO") THEN GOTO DISKDONE$WRITE OUTFILE " ""$!WRITE SUMMARY FILE FOR BAD DISKSO$IF ((DEFRAG .EQS. "YES") .OR. (SPACE .EQS. "YES")) THEN WRITE SUMFILE DISKNAME-$IF (DEFRAG .EQS. "YES") THEN WRITE SUMFILE -2"THIS DISK SHOULD BE REFRESHED USING BACKUP/IMAGE",$IF (SPACE .EQS. "YES") THEN WRITE SUMFILE -K"FILES SHOULD BE PURGED, DELETED OR MOVED TO ANOTHER DISK TO FREE UP SPACE"J$IF ((DEFRAG .EQS. "YES") .OR. (SPACE .EQS. "YES")) THEN WRITE SUMFILE " "$!WRITE DETAIL FOR BAD DISKS-$IF (DEFRAG .EQS. "YES") THEN WRITE OUTFILE -2"THIS DISK SHOULD BE REFRESHED USING BACKUP/IMAGE"/$IF (FILEFRAG .EQS. "YES") THEN WRITE OUTFILE -O"THIS DISK CONTAINS MANY BADLY FRAGMENTED FILES WHICH COULD IMPACT PERFORMANCE",$IF (SPACE .EQS. "YES") THEN WRITE OUTFILE -K"FILES SHOULD BE PURGED, DELETED OR MOVED TO ANOTHER DISK TO FREE UP SPACE"$WRITE OUTFILE " ".$IF (NOSPACE .EQS. "YES") THEN WRITE OUTFILE -"ERROR - DISK IS FULL"-$IF (FREESP .EQS. "YES") THEN WRITE OUTFILE ->"Warning - Disk has less than ''MEDIA_DISK_FREE'% empty space"-$IF (SMHOLE .EQS. "YES") THEN WRITE OUTFILE -Q"Largest chunk of freespace is less than ''MEDIA_BHOLE_FREE'% of total freespace"/$IF (HOLESIZE .EQS. "YES") THEN WRITE OUTFILE -?"Largest chunk of freespace is less than ''MEDIA_BHOLE' Blocks"0$IF (INDEXFEXT .EQS. "YES") THEN WRITE OUTFILE -S"There are more than ''MEDIA_INDEXF_EXTENTS' extents in indexf.sys, 1 header limit".$IF (NUMHOLE .EQS. "YES") THEN WRITE OUTFILE -J"Disk has ''MEDIA_BHOLE_NUM' or more bitmap holes (fragmented free space)".$IF (EXTHEAD .EQS. "YES") THEN WRITE OUTFILE -O"There are ''MEDIA_FILE_HEAD' or more files with extension headers on the disk"-$IF (EXTWIN .EQS. "YES") THEN WRITE OUTFILE -W"There are ''MEDIA_FILE_EXT' or more files with more extents than the disk window size"-$IF (FFHEAD .EQS. "YES") THEN WRITE OUTFILE -G"There are file(s) with ''MEDIA_NUM_HEAD' or more headers on this disk"-$IF (FFBUSY .EQS. "YES") THEN WRITE OUTFILE -;"The 5 most fragmented files on this disk are heavily used"$WRITE OUTFILE " "$WRITE OUTFILE DISKNAME$WRITE OUTFILE DISKHOLES$WRITE OUTFILE DISKSPACE$WRITE OUTFILE DISKFILES$WRITE OUTFILE DISKERR$WRITE OUTFILE DISKBUSY$WRITE OUTFILE DISKSUMM$WRITE OUTFILE DISKBLANK1$WRITE OUTFILE -K" The fragmentation summary report shows just the first 5 fragmented files"$WRITE OUTFILE DISKHEADER1$WRITE OUTFILE DISKHEADER2$WRITE OUTFILE DISKBLANK2$WRITE OUTFILE DISKFILE1$WRITE OUTFILE DISKFILE2$WRITE OUTFILE DISKFILE3$WRITE OUTFILE DISKFILE4$WRITE OUTFILE DISKFILE5$WRITE OUTFILE " " $DISKERR: $DISKDONE: $GOTO READREC$EROR:$DONE:$CLOSE SUMLIST$CLOSE OUTFILE$CLOSE SUMFILE$DELEX SYS$LOGIN:SUMLIST.TMP;*$EXIT:$PURGE/KEEP=3 FRAG_SUMMARY.*$EXIT-$!sample of fragmentation report for one diskM$!Disk analysis for _$2$DUA112: Logical name DISK178 from node <$!Bitmap holes 2 Largest hole 1422945 Pct busy 0.00<$!Disk size 2940951 Free space 2392392 Pct used 18%<$!Error cnt 0 Cluster size 3 Windows 7<$!Ave I/O /sec 0.00 Thruput /sec 0.00 Ave Que 0.001$! 0 Files > 1 header 0 Files > 7 extents$! E$! FILE HOTFILES FILEO$![DIRECTORY]FILENAME.EXT HEADERS NUM I/O EXTENTS FILESIZE*[DISK.B]PSPA$LIB.FOR;2+,5 ./ 4[- 0123KPWO5-6H57:,<^89GHJ (!*** MODULE $PSPABEGIN IDENT X1.1-36 *** *!*** MODULE $PSPACTXDEFS IDENT X1.1-38 *** PARAMETER CTX$M_C = '00000001'X# PARAMETER CTX$M_OPEN = '00000002'X# PARAMETER CTX$M_REPO = '00000004'X# PARAMETER CTX$M_DIRE = '00000008'X% PARAMETER CTX$M_NOMORE = '00000010'X# PARAMETER CTX$M_HOLE = '00000020'X# PARAMETER CTX$M_LOST = '00000040'X% PARAMETER CTX$M_NOFILE = '00000080'X$ PARAMETER CTX$M_IOERR = '00000100'X% PARAMETER CTX$M_REOPEN = '00000200'X& PARAMETER CTX$M_PARTIAL = '00000400'X' PARAMETER CTX$M_INCOMPAT = '00000800'X' PARAMETER CTX$M_REALTIME = '00001000'X" PARAMETER CTX$M_SUP = '00002000'X& PARAMETER CTX$M_NONSTOP = '00004000'X% PARAMETER CTX$M_FIDDLE = '00008000'X& PARAMETER CTX$M_NETWORK = '00010000'X& PARAMETER CTX$M_NETFILE = '00020000'X& PARAMETER CTX$M_NETLINK = '00040000'X& PARAMETER CTX$M_DSKFILE = '00080000'X$ PARAMETER CTX$M_SPAWN = '00100000'X% PARAMETER CTX$M_NOOLDY = '00200000'XG PARAMETER CTX$K_HOLIDAY_MAX = '00000020'X ! Maximum holidays possibleI PARAMETER CTX$K_INTERVAL_MAX = '000002D0'X ! Maximum intervals possible$ PARAMETER CTX$K_DAILY = '00000000'X% PARAMETER CTX$K_WEEKLY = '00000001'X& PARAMETER CTX$K_MONTHLY = '00000002'X( PARAMETER CTX$K_QUARTERLY = '00000003'X% PARAMETER CTX$K_YEARLY = '00000004'XA PARAMETER CTX$K_CTXLEN = '00000317'X ! Length of argument blockD PARAMETER CTX$K_ERREADFILE = '00000002'X ! DECps_ErrReadFile error? PARAMETER CTX$K_INCOMPAT = '00000004'X ! DECps_Incompat errorA PARAMETER CTX$K_NOALLOCVA = '00000006'X ! DECps_NOallocVA errorC PARAMETER CTX$K_NETFAILURE = '00000008'X ! DECps_NetFailure error? PARAMETER CTX$K_NOARGCNT = '00000010'X ! DECps_NoArgCnt errorA PARAMETER CTX$K_ARGCNT_V10 = '000002EF'X ! V1.0-34 CTX$L_ARGCNTA PARAMETER CTX$K_ARGCNT_V11 = '00000317'X ! V1.1-38 CTX$L_ARGCNT STRUCTURE /CONTEXT// INTEGER*4 CTX$L_ARGCNT ! Argument count, INTEGER*4 CTX$L_STATUS ! Status code UNION MAP7 INTEGER*4 CTX$L_CONDS ! Condition code"l$ DISKM010.B5  [DISK.B]PSPA$LIB.FOR;2["s END MAP MAP" PARAMETER CTX$S_C = 1: PARAMETER CTX$V_C = 0 ! Success or failure% PARAMETER CTX$S_OPEN = 16 PARAMETER CTX$V_OPEN = 1 ! File is open% PARAMETER CTX$S_REPO = 1A PARAMETER CTX$V_REPO = 2 ! Reposition file pointer% PARAMETER CTX$S_DIRE = 1; PARAMETER CTX$V_DIRE = 3 ! Directory in file' PARAMETER CTX$S_NOMORE = 1B PARAMETER CTX$V_NOMORE = 4 ! No more data available% PARAMETER CTX$S_HOLE = 19 PARAMETER CTX$V_HOLE = 5 ! Hole discovered% PARAMETER CTX$S_LOST = 1= PARAMETER CTX$V_LOST = 6 ! Data unintelligible' PARAMETER CTX$S_NOFILE = 1; PARAMETER CTX$V_NOFILE = 7 ! File is missing& PARAMETER CTX$S_IOERR = 1? PARAMETER CTX$V_IOERR = 8 ! Error accessing file' PARAMETER CTX$S_REOPEN = 1A PARAMETER CTX$V_REOPEN = 9 ! File must be reopened( PARAMETER CTX$S_PARTIAL = 1H PARAMETER CTX$V_PARTIAL = 10 ! At today's partial record ) PARAMETER CTX$S_INCOMPAT = 1C PARAMETER CTX$V_INCOMPAT = 11 ! Data is incompatible) PARAMETER CTX$S_REALTIME = 1A PARAMETER CTX$V_REALTIME = 12 ! Tread water at EOF$ PARAMETER CTX$S_SUP = 1C PARAMETER CTX$V_SUP = 13 ! Command to supersede file( PARAMETER CTX$S_NONSTOP = 1I PARAMETER CTX$V_NONSTOP = 14 ! Command to skip over errors' PARAMETER CTX$S_FIDDLE = 1H PARAMETER CTX$V_FIDDLE = 15 ! Textify FID if deleted file( PARAMETER CTX$S_NETWORK = 1I PARAMETER CTX$V_NETWORK = 16 ! create DECNET client server( PARAMETER CTX$S_NETFILE = 1G PARAMETER CTX$V_NETFILE = 17 ! create DECNET file server( PARAMETER CTX$S_NETLINK = 1G PARAMETER CTX$V_NETLINK = 18 ! DECnet link now in effect( PARAMETER CTX$S_DSKFILE = 1F PARAMETER CTX$V_DSKFILE = 19 ! Read satellite data file& PARAMETER CTX$S_SPAWN = 1F PARAMETER CTX$V_SPAWN = 20 ! Start a detached remote dc' PARAMETER CTX$S_NOOLDY = 1H PARAMETER CTX$V_NOOLDY = 21 ! Disallow old context blocks( PARAMETER CTX$S_SPARES = 10( PARAMETER CTX$V_SPARES = 22 BYTE %FILL (4) END MAP END UNION9 INTEGER*4 CTX$L_HOLE_BGN ! Hole in timeframe start INTEGER*4 CTX$L_HOLE_BGN27 INTEGER*4 CTX$L_HOLE_END ! Hole in timeframe end INTEGER*4 CTX$L_HOLE_END20 INTEGER*4 CTX$L_CONTEXT ! Context number1 BYTE CTX$B_NODELEN ! Nodename length3 CHARACTER*6 CTX$T_NODENAME ! Nodename string7 INTEGER*4 CTX$L_START ! Beginning date and time INTEGER*4 CTX$L_START23 INTEGER*4 CTX$L_STOP ! Ending date and time INTEGER*4 CTX$L_STOP22 INTEGER*2 CTX$W_EXTLEN ! Size of extension9 CHARACTER*39 CTX$T_EXT ! Uniquely named extension7 INTEGER*4 CTX$L_HOLIDAY_CNT ! Number of holidays2 CHARACTER*256 CTX$T_HOLIDAYS ! Holiday list< INTEGER*4 CTX$L_INTERVAL ! Interval length (1hr/1day)! in minutes (1440=day)B INTEGER*4 CTX$L_PERIODICITY ! Schedule repetition frequency! in minutes (10080=weekly)6 INTEGER*4 CTX$L_GRANULARITY ! Length of period ! Daily weekly or monthly codeE INTEGER*4 CTX$A_USERGROUP_FAMILY_LH ! Usergroup family listheadI INTEGER*4 CTX$A_TRANSACTION_FAMILY_LH ! Transaction family listhead< INTEGER*4 CTX$L_RETENTION ! Delete after so many days0 INTEGER*4 CTX$L_ALQ ! Preallocation size6 INTEGER*4 CTX$L_DISKSPACE ! Required disk space; INTEGER*4 CTX$L_UPDATE ! Most recent calendar date  INTEGER*4 CTX$L_UPDATE2: INTEGER*4 CTX$Q_WK_SKEW(2) ! Time week is skewed by UNION MAP@ CHARACTER*3 CTX$T_SCHED_MON ! Daily schedule 0-23@ CHARACTER*3 CTX$T_SCHED_TUE ! Daily schedule 0-23@ CHARACTER*3 CTX$T_SCHED_WED ! Daily schedule 0-23@ CHARACTER*3 CTX$T_SCHED_THU ! Daily schedule 0-23@ CHARACTER*3 CTX$T_SCHED_FRI ! Daily schedule 0-23@ CHARACTER*3 CTX$T_SCHED_SAT ! Daily schedule 0-23@ CHARACTER*3 CTX$T_SCHED_SUN ! Daily schedule 0-23% CHARACTER*7 CTX$t_fill_1 END MAP MAP% CHARACTER*28 CTX$T_SCHED END MAP END UNIONC CHARACTER*28 CTX$T_WKLY_BITMAP ! 2 minute hr interval filter6 CHARACTER*28 CTX$T_HOLY_BITMAP ! Holiday filter2 INTEGER*4 CTX$L_OUR_ERR ! DECps error code0 INTEGER*4 CTX$L_RMS_ERR ! RMS error code0 INTEGER*4 CTX$L_RMS_IOSB ! RMS error IOSB5 INTEGER*4 CTX$A_TIM_REC ! TIME record address7 INTEGER*4 CTX$A_MET_REC ! METRIC record address: INTEGER*4 CTX$A_PAR_REC ! PARAMETER record address8 INTEGER*4 CTX$A_PRO_REC ! PROCESS record address5 INTEGER*4 CTX$A_DEV_REC ! DISK record address5 INTEGER*4 CTX$A_COM_REC ! COMM record address8 INTEGER*4 CTX$A_MAG_REC ! MAGTAPE record address> INTEGER*4 CTX$A_CFG_REC ! CONFIGURATION record address4 INTEGER*4 CTX$A_CPU_REC ! CPU record address5 INTEGER*4 CTX$A_RUL_REC ! RULE record address5 INTEGER*4 CTX$A_FIL_REC ! File record address< INTEGER*4 CTX$A_TRN_REC ! TRANSACTION record address5 INTEGER*4 CTX$A_PRT_REC ! PORT record address3 INTEGER*4 CTX$L_TIM_CNT ! TIME record count5 INTEGER*4 CTX$L_MET_CNT ! METRIC record count8 INTEGER*4 CTX$L_PAR_CNT ! PARAMETER record count6 INTEGER*4 CTX$L_PRO_CNT ! PROCESS record count3 INTEGER*4 CTX$L_DEV_CNT ! DISK record count3 INTEGER*4 CTX$L_COM_CNT ! COMM record count6 INTEGER*4 CTX$L_MAG_CNT ! MAGTAPE record count< INTEGER*4 CTX$L_CFG_CNT ! CONFIGURATION record count2 INTEGER*4 CTX$L_CPU_CNT ! CPU record count3 INTEGER*4 CTX$L_RUL_CNT ! RULE record countM3 INTEGER*4 CTX$L_FIL_CNT ! File record count0: INTEGER*4 CTX$L_TRN_CNT ! TRANSACTION record count3 INTEGER*4 CTX$L_PRT_CNT ! PORT record count05 INTEGER*4 CTX$L_TIM_OVF ! TIME overflow countR8 INTEGER*4 CTX$L_MET_OVF ! METRIC overflow count; INTEGER*4 CTX$L_PAR_OVF ! PARAMETER overflow countC8 INTEGER*4 CTX$L_PRO_OVF ! PROCESS overflow count6 INTEGER*4 CTX$L_DEV_OVF ! DISK overflow count5 INTEGER*4 CTX$L_COM_OVF ! COMM overflow countT8 INTEGER*4 CTX$L_MAG_OVF ! MAGTAPE overflow count? INTEGER*4 CTX$L_CFG_OVF ! CONFIGURATION overflow count=5 INTEGER*4 CTX$L_CPU_OVF ! CPU overflow countP6 INTEGER*4 CTX$L_RUL_OVF ! RULE overflow count6 INTEGER*4 CTX$L_FIL_OVF ! FILE overflow count= INTEGER*4 CTX$L_TRN_OVF ! TRANSACTION overflow counta6 INTEGER*4 CTX$L_PRT_OVF ! PORT overflow count2 BYTE CTX$B_FILE_LEN ! File spec length3 INTEGER*4 CTX$A_FILE_PTR ! File spec address08 INTEGER*4 CTX$L_DATA_VERSION ! DECps data version2 INTEGER*4 CTX$Q_DATE(2) ! Date at midnight8 CHARACTER*39 CTX$T_FAMILY ! Family name selection? CHARACTER*39 CTX$T_TRANSFAM ! Transaction name selection0: INTEGER*4 CTX$A_DATE_LIST ! Date range list pointer! Link - Begin - End = INTEGER*4 CTX$A_ASTRTE ! Realtime AST routine pointer_6 INTEGER*4 CTX$L_ASTARG ! Realtime AST argumentA INTEGER*4 CTX$L_COLL_DEF_LEN ! Collection extension length1B CHARACTER*20 CTX$T_COLL_DEF_NAME ! Collection file extensionD INTEGER*4 CTX$A_COLL_DEF_PTER ! Collection definition pointer END STRUCTURE ! CONTEXT S*!*** MODULE $PSPAPRTDEFS IDENT X1.1-36 ***% PARAMETER PRT_M_MEMBER = '00000001'X4" PARAMETER PRT_M_HSC = '00000002'X& PARAMETER PRT_M_VAXNODE = '00000004'X% PARAMETER PRT_V_MEMBER = '00000000'X" PARAMETER PRT_V_HSC = '00000001'X& PARAMETER PRT_V_VAXNODE = '00000002'X) PARAMETER PRT_S_VPAPRTRECS = '000000B5'Xf STRUCTURE /PSPAPRTRECS/ UNION MAP BYTE PRT_B_RECD  END MAP MAP5 BYTE PRT_B_TYPE ! record type 12V END MAP END UNION2 INTEGER*4 PRT_A_NODENAME ! nodename address# INTEGER*4 PRT_A_PATH ! pathi3 INTEGER*4 PRT_A_HWNAME ! port hardware name 0 INTEGER*4 PRT_L_PORT_ID ! poq"$ DISKM010.B5  [DISK.B]PSPA$LIB.FOR;2["rt type code/ INTEGER*4 PRT_A_PORT ! port type stringX UNION MAP0 INTEGER*4 PRT_L_STATUS ! path status END MAP MAP. PARAMETER PRT_S_STATUS_MEMBER = 1. PARAMETER PRT_V_STATUS_MEMBER = 0+ PARAMETER PRT_S_STATUS_HSC = 1N+ PARAMETER PRT_V_STATUS_HSC = 1P/ PARAMETER PRT_S_STATUS_VAXNODE = 1C/ PARAMETER PRT_V_STATUS_VAXNODE = 2 * PARAMETER PRT_S_STATUS_NI = 1* PARAMETER PRT_V_STATUS_NI = 3* PARAMETER PRT_S_STATUS_CI = 1* PARAMETER PRT_V_STATUS_CI = 4* PARAMETER PRT_S_STATUS_RF = 1* PARAMETER PRT_V_STATUS_RF = 5- PARAMETER PRT_S_STATUS_CIXCD = 1t9 PARAMETER PRT_V_STATUS_CIXCD = 6 ! XCD port . PARAMETER PRT_S_STATUS_SINGLE = 1. PARAMETER PRT_V_STATUS_SINGLE = 7: BYTE %FILL (1) ! XCD counts only one path END MAP END UNION4 REAL*4 PRT_F_DGSENT ! datagrams sent rate8 REAL*4 PRT_F_DGRCVD ! datagrams received rate; REAL*4 PRT_F_DGDISCARD ! datagrams discarded rateC> REAL*4 PRT_F_MSGSENT ! sequenced messages sent rateB REAL*4 PRT_F_MSGRCVD ! sequenced messages received rate@ REAL*4 PRT_F_SNDATS ! block send datas initiated rateA REAL*4 PRT_F_KBYTSENT ! Kbytes sent via send datas rateCD REAL*4 PRT_F_REQDATS ! block request datas initiated rateH REAL*4 PRT_F_KBYTREQD ! Kbytes received via request datas rateH REAL*4 PRT_F_KBYTMAPD ! Kbytes mapped for block transfers rate+ REAL*4 PRT_F_ACKS0 ! path 0 ACKSR+ REAL*4 PRT_F_ACKS1 ! path 1 ACKSR+ REAL*4 PRT_F_NAKS0 ! path 0 NAKS + REAL*4 PRT_F_NAKS1 ! path 1 NAKS, REAL*4 PRT_F_NRSP0 ! path 0 NRSPs, REAL*4 PRT_F_NRSP1 ! path 1 NRSPs5 REAL*4 PRT_F_DG_DISC ! datagrams discardedA$ REAL*4 PRT_F_SNDDAT_OPER_SNT!! Send Data operations completed$ REAL*4 PRT_F_SNDDAT_DATA_SNT.! Bytes of SNDDAT sent by Send Data commands & REAL*4 PRT_F_SNDDAT_BODIES_SNT%! SNDDAT Data bodies sent from host C$ REAL*4 PRT_F_REQDAT_OPER_SNT! REQDAT operations completed B$ REAL*4 PRT_F_RETDAT_DATA_RCV3! Bytes of data received by host in RETDAT bodies s& REAL*4 PRT_F_RETDAT_BODIES_RCV'! RETDAT Data bodies received by host C& REAL*4 PRT_F_SNTDAT_BODIES_REC0! SNTDAT bodies received and delivered to host $ REAL*4 PRT_F_SNTDAT_DATA_REC-! Bytes of 'DATA' received in SNTDAT bodies  REAL*4 PRT_F_CNF_SNT!! Block Data confirmations sent & REAL*4 PRT_F_DATREQ_BODIES_RCV! DATREQ bodies received & REAL*4 PRT_F_RETDAT_BODIES_SNT%! RETDAT Data bodies sent from host n$ REAL*4 PRT_F_RETDAT_DATA_SNT ! Bytes of data sent by RETDAT  REAL*4 PRT_F_DGSNT! DG bodies sent  REAL*4 PRT_F_DG_TXT_SNT ! Bytes of DG TEXT Sent REAL*4 PRT_F_MSG_SNT! MSG bodies sent REAL*4 PRT_F_MSG_TXT_SNT! Bytes of MSG TEXT SentR REAL*4 PRT_F_MISC_SNT!! All other opcode bodies sent  REAL*4 PRT_F_DG_REC ,! DG bodies received and delivered to host  REAL*4 PRT_F_DG_TXTREC.! Bytes of dg received and delivered to host  REAL*4 PRT_F_MSG_REC! MSG bodies received c REAL*4 PRT_F_MSG_TXT_REC4! Bytes of msg text received and delivered to host  REAL*4 PRT_F_MISC_REC ! All other bodies received T END STRUCTURE ! PSPAPRTRECS h*!*** MODULE $PSPACFGDEFS IDENT X1.1-36 ***% PARAMETER CFG_M_MEMBER = '00000001'X " PARAMETER CFG_M_HSC = '00000002'X& PARAMETER CFG_M_VAXNODE = '00000004'X% PARAMETER CFG_V_MEMBER = '00000000'Xd" PARAMETER CFG_V_HSC = '00000001'X& PARAMETER CFG_V_VAXNODE = '00000002'X$ PARAMETER CFG_K_DEUNA = '00000001'X$ PARAMETER CFG_K_DELUA = '00000002'X$ PARAMETER CFG_K_DEQNA = '00000003'X$ PARAMETER CFG_K_DELQA = '00000004'X$ PARAMETER CFG_K_DEBNA = '00000005'X$ PARAMETER CFG_K_DEBNT = '00000006'X$ PARAMETER CFG_K_DESVA = '00000007'X! PARAMETER CFG_K_NI = '0000003F'X_$ PARAMETER CFG_K_CI750 = '00000040'X$ PARAMETER CFG_K_CI780 = '00000041'X% PARAMETER CFG_K_BCI750 = '00000042'X4% PARAMETER CFG_K_CIBCAA = '00000043'X % PARAMETER CFG_K_CIBCAB = '00000044'Xo$ PARAMETER CFG_K_CIXCD = '00000045'X! PARAMETER CFG_K_CI = '0000007F'XC& PARAMETER CFG_K_DSSISII = '00000080'X( PARAMETER CFG_K_DSSISWIFT = '00000081'X' PARAMETER CFG_K_DSSISHAC = '00000082'XR( PARAMETER CFG_K_DSSIKFQSA = '00000083'X( PARAMETER CFG_K_DSSIKFMSA = '00000084'X& PARAMETER CFG_K_DSSIXON = '00000085'X# PARAMETER CFG_K_DSSI = '000000BF'X4) PARAMETER CFG_S_VPACFGRECS = '0000007B'X  STRUCTURE /PSPACFGRECS/ UNION MAP BYTE CFG_B_RECDC END MAP MAP4 BYTE CFG_B_TYPE ! record type 9 END MAP END UNION: INTEGER*2 CFG_W_NODE_CNT ! cluster node name count 2 INTEGER*4 CFG_A_NODENAME ! nodename address CHARACTER*12 CFG_t_fill_1 UNION MAP' INTEGER*4 CFG_A_PATH ! pathR END MAP MAPE INTEGER*4 CFG_A_HARDWARE ! V5.0 HSC node hardware typeI END MAP END UNION UNION MAP8 INTEGER*4 CFG_L_STATUS ! node cluster status END MAP MAP. PARAMETER CFG_S_STATUS_MEMBER = 1. PARAMETER CFG_V_STATUS_MEMBER = 0+ PARAMETER CFG_S_STATUS_HSC = 1L+ PARAMETER CFG_V_STATUS_HSC = 1 / PARAMETER CFG_S_STATUS_VAXNODE = 1 / PARAMETER CFG_V_STATUS_VAXNODE = 2M* PARAMETER CFG_S_STATUS_NI = 1* PARAMETER CFG_V_STATUS_NI = 3* PARAMETER CFG_S_STATUS_CI = 1* PARAMETER CFG_V_STATUS_CI = 4* PARAMETER CFG_S_STATUS_RF = 1* PARAMETER CFG_V_STATUS_RF = 5 BYTE %FILL (1)I END MAP END UNION8 REAL*4 SCS_F_DGSENT ! datagrams sent rate< REAL*4 SCS_F_DGRCVD ! datagrams received rate? REAL*4 SCS_F_DGDISCARD ! datagrams discarded rateoB REAL*4 SCS_F_MSGSENT ! sequenced messages sent rateF REAL*4 SCS_F_MSGRCVD ! sequenced messages received rateD REAL*4 SCS_F_SNDATS ! block send datas initiated rateE REAL*4 SCS_F_KBYTSENT ! Kbytes sent via send datas rateoH REAL*4 SCS_F_REQDATS ! block request datas initiated rateL REAL*4 SCS_F_KBYTREQD ! Kbytes received via request datas rateL REAL*4 SCS_F_KBYTMAPD ! Kbytes mapped for block transfers rateL REAL*4 SCS_F_QCR_CNT ! connection queued for send credit rateM REAL*4 SCS_F_QBDT_CNT ! connection queued for buffer descs rateF; INTEGER*4 CFG_A_HWNAME ! V5.0 VAXnode hardware namea6 INTEGER*4 CFG_L_ADAPTER_ID ! CI/NI adapter code4 INTEGER*4 CFG_A_ADAPTER ! CI/NI adapter name* INTEGER*4 CFG_A_SYSAP ! SYSAP name CHARACTER*32 CFG_t_reserved END STRUCTURE ! PSPACFGRECS r*!*** MODULE $PSPAPRODEFS IDENT X1.1-36 ***$ PARAMETER PRO_M_RSN_0 = '00000001'X* PARAMETER PRO_M_RSN_ASTWAIT = '00000002'X* PARAMETER PRO_M_RSN_MAILBOX = '00000004'X+ PARAMETER PRO_M_RSN_NPDYNMEM = '00000008'XE) PARAMETER PRO_M_RSN_PGFILE = '00000010'XP+ PARAMETER PRO_M_RSN_PGDYNMEM = '00000020'XM* PARAMETER PRO_M_RSN_BRKTHRU = '00000040'X* PARAMETER PRO_M_RSN_IACLOCK = '00000080'X) PARAMETER PRO_M_RSN_JQUOTA = '00000100'X0) PARAMETER PRO_M_RSN_LOCKID = '00000200'XP* PARAMETER PRO_M_RSN_SWPFILE = '00000400'X+ PARAMETER PRO_M_RSN_MPLEMPTY = '00000800'XU* PARAMETER PRO_M_RSN_MPWBUSY = '00001000'X& PARAMETER PRO_M_RSN_SCS = '00002000'X& PARAMETER PRO_M_RSN_CLU = '00004000'X$ PARAMETER PRO_M_SSS_0 = '00000001'X( PARAMETER PRO_M_SSS_COLPG = '00000002'X( PARAMETER PRO_M_SSS_MWAIT = '00000004'X& PARAMETER PRO_M_SSS_CEF = '00000008'X& PARAMETER PRO_M_SSS_PFW = '00000010'X& PARAMETER PRO_M_SSS_LEF = '00000020'X' PARAMETER PRO_M_SSS_LEFO = '00000040'XP& PARAMETER PRO_M_SSS_HIB = '00000080'X' PARAMETER PRO_M_SSS_HIBO = '00000100'XT' PARAMETER PRO_M_SSS_SUSP = '00000200'XM( PARAMETER PRO_M_SSS_SUSPO = '00000400'X& PARAMETER PRO_M_SSS_FPG = '00000800'X& PARAMETER PRO_M_SSS_COM = '00001000'X' PARAMETER PRO_M_SSS_COMO = '00002000'X & PARAMETER PRO_M_SSS_CUR = '00004000'X> PARAMETER PRO_V_KAST = '00000000'X ! KAST sponsored intervalD PARAMETER PRO_V_TT_ENDS = '00000001'X ! Think time ended interval G PARAMETER PRO_V_RW:J$ DISKM010.B5  [DISK.B]PSPA$LIB.FOR;2[]"'T_ENDS = '00000002'X ! Response time ended interval MF PARAMETER PRO_V_DT_EVENT = '00000003'X ! Transaction event sponsoredN PARAMETER PRO_V_DT_HEADER = '00000004'X ! Transaction event header sponsored> PARAMETER PRO_M_KAST = '00000001'X ! KAST sponsored intervalD PARAMETER PRO_M_TT_ENDS = '00000002'X ! Think time ended interval G PARAMETER PRO_M_RT_ENDS = '00000004'X ! Response time ended interval 7G PARAMETER PRO_M_DT_EVENT = '00000008'X ! Transaction event sponsored DN PARAMETER PRO_M_DT_HEADER = '00000010'X ! Transaction event header sponsored$ PARAMETER PRO_M_NOAST = '00000001'X" PARAMETER PRO_M_JIB = '00000002'X" PARAMETER PRO_M_PCB = '00000003'X! PARAMETER PRO_M_IO = '00000004'X " PARAMETER PRO_M_IRP = '00000005'X$ PARAMETER PRO_M_DLOCK = '00000006'X" PARAMETER PRO_M_ENQ = '00000007'X" PARAMETER PRO_M_UNK = '00000020'X$ PARAMETER PRO_M_INTER = '00000001'X$ PARAMETER PRO_M_BATCH = '00000002'X& PARAMETER PRO_M_NETWORK = '00000004'X' PARAMETER PRO_M_DETACHED = '00000008'Xe& PARAMETER PRO_M_SUBPROC = '00000010'X) PARAMETER PRO_S_VPAPRORECS = '000000D5'XA STRUCTURE /PSPAPRORECS/* BYTE PRO_B_RECD ! record type! INTEGER*2 PRO_W_PIX ! PIXA* INTEGER*2 PRO_W_NODE ! node number9 REAL*4 PRO_F_CPUTIM ! CPU time (10 Msec units)R4 REAL*4 PRO_F_PAGEFLTS ! page fault /cpusec7 REAL*4 PRO_F_PGFLTIO ! page fault IO /cpusec1/ REAL*4 PRO_F_DIRIOS ! direct IO /sec 1 REAL*4 PRO_F_BUFIOS ! buffered IO /secA9 REAL*4 PRO_F_GPGCNT ! global pages in WS count : REAL*4 PRO_F_PPGCNT ! process pages in WS count. REAL*4 PRO_F_WSSIZE ! WS size limit, REAL*4 PRO_F_DFWSCNT ! WS default* REAL*4 PRO_F_WSQUOTA ! WS quota+ REAL*4 PRO_F_WSEXTENT ! WS extentT/ REAL*4 PRO_F_UPTIME ! runtime (Secs)h8 REAL*4 PRO_F_IMGACTS ! image activations /sec3 REAL*4 PRO_F_COMPU ! % Time in COM stateR UNION MAP5 INTEGER*2 PRO_W_RSN ! resource MWAIT mask  END MAP MAP& PARAMETER PRO_S_RSN_0 = 1& PARAMETER PRO_V_RSN_0 = 0, PARAMETER PRO_S_RSN_ASTWAIT = 1, PARAMETER PRO_V_RSN_ASTWAIT = 1, PARAMETER PRO_S_RSN_MAILBOX = 1, PARAMETER PRO_V_RSN_MAILBOX = 2- PARAMETER PRO_S_RSN_NPDYNMEM = 1B- PARAMETER PRO_V_RSN_NPDYNMEM = 3T+ PARAMETER PRO_S_RSN_PGFILE = 1P+ PARAMETER PRO_V_RSN_PGFILE = 4 - PARAMETER PRO_S_RSN_PGDYNMEM = 1- PARAMETER PRO_V_RSN_PGDYNMEM = 5S, PARAMETER PRO_S_RSN_BRKTHRU = 1, PARAMETER PRO_V_RSN_BRKTHRU = 6, PARAMETER PRO_S_RSN_IACLOCK = 1, PARAMETER PRO_V_RSN_IACLOCK = 7+ PARAMETER PRO_S_RSN_JQUOTA = 1h+ PARAMETER PRO_V_RSN_JQUOTA = 8d+ PARAMETER PRO_S_RSN_LOCKID = 1R+ PARAMETER PRO_V_RSN_LOCKID = 9e, PARAMETER PRO_S_RSN_SWPFILE = 1- PARAMETER PRO_V_RSN_SWPFILE = 10P- PARAMETER PRO_S_RSN_MPLEMPTY = 1X. PARAMETER PRO_V_RSN_MPLEMPTY = 11, PARAMETER PRO_S_RSN_MPWBUSY = 1- PARAMETER PRO_V_RSN_MPWBUSY = 12G( PARAMETER PRO_S_RSN_SCS = 1) PARAMETER PRO_V_RSN_SCS = 13E( PARAMETER PRO_S_RSN_CLU = 1) PARAMETER PRO_V_RSN_CLU = 140 BYTE %FILL (2)Q END MAP END UNION UNION MAP6 INTEGER*2 PRO_W_SSS ! scheduler state mask END MAP MAP& PARAMETER PRO_S_SSS_0 = 1& PARAMETER PRO_V_SSS_0 = 0* PARAMETER PRO_S_SSS_COLPG = 1* PARAMETER PRO_V_SSS_COLPG = 1* PARAMETER PRO_S_SSS_MWAIT = 1* PARAMETER PRO_V_SSS_MWAIT = 2( PARAMETER PRO_S_SSS_CEF = 1( PARAMETER PRO_V_SSS_CEF = 3( PARAMETER PRO_S_SSS_PFW = 1( PARAMETER PRO_V_SSS_PFW = 4( PARAMETER PRO_S_SSS_LEF = 1( PARAMETER PRO_V_SSS_LEF = 5) PARAMETER PRO_S_SSS_LEFO = 1K) PARAMETER PRO_V_SSS_LEFO = 6S( PARAMETER PRO_S_SSS_HIB = 1( PARAMETER PRO_V_SSS_HIB = 7) PARAMETER PRO_S_SSS_HIBO = 1 ) PARAMETER PRO_V_SSS_HIBO = 8 ) PARAMETER PRO_S_SSS_SUSP = 1 ) PARAMETER PRO_V_SSS_SUSP = 9U* PARAMETER PRO_S_SSS_SUSPO = 1+ PARAMETER PRO_V_SSS_SUSPO = 10D( PARAMETER PRO_S_SSS_FPG = 1) PARAMETER PRO_V_SSS_FPG = 11( PARAMETER PRO_S_SSS_COM = 1) PARAMETER PRO_V_SSS_COM = 12 ) PARAMETER PRO_S_SSS_COMO = 1 * PARAMETER PRO_V_SSS_COMO = 13( PARAMETER PRO_S_SSS_CUR = 1) PARAMETER PRO_V_SSS_CUR = 14t BYTE %FILL (2)  END MAP END UNION' BYTE PRO_B_STATUS ! statusM, BYTE PRO_B_PRIB ! base priority% BYTE PRO_B_STATE ! state & BYTE PRO_B_PRI ! priority1 BYTE PRO_B_IMGACT ! image activation 2 BYTE PRO_B_IMGTRM ! image termination% BYTE PRO_B_LOGIN ! login ' BYTE PRO_B_LOGOUT ! logout 7 BYTE PRO_B_KAST ! Interval characteristicsR1 BYTE PRO_B_AWSA ! AWSA on/off statusC- BYTE PRO_B_PAGIDX ! paging indexV4 BYTE PRO_B_SWPIDX ! swapping file index> INTEGER*4 PRO_A_IMAGENAME ! image name string desc addrB INTEGER*4 PRO_A_IMAGEDIR ! image directory string desc addr; INTEGER*4 PRO_A_USERNAME ! username string desc addrs4 INTEGER*4 PRO_L_PID ! extended process index1 INTEGER*4 PRO_L_MWAIT ! MWAIT hung reasonF. REAL*4 PRO_F_THRUPUT ! Thruput /sec- REAL*4 PRO_F_OPS ! Operations /sec 9 REAL*4 PRO_F_TAPE_IO ! Tape IO operations /sec 7 REAL*4 PRO_F_TAPE_THRUPUT ! Tape thruput /secF@ REAL*4 PRO_F_TERM_INPUT ! Terminal input commands /sec; REAL*4 PRO_F_TERM_THRUPUT ! Terminal Thruput /sec< REAL*4 PRO_F_THINK_TIME ! Think time in milli secsB REAL*4 PRO_F_RESPONSE_TIME ! Response time in milli secs! INTEGER*4 PRO_L_UIC ! UICRC INTEGER*4 PRO_A_DEVICE_1 ! 1st Top IO disk or tape disk nameB REAL*4 PRO_F_OPS_1 ! 1st Top IO disk or tape operationsC INTEGER*4 PRO_A_DEVICE_2 ! 2nd Top IO disk or tape disk nameAB REAL*4 PRO_F_OPS_2 ! 2nd Top IO disk or tape operations. INTEGER*4 PRO_A_ACCOUNT ! Account name. INTEGER*4 PRO_A_PROCESS ! Process name< REAL*4 PRO_F_VA_USED ! Virtual address space usedE INTEGER*4 PRO_A_FAMILY ! Family (null string from daily data)BH INTEGER*4 PRO_A_WORKLOAD ! Workload (null string from daily data)E REAL*4 PRO_F_COMMAND_WAIT ! Think time continuance in msecs0%! - signals continuing thinking time'"! + signals duration of last waitI REAL*4 PRO_F_RESPONSE_WAIT ! Response time continuance in msecsP%! - signals continuing response timeT&! + signals duration of last responseK REAL*4 PRO_F_RESPONSE_TIME2 ! Response time in msecs (TT+RT=100%)0F INTEGER*4 PRO_L_EVENT_TYPE ! Start-Stop / Facility / Event type"! b<31-28> / b<27-16> / b<15-0>2 INTEGER*4 PRO_L_EVENT_HANDLE ! Event handle@ INTEGER*4 PRO_A_EVENT_US ! Event user specified qualifier3 INTEGER*4 PRO_A_EVENT_ID ! Event description0! Start of 1.1 additionsS UNION MAPH INTEGER*4 PRO_L_PROCTYPE ! Process type (batch,interactive... END MAP MAP& PARAMETER PRO_S_INTER = 17 PARAMETER PRO_V_INTER = 0 ! Interactive & PARAMETER PRO_S_BATCH = 10 PARAMETER PRO_V_BATCH = 1 ! Batch( PARAMETER PRO_S_NETWORK = 14 PARAMETER PRO_V_NETWORK = 2 ! Network) PARAMETER PRO_S_DETACHED = 1R6 PARAMETER PRO_V_DETACHED = 3 ! Detached( PARAMETER PRO_S_SUBPROC = 18 PARAMETER PRO_V_SUBPROC = 4 ! Sub process, PARAMETER PRO_S_PROCSPARES = 27+ PARAMETER PRO_V_PROCSPARES = 50( BYTE %FILL (4) ! Spares END MAP END UNION) INTEGER*4 PRO_L_MPID ! Master PIDPI INTEGER*4 PRO_A_FULLIMAGE ! Disk/Dir Image Name (disk,directory..)R CHARACTER*4 PRO_t_reservedt END STRUCTURE ! PSPAPRORECS P*!*** MODULE $PSPAMETDEFS IDENT X1.1-36 ***) PARAMETER MET_S_VPAMETRECS = '000002D$ DISKM010.B5  [DISK.B]PSPA$LIB.FOR;2["81'XR STRUCTURE /PSPAMETRECS/, BYTE MET_B_TYPE ! Record type 3< REAL*4 MET_F_PROCCNT ! Total number state samples7 REAL*4 MET_F_COLPG ! Scheduler states counts0 REAL*4 MET_F_MWAIT ! 0 REAL*4 MET_F_CEF ! K REAL*4 MET_F_PFW ! M REAL*4 MET_F_LEF ! P REAL*4 MET_F_LEFO !  REAL*4 MET_F_HIB ! P REAL*4 MET_F_HIBO !  REAL*4 MET_F_SUSP !  REAL*4 MET_F_SUSPO ! C REAL*4 MET_F_FPG ! P REAL*4 MET_F_COM ! R REAL*4 MET_F_COMO !  REAL*4 MET_F_CUR ! /: REAL*4 MET_F_INTSTK ! % Time on Interrupt stack8 REAL*4 MET_F_KERNEL ! % Time on Kernel stacks4 REAL*4 MET_F_EXEC ! % Time on Exec stacks; REAL*4 MET_F_SUPER ! % Time on Supervisor Stacksp4 REAL*4 MET_F_USER ! % Time on User stacks= REAL*4 MET_F_COMPAT ! % Time in Compatibility mode * REAL*4 MET_F_IDLE ! % Time Idle UNION MAP@ REAL*4 MET_F_MP_SYNCH ! Time in MP synchronization END MAP MAP4 REAL*4 MET_F_INTSTK2 ! (not used) END MAP END UNION, REAL*4 MET_F_KERNEL2 ! (not used)* REAL*4 MET_F_EXEC2 ! (not used)+ REAL*4 MET_F_SUPER2 ! (not used)e* REAL*4 MET_F_USER2 ! (not used), REAL*4 MET_F_COMPAT2 ! (not used)* REAL*4 MET_F_IDLE2 ! (not used)6 REAL*4 MET_F_FAULTS ! Total page fault rate5 REAL*4 MET_F_PREADS ! Page fault read read 9 REAL*4 MET_F_PREADIO ! Page fault read IO rateR7 REAL*4 MET_F_PWRITES ! page fault write rate : REAL*4 MET_F_PWRITIO ! Page fault write IO rateA REAL*4 MET_F_FREFLTS ! Page faults from Free list rateBE REAL*4 MET_F_MFYFLTS ! Page faults from modified list rateR= REAL*4 MET_F_DZROFLTS ! Demand Zero page fault rateN7 REAL*4 MET_F_GVALID ! Global page fault rate = REAL*4 MET_F_WRTINPROG ! Transition page fault rateP9 REAL*4 MET_F_SYSFAULTS ! System page fault rateO5 REAL*4 MET_F_FREECNT ! Free list page rateK8 REAL*4 MET_F_MFYCNT ! Modified list page rate4 REAL*4 MET_F_DIRIO ! Total Direct IO rate6 REAL*4 MET_F_BUFIO ! Total Buffered IO rate3 REAL*4 MET_F_MBREADS ! Mailbox read rateS4 REAL*4 MET_F_MBWRITES ! Mailbox write rate> REAL*4 MET_F_LOGNAM ! Logical name translation rate- REAL*4 MET_F_ISWPCNT ! Inswap rate 7 REAL*4 MET_F_FCPTURN ! File window miss rateM3 REAL*4 MET_F_SPLIT ! Split Transfer rateP7 REAL*4 MET_F_HIT ! Transfers w/o window turnW7 REAL*4 MET_F_DIRHIT ! Directory LRU hit rate : REAL*4 MET_F_DIRMISS ! Directory LRU misse rate5 REAL*4 MET_F_QUOHIT ! Quota cache hit rateC8 REAL*4 MET_F_QUOMISS ! Quota cache misse rate7 REAL*4 MET_F_FIDHIT ! File ID cache hit rateP: REAL*4 MET_F_FIDMISS ! File ID cache misse rate6 REAL*4 MET_F_EXTHIT ! Extent cahce hit rate9 REAL*4 MET_F_EXTMISS ! Extent cache misse rateS> REAL*4 MET_F_FILHDR_HIT ! File header cache hit rateA REAL*4 MET_F_FILHDR_MISS ! File header cache misse rateVB REAL*4 MET_F_DIRDATA_HIT ! Directory data block hit rateE REAL*4 MET_F_DIRDATA_MISS ! Directory data block misse rate1E REAL*4 MET_F_STORAGMAP_HIT ! Storage bit map cache hit rateSH REAL*4 MET_F_STORAGMAP_MISS ! Storage bit map cache misse rate/ REAL*4 MET_F_OPENS ! Files open rateP0 REAL*4 MET_F_ERASEIO ! Erase QIO rate; REAL*4 MET_F_VOLLCK ! XQP volume synch lock rate J REAL*4 MET_F_VOLWAIT ! Times XQP had to wait for vol synch lockG REAL*4 MET_F_SYNCHLCK ! XQP Directory and vol synch lock rateO[ REAL*4 MET_F_SYNCHWAIT ! Times XQP had to wait for a directory and vol synch lockS5 REAL*4 MET_F_ACCLCK ! XQP access lock rateI REAL*4 MET_F_XQPCACHEWAIT ! XQP had to wait forcache free spaceS8 REAL*4 MET_F_FILECPU ! % File system CPU timeC REAL*4 MET_F_ARRLOCPK ! DECNET arriving local packet rateSD REAL*4 MET_F_DEPLOCPK ! DECNET departing local packet rate< REAL*4 MET_F_ARRTRAPK ! DECNET transit packet rate@ REAL*4 MET_F_TRCNGLOS ! DECNET transit congestion lossE REAL*4 MET_F_RCVBUFFL ! DECNET receiver buffer failure rateS: REAL*4 MET_F_ENQNEW_LOC ! local new request rate< REAL*4 MET_F_ENQNEW_IN ! incoming new request rate= REAL*4 MET_F_ENQNEW_OUT ! outgoing new request rateGA REAL*4 MET_F_ENQCVT_LOC ! local conversion request rate C REAL*4 MET_F_ENQCVT_IN ! incoming conversion request rateAD REAL*4 MET_F_ENQCVT_OUT ! outgoing conversion request rate< REAL*4 MET_F_DEQ_LOC ! local dequeue request rate> REAL*4 MET_F_DEQ_IN ! incoming dequeue request rate? REAL*4 MET_F_DEQ_OUT ! outgoing dequeue request rater< REAL*4 MET_F_ENQWAIT ! enqueue requests wait rateB REAL*4 MET_F_ENQNOTQD ! enqueue requests not queued rate< REAL*4 MET_F_BLK_LOC ! local blocking ASTs queuedC REAL*4 MET_F_BLK_IN ! incoming blocking ASTs queued rateeD REAL*4 MET_F_BLK_OUT ! outgoing blocking ASTs queued rateC REAL*4 MET_F_DIR_IN ! incoming directory operations rateOD REAL*4 MET_F_DIR_OUT ! outgoing directory operations rateM REAL*4 MET_F_DLCKMSGS_IN ! incoming deadlock detection message ratenN REAL*4 MET_F_DLCKMSGS_OUT ! outgoing deadlock detection message rate7 REAL*4 MET_F_DLCKSRCH ! deadlock searche rateR4 REAL*4 MET_F_DLCKFND ! deadlock find rate4 REAL*4 MET_F_USERPAGES ! User memory pages: REAL*4 MET_F_TREADS ! Terminal reads (not used)< REAL*4 MET_F_TWRITES ! Terminal writes (not used)7 REAL*4 MET_F_IMGACTS ! Image activation rateC8 REAL*4 MET_F_IMGTRMS ! Image termination rate6 REAL*4 MET_F_LOCK_MAX ! Lock ID table length1 REAL*4 MET_F_LOCK_CNT ! Lock IDs in use ; REAL*4 MET_F_RESOURCE_MAX ! Resource table lengthW6 REAL*4 MET_F_RESOURCE_CNT ! Resources in use: REAL*4 MET_F_NP_POOL_MAX ! Non-paged pool length= REAL*4 MET_F_NP_FREE_BLOCKS ! Non-paged free blocksrD REAL*4 MET_F_NP_FREE_LEQU_32 ! Non-paged free leq 32 bytes6 REAL*4 MET_F_NP_FREE ! Non-paged free bytes= REAL*4 MET_F_NP_MAX_BLOCK ! Non-paged maximum block = REAL*4 MET_F_NP_MIN_BLOCK ! Non-paged minimum block6 REAL*4 MET_F_PG_POOL_MAX ! Paged pool length( REAL*4 MET_F_PG_FREE_BLOCKS ! ) REAL*4 MET_F_PG_FREE_LEQU_32 ! " REAL*4 MET_F_PG_FREE ! & REAL*4 MET_F_PG_MAX_BLOCK ! & REAL*4 MET_F_PG_MIN_BLOCK ! 1 REAL*4 MET_F_SRP_MAX ! SRP list length - REAL*4 MET_F_SRP_CNT ! SRPs in useL1 REAL*4 MET_F_IRP_MAX ! IRP list length - REAL*4 MET_F_IRP_CNT ! IRPs in useM1 REAL*4 MET_F_LRP_MAX ! LRP list lengthI- REAL*4 MET_F_LRP_CNT ! LRPs in useT< REAL*4 MET_F_RDT_MAX ! IO request desc table size= REAL*4 MET_F_RDT_QUE ! IO request desc table queuePC REAL*4 MET_F_MSCP_BUFF_MAX ! MSCP number original buffersD@ REAL*4 MET_F_MSCP_BUFF_FREE ! MSCP number free buffersB REAL*4 MET_F_MSCP_BUFF_MIN ! MSCP tiniest buffer allowedB REAL*4 MET_F_MSCP_BUFF_AVL ! MSCP number free pool bytesC REAL*4 MET_F_MSCP_PACK_MAX ! MSCP number original packets @ REAL*4 MET_F_MSCP_PACK_FREE ! MSCP number free packets= REAL*4 MET_F_MSCP_BUFF_QUE ! MSCP buffer wait queueAF REAL*4 MET_F_MSCP_BUFF_PEAK ! MSCP wait queue highwater markG REAL*4 MET_F_MSCP_IO_SPLITS ! MSCP number split transfer rateEB REAL*4 MET_F_MSCP_IO_FRAGMENTS ! MSCP number IO fragments9 REAL*4 MET_F_MSCP_OPCOUNT ! MSCP operation rater5 REAL*4 MET_F_MSCP_READ_CNT ! MSCP read rater7 REAL*4 MET_F_MSCP_WRITE_CNT ! MSCP write rate 8 REAL*4 MET_F_PAGING_TOTAL ! Paging total pages6 REAL*4 MET_F_PAGING_FREE ! Paging free pages ! reserved character length 56;! New additions for 1.1! rahtodo, should this go! before the reserved entry ?+ REAL*4 MET_F_OSWPCNT ! Out swapsR1 REAL*4 MET_F_HISWPCNT ! Header in swap鴤$ DISKM010.B5  [DISK.B]PSPA$LIB.FOR;2[de"IsG2 REAL*4 MET_F_HOSWPCNT ! Header out swaps6 REAL*4 MET_F_BADPAGE_FAULTS ! Badpage faults4 REAL*4 MET_F_TRANSFLTS ! Transition faults8 REAL*4 MET_F_OPEN_FILES ! Number of files open: REAL*4 MET_F_INTERACTIVE ! Interactive processes3 REAL*4 MET_F_NETWORK ! Network processesk/ REAL*4 MET_F_BATCH ! Batch processes ! SPM timer driver stuffF0 REAL*4 MET_F_SPMSAMPCNT ! Sample count& REAL*4 MET_F_SPMBUSY ! Busy- REAL*4 MET_F_SPMSWPBUSY ! Swap busyF+ REAL*4 MET_F_SPMIOBUSY ! MIO busy 1 REAL*4 MET_F_SPMANYIOBUSY ! Any IO busyM. REAL*4 MET_F_SPMPAGEWAIT ! Page wait. REAL*4 MET_F_SPMSWAPWAIT ! Swap wait, REAL*4 MET_F_SPMMMGWAIT ! MMG wait, REAL*4 MET_F_SPMSYSIDLE ! SYS idle, REAL*4 MET_F_SPMCPUONLY ! CPU only* REAL*4 MET_F_SPMIOONLY ! IO only( REAL*4 MET_F_SPMCPUIO ! CPU IO3 REAL*4 MET_F_SPMAVAILCPU ! Available CPUsp4 REAL*4 MET_F_VBSSCPUTICK ! VBSSGL_CPUTICKS CHARACTER*56 MET_t_reserved END STRUCTURE ! PSPAMETRECS *!*** MODULE $PSPARULDEFS IDENT X1.1-36 ***) PARAMETER RUL_S_VPARULRECS = '00000028'XF STRUCTURE /PSPARULRECS/( INTEGER*4 RUL_A_RULE ! Rule code: REAL*4 RUL_F_OCCURENCES ! Rule occurence count CHARACTER*32 RUL_t_reserved END STRUCTURE ! PSPARULRECS M*!*** MODULE $PSPACPUDEFS IDENT X1.1-36 ***) PARAMETER CPU_S_VPACPURECS = '0000004D'X  STRUCTURE /PSPACPURECS/- BYTE CPU_B_TYPE ! Record type 10t. INTEGER*4 CPU_L_PHY_CPUID ! Physical ID UNION MAP0 INTEGER*4 CPU_L_STATE ! Active state END MAP MAP% PARAMETER CPU_CS_RUN = 1 3 PARAMETER CPU_CV_RUN = 0 ! Run state  BYTE %FILL (1)u END MAP END UNION UNION MAP, INTEGER*4 CPU_L_STATUS ! Status  END MAP MAP( PARAMETER CPU_CS_PRIMID = 18 PARAMETER CPU_CV_PRIMID = 0 ! Primary CPU$ PARAMETER CPU_CS_VP = 1< PARAMETER CPU_CV_VP = 1 ! Vector processing  BYTE %FILL (1)M END MAP END UNION) REAL*4 CPU_F_KERNEL ! % Kernelr* REAL*4 CPU_F_EXEC ! % Executive, REAL*4 CPU_F_SUPER ! % Supervisor% REAL*4 CPU_F_USER ! % Usert. REAL*4 CPU_F_INTERRUPT ! % Interrupt0 REAL*4 CPU_F_COMPAT ! % Compatibility& REAL*4 CPU_F_NULL ! % NULL F REAL*4 CPU_F_MP_SYNCH ! % SMP synchronization in KERNEL mode> REAL*4 CPU_F_VP_CPUTIME ! Vector Processing CPU time CHARACTER*28 CPU_t_reserved END STRUCTURE ! PSPACPURECS h*!*** MODULE $PSPAPARDEFS IDENT X1.1-36 ***) PARAMETER PAR_S_VPAPARRECS = '0000014D'XV STRUCTURE /PSPAPARRECS/, BYTE PAR_B_TYPE ! Record type 27 REAL*4 PAR_F_DORMANTWAIT ! SCH$GW_DORMANTWAITm. REAL*4 PAR_F_GBLPAGES ! $GL_GBLPAGES. REAL*4 PAR_F_DEFPRI ! SYS$GB_DEFPRI6 REAL*4 PAR_F_MAXPROCESSCNT ! SGN$GW_MAXPRCCT2 REAL*4 PAR_F_LOCKDIRWT ! CLU$GW_LCKDIRWT1 REAL*4 PAR_F_MINWSCNT ! SGN$GW_MINWSCNTe1 REAL*4 PAR_F_SYSMWCNT ! SGN$GW_SYSDWSCT 2 REAL*4 PAR_F_BALSETCNT ! SGN$GL_BALSETCT/ REAL*4 PAR_F_IRPCOUNT ! SGN$GL_IRPCNT 1 REAL*4 PAR_F_IRPCOUNTV ! SGN$GL_IRPCNTVk/ REAL*4 PAR_F_WSMAX ! SGN$GL_MAXWSCNTX1 REAL*4 PAR_F_NPAGEDYN ! SGN$GL_NPAGEDYN1 REAL*4 PAR_F_NPAGEVIR ! SGN$GL_NPAGEVIRt0 REAL*4 PAR_F_PAGEDYN ! SGN$GL_PAGEDYN. REAL*4 PAR_F_SPTREQ ! SGN$GL_SPTREQ/ REAL*4 PAR_F_LRPCOUNT ! SGN$GL_LRPCNT*1 REAL*4 PAR_F_LRPCOUNTV ! SGN$GL_LRPCNTVt0 REAL*4 PAR_F_LRPSIZE ! SGN$GL_LRPSIZE/ REAL*4 PAR_F_SRPCOUNT ! SGN$GL_SRPCNTA1 REAL*4 PAR_F_SRPCOUNTV ! SGN$GL_SRPCNTV 0 REAL*4 PAR_F_SRPSIZE ! SGN$GL_SRPSIZE- REAL*4 PAR_F_QUANTUM ! SCH$GW_QUANc1 REAL*4 PAR_F_MPW_HILIMIT ! MPW$GW_HILIMQ1 REAL*4 PAR_F_MPW_LOLIMIT ! MPW$GW_LOLIMM1 REAL*4 PAR_F_MPW_THRESH ! MPW$GL_THRESHR5 REAL*4 PAR_F_MPW_WAITLIMIT ! MPW$GL_WAITLIMG. REAL*4 PAR_F_PFRATL ! SCH$GL_PFRATL. REAL*4 PAR_F_PFRATH ! SCH$GL_PFRATH1 REAL*4 PAR_F_CTLFLAGS ! MMG$GB_CTLFLAGSA(! PFRATS f_floating; /* SCH$GL_PFRATS, REAL*4 PAR_F_WSINC ! SCH$GL_WSINC, REAL*4 PAR_F_WSDEC ! SCH$GL_WSDEC. REAL*4 PAR_F_AWSMIN ! SCH$GW_AWSMIN0 REAL*4 PAR_F_AWSTIME ! SCH$GL_AWSTIME0 REAL*4 PAR_F_SWPRATE ! SCH$GL_SWPRATE4 REAL*4 PAR_F_SWPOUTPGCNT ! SWP$GL_SWPPGCNT2 REAL*4 PAR_F_SWPALLOCINC ! SWP$GW_SWPINC1 REAL*4 PAR_F_LONGWAIT ! SCH$GW_LONGWAITu0 REAL*4 PAR_F_FREELIM ! SGN$GL_FREELIM1 REAL*4 PAR_F_FREEGOAL ! SGN$GL_FREEGOALO0 REAL*4 PAR_F_GROWLIM ! SCH$GL_GROWLIM3 REAL*4 PAR_F_BORROWLIM ! SCH$GL_BORROWLIMo5 REAL*4 PAR_F_ACP_MAPCACHE ! ACP$GW_MAPCACHEr5 REAL*4 PAR_F_ACP_HDRCACHE ! ACP$GW_HDRCACHEN5 REAL*4 PAR_F_ACP_DIRCACHE ! ACP$GW_DIRCACHEA3 REAL*4 PAR_F_ACP_WORKSET ! ACP$GW_WORKSETt9 REAL*4 PAR_F_ACP_DINDXCACHE ! ACP$GW_DINDXCACHEk5 REAL*4 PAR_F_ACP_FIDCACHE ! ACP$GW_FIDCACHEo5 REAL*4 PAR_F_ACP_EXTCACHE ! ACP$GW_EXTCACHEe5 REAL*4 PAR_F_ACP_QUOCACHE ! ACP$GW_QUOCACHEe5 REAL*4 PAR_F_ACP_EXTLIMIT ! ACP$GW_EXTLIMITn0 REAL*4 PAR_F_PFCDEFAULT ! SGN$GW_DFPFC5 REAL*4 PAR_F_MPW_WRTCLUSTER ! MPW$GW_MPWPFCR* REAL*4 PAR_F_IOTA ! SCH$GW_IOTA0 REAL*4 PAR_F_PIXSCAN ! SGN$GW_PIXSCAN6 REAL*4 PAR_F_PHYSICALPAGES ! MMG$GL_PHYPGCNT2 REAL*4 PAR_F_LOCKIDTBL ! LCK$GL_IDTBLSIZ2 REAL*4 PAR_F_RESHASHTBL ! LCK$GL_HTBLSIZ4 REAL*4 PAR_F_GBLSECTIONS ! SGN$GW_GBLSECNT6 REAL*4 PAR_F_DEADLOCK_WAIT ! LCK$GL_WAITTIME9 REAL*4 PAR_F_MSCP_CREDITS ! CLU$GL_MSCP_CREDITSN9 REAL*4 PAR_F_MPW_LOWAITLIMIT ! MPW$GL_LOWAITLIM!1 REAL*4 PAR_F_MPW_IOLIMIT ! MPW$GB_IOLIM_1 REAL*4 PAR_F_SCSBUFFCNT ! SCS$GW_BDTCNTM1 REAL*4 PAR_F_SCSCONNCNT ! SCS$GW_CDTCNT 1 REAL*4 PAR_F_SCSRESPCNT ! SCS$GW_RDTCNT. REAL*4 PAR_F_SCSMAXDG ! SCS$GW_MAXDG0 REAL*4 PAR_F_SCSMAXMSG ! SCS$GW_MAXMSG! PROCSECTCNT f_floating;! New addtions for v1.1 3 REAL*4 PAR_F_POOLCHECK ! EXE$GL_POOLCHECKR9 REAL*4 PAR_F_MULTIPROC ! SGN$GB_MULTIPROCESSING 3 REAL*4 PAR_F_VBSSENA ! MMG$GB_VBS_ENABLEF CHARACTER*52 PAR_t_reserved END STRUCTURE ! PSPAPARRECS R*!*** MODULE $PSPATIMDEFS IDENT X1.1-36 ***) PARAMETER TIM_S_VPATIMRECS = '00000C56'XP STRUCTURE /PSPATIMRECS/- BYTE TIM_B_TYPE ! record type 1 3 BYTE TIM_B_NODE_NAME ! Node name lengthe! CHARACTER*14 TIM_T_NODE_NAME ! Node name string 0 BYTE TIM_B_NODE_NUMBER ! Node number. INTEGER*4 TIM_L_SID ! System ID number3 INTEGER*4 TIM_L_HWTYPE ! Node hardware type : INTEGER*2 TIM_W_INTERVAL ! Sampling interval (Secs)@ INTEGER*2 TIM_W_INTEGRATION ! Integration interval (Secs) UNION MAP& INTEGER*4 TIM_Q_START_TIME(2) END MAP MAPJ INTEGER*4 TIM_L_START_TIME1 ! Start of interval system timeJ INTEGER*4 TIM_L_START_TIME2 ! Start of interval system time END MAP END UNION UNION MAP$ INTEGER*4 TIM_Q_END_TIME(2) END MAP MAPF INTEGER*4 TIM_L_END_TIME1 ! End of interval system timeF INTEGER*4 TIM_L_END_TIME2 ! End of interval system time END MAP END UNION> REAL*4 TIM_F_UPTIME ! Uptime during interval (Secs) UNION MAP# INTEGER*4 TIM_Q_VMSVERS(2)g END MAP MAP# INTEGER*4 TIM_Q_SWVERSr END MAP END UNION! V5.0 VMS software version= BYTE TIM_B_HWNAME_LEN ! V5.0 hardware name lengthR UNION MAP$ CHARACTER*24 TIM_T_HDWRNAME END MAP MAP% CHARACTER*1 TIM_T_HWNAME  END MAP END UNION! V5.0 hardware name (24 char)i< INTEGER*2 TIM_W_HWMODEL ! V5.0 hardware model numberA INTEGER*2 TIM_W_MAX_PROCESSES ! Maximum processes possibleR UNION MAP@ REAL*4 TIM_F_SAMP_INTERVAL ! Sampling intervalG REAL*4 TIM_F_SAMP_INTERVAL2 ! D floating capability G[ۋ$ DISKM010.B5  [DISK.B]PSPA$LIB.FOR;2[U"Z REAL*4 TIM_F_SAMP_AVERAGING ! Moving average intervalYH REAL*4 TIM_F_SAMP_AVERAGING2 ! D floating capability ( CHARACTER*32 TIM_t_reserved END MAP MAP UNION MAP- CHARACTER*48 TIM_T_KASTS_PENDINGF END MAP MAPM BYTE TIM_B_KASTS_PENDING ! Number KASTs still pending  END MAP END UNION END MAP! since measurement begun END UNION CHARACTER*976 TIM_t_fill_1P UNION MAP* CHARACTER*1024 TIM_T_ACTIVE_PROCS END MAP MAPH BYTE TIM_B_ACTIVE_PROCS ! Number of processes active END MAP END UNION! as of end of interval UNION MAP) CHARACTER*1024 TIM_T_INTVL_KASTSR END MAP MAP( BYTE TIM_B_INTVL_KASTS END MAP END UNION%! Number KASTs delivered in intervalC END STRUCTURE ! PSPATIMRECS *!*** MODULE $PSPADEVDEFS IDENT X1.1-36 ***) PARAMETER DEV_S_VPADEVRECS = '000000BB'XU STRUCTURE /PSPADEVRECS/, BYTE DEV_B_TYPE ! Record type 55 BYTE DEV_B_DEVCLASS ! Device class (disk)U UNION MAPB INTEGER*4 DEV_A_VOLNAME ! Volume name string desc addr END MAP MAP! CHARACTER*1 DEV_T_ID ! ID block origin END MAP END UNION< INTEGER*4 DEV_A_NODENAME ! Node name string desc addr UNION MAP4 BYTE DEV_B_NODE_NUMBER ! Node number END MAP MAP8 BYTE DEV_B_CIO_REQUESTOR ! CIO requestor END MAP END UNION? INTEGER*4 DEV_A_HWTYPE ! Hardware type (HS50 V780 V750) 2 INTEGER*4 DEV_L_ALLOCLS ! Allocation class> INTEGER*4 DEV_A_CTLR_NAME ! Controller string desc addr* INTEGER*2 DEV_W_UNIT ! Unit number= BYTE DEV_B_DEV_TYPE ! Type of device (see $DCDEF)A; BYTE DEV_B_ADP_TYPE ! Adapter type (MBA or UBA) UNION MAP6 BYTE DEV_B_ADP_NUMBER ! Adapter number END MAP MAP UNION MAP? BYTE DEV_B_CIO_SHAD_STS ! CIO Shadow status* END MAP MAP1 PARAMETER DEV_MS_CIO_COPYING = 1R1 PARAMETER DEV_MV_CIO_COPYING = 0R, PARAMETER DEV_S_CIO_MBR = 1; PARAMETER DEV_V_CIO_MBR = 1 ! Set memberR, PARAMETER DEV_S_CIO_MAS = 1K PARAMETER DEV_V_CIO_MAS = 2 ! Set master or virtual unitD, PARAMETER DEV_S_CIO_HSC = 1D PARAMETER DEV_V_CIO_HSC = 3 ! HSC based shadowing, PARAMETER DEV_S_CIO_HBS = 1E PARAMETER DEV_V_CIO_HBS = 4 ! Host based shadowingI, PARAMETER DEV_S_CIO_VOL = 1= PARAMETER DEV_V_CIO_VOL = 5 ! Bound volume , PARAMETER DEV_S_CIO_STR = 19 PARAMETER DEV_V_CIO_STR = 6 ! Striping! BYTE %FILL (1)  END MAP END UNION END MAP! Shadow copyingP END UNION5 INTEGER*2 DEV_W_ADP_TR ! Adapter Nexus number @ BYTE DEV_B_PDT_TYPE ! Port type (UDA,CI,NI,Passthru) UNION MAP5 BYTE DEV_B_DEVCHAR ! Characteristics* END MAP MAP% PARAMETER DEV_MS_DUA = 1!% PARAMETER DEV_MV_DUA = 0W% PARAMETER DEV_MS_MNT = 1 % PARAMETER DEV_MV_MNT = 1% PARAMETER DEV_MS_CLU = 1$% PARAMETER DEV_MV_CLU = 2I% PARAMETER DEV_MS_CDP = 1 % PARAMETER DEV_MV_CDP = 3 % PARAMETER DEV_MS__2P = 1A% PARAMETER DEV_MV__2P = 4M& PARAMETER DEV_MS_MSCP = 1& PARAMETER DEV_MV_MSCP = 5% PARAMETER DEV_MS_SRV = 1P% PARAMETER DEV_MV_SRV = 6* BYTE %FILL (1)H END MAP END UNION8 INTEGER*4 DEV_L_UCB ! UCB address (xref alt UCB)3 REAL*4 DEV_F_SERVICE ! Service time (ms) + REAL*4 DEV_F_QLEN ! Queue lengthL/ REAL*4 DEV_F_OPCNT ! Operations rateN1 REAL*4 DEV_F_IOCNT ! Thruput byte rateE1 REAL*4 DEV_F_PAGOP ! Paging operationsG3 REAL*4 DEV_F_PAGIO ! Paging thruput rateM7 REAL*4 DEV_F_SWPOP ! Swapping operation rateS5 REAL*4 DEV_F_SWPIO ! Swapping thruput rate - REAL*4 DEV_F_BUSY ! Busy time (ms)A8 REAL*4 DEV_F_ITVL ! Measurement interval (ms): REAL*4 DEV_F_ERRCNT ! Error count (incremental)2 BYTE DEV_B_PAGIDX ! Paging file index5 BYTE DEV_B_SWAPIDX ! Swapping file indexA) REAL*4 DEV_F_RDCNT ! Read rateR/ REAL*4 DEV_F_FREE ! Free block count UNION MAP= BYTE DEV_B_SET ! Type and status of disk setE END MAP MAP) PARAMETER DEV_MS_COPYING = 1P) PARAMETER DEV_MV_COPYING = 0 $ PARAMETER DEV_S_MBR = 1H PARAMETER DEV_V_MBR = 1 ! Set member or physical unit PU$ PARAMETER DEV_S_MAS = 1G PARAMETER DEV_V_MAS = 2 ! Set master or virtual unit VUA$ PARAMETER DEV_S_HSC = 1> PARAMETER DEV_V_HSC = 3 ! HSC based shadow set$ PARAMETER DEV_S_HBS = 1? PARAMETER DEV_V_HBS = 4 ! Host Based Shadow set*$ PARAMETER DEV_S_VOL = 1: PARAMETER DEV_V_VOL = 5 ! Bound volume set$ PARAMETER DEV_S_STR = 16 PARAMETER DEV_V_STR = 6 ! Striping set BYTE %FILL (1)  END MAP END UNION! Shadow copying > REAL*4 DEV_F_DINDXSIZE ! Directory index cache pages5 REAL*4 DEV_F_QUOSIZE ! Quota cache entriesa3 REAL*4 DEV_F_FIDSIZE ! FID cache entries 6 REAL*4 DEV_F_EXTSIZE ! Extent cache entries9 REAL*4 DEV_F_HDRSIZE ! File header cache pagesM< REAL*4 DEV_F_DIRSIZE ! directory data cache pages< REAL*4 DEV_F_MAPSIZE ! storage bitmap cache pages= INTEGER*4 DEV_A_CACHENAME ! Cache name (24 characters)S5 REAL*4 DEV_F_MSCPOP ! MSCP operations rate : REAL*4 DEV_F_MSCPPG ! MSCP paging/swapping rate? INTEGER*4 DEV_A_HWNAME ! V5.0 Hardware name for VAXnode 0 INTEGER*4 DEV_L_ROOT ! Shadow set master2 REAL*4 DEV_F_MSCPIO ! MSCP thruput rate- REAL*4 DEV_F_SPLIT ! Split IO rateT4 INTEGER*2 DEV_W_REQ ! K.SDI requestor number0 INTEGER*2 DEV_W_PORT ! K.SDI port numberH REAL*4 DEV_F_MAXBLOCK ! Maximum number of blocks for this disk CHARACTER*28 DEV_t_reserved4 INTEGER*4 DEV_A_DEVNAME ! Device name string! Start of decps 1.1 addtions END STRUCTURE ! PSPADEVRECS 2*!*** MODULE $PSPAMAGDEFS IDENT X1.1-36 ***) PARAMETER MAG_S_VPAMAGRECS = '000000BB'X  STRUCTURE /PSPAMAGRECS/, BYTE MAG_B_TYPE ! Record type 95 BYTE MAG_B_DEVCLASS ! Device class (tape) UNION MAPB INTEGER*4 MAG_A_VOLNAME ! Volume name string desc addr END MAP MAP! CHARACTER*1 MAG_T_IDU! ID block origin END MAP END UNION< INTEGER*4 MAG_A_NODENAME ! Node name string desc addr0 BYTE MAG_B_NODE_NUMBER ! Node number? INTEGER*4 MAG_A_HWTYPE ! Hardware type (HS50 V780 V750) 2 INTEGER*4 MAG_L_ALLOCLS ! Allocation class> INTEGER*4 MAG_A_CTLR_NAME ! Controller string desc addr* INTEGER*2 MAG_W_UNIT ! Unit number= BYTE MAG_B_DEV_TYPE ! Type of device (see $DCDEF)U; BYTE MAG_B_ADP_TYPE ! Adapter type (MBA or UBA)H2 BYTE MAG_B_ADP_NUMBER ! Adapter number5 INTEGER*2 MAG_W_ADP_TR ! Adapter Nexus number@ BYTE MAG_B_PDT_TYPE ! Port type (UDA,CI,NI,Passthru) UNION MAP5 BYTE MAG_B_DEVCHAR ! Characteristicsi END MAP MAP% PARAMETER MAG_MS_DUA = 1g% PARAMETER MAG_MV_DUA = 0 % PARAMETER MAG_MS_MNT = 1 % PARAMETER MAG_MV_MNT = 1 % PARAMETER MAG_MS_CLU = 1 % PARAMETER MAG_MV_CLU = 2P% PARAMETER MAG_MS_CDP = 1_% PARAMETER MAG_MV_CDP = 3 % PARAMETER MAG_MS__2P = 1M% PARAMETER MAG_MV__2P = 4 & PARAMETER MAG_MS_MSCP = 1& PARAMETER MAG_MV_MSCP = 5% PAR ^Wx$ DISKM010.B5  [DISK.B]PSPA$LIB.FOR;2[|"kAMETER MAG_MS_SRV = 1C% PARAMETER MAG_MV_SRV = 6 BYTE %FILL (1)A END MAP END UNION8 INTEGER*4 MAG_L_UCB ! UCB address (xref alt UCB)@ REAL*4 MAG_F_SERVICE ! Service time (ms)(ext io meas)9 REAL*4 MAG_F_QLEN ! Queue length (ext io meas) . REAL*4 MAG_F_OPCNT ! Operation rate? REAL*4 MAG_F_IOCNT ! Thruput byte rate (ext io meas)T CHARACTER*16 MAG_t_fill_29 REAL*4 MAG_F_BUSY ! Busy time (incremental ms)R8 REAL*4 MAG_F_ITVL ! Measurement interval (ms): REAL*4 MAG_F_ERRCNT ! Error count (incremental) CHARACTER*2 MAG_t_fill_3 7 REAL*4 MAG_F_RDCNT ! Read rate (ext io meas)D CHARACTER*49 MAG_t_fill_4 CHARACTER*16 MAG_t_fill_5 CHARACTER*4 MAG_t_fill_6! CHARACTER*28 MAG_t_reserved4 INTEGER*4 MAG_A_DEVNAME ! Device name string END STRUCTURE ! PSPAMAGRECS *!*** MODULE $PSPACOMDEFS IDENT X1.1-36 ***) PARAMETER COM_S_VPACOMRECS = '000000BB'X  STRUCTURE /PSPACOMRECS/* BYTE COM_B_TYPE ! Record type5 BYTE COM_B_DEVCLASS ! Device class (sync)  CHARACTER*17 COM_t_fill_1> INTEGER*4 COM_A_CTLR_NAME ! Controller string desc addr* INTEGER*2 COM_W_UNIT ! Unit number0 BYTE COM_B_DEV_TYPE ! Type of device CHARACTER*5 COM_t_fill_2A1 BYTE COM_B_DEVCHAR ! CharacteristicsT CHARACTER*12 COM_t_fill_3. REAL*4 COM_F_OPCNT ! Operation rate CHARACTER*87 COM_t_fill_4 CHARACTER*16 COM_t_fill_5 CHARACTER*4 COM_t_fill_6 CHARACTER*28 COM_t_reserved4 INTEGER*4 COM_A_DEVNAME ! Device name string END STRUCTURE ! PSPACOMRECS *!*** MODULE $PSPATRNDEFS IDENT X1.1-36 ***) PARAMETER TRN_S_VPATRNRECS = '00000041'X  STRUCTURE /PSPATRNRECS/4 INTEGER*4 TRN_A_TRANSFAM ! Transaction family7 INTEGER*4 TRN_A_TRANS ! Transaction image class : INTEGER*4 TRN_A_USERNAME ! Unique username (if any)< INTEGER*4 TRN_A_IMAGENAME ! Unique imagename (if any)2 INTEGER*4 TRN_A_FAMILY ! User group family, INTEGER*4 TRN_A_WORKLOAD ! User groupA BYTE TRN_B_STATUS ! Interactive Batch Network status ) REAL*4 TRN_F_CPUTIM ! CPU timed/ REAL*4 TRN_F_DIOCNT ! Direct IO rateH= INTEGER*4 TRN_A_ACCOUNT ! Unique account name(if any)a> INTEGER*4 TRN_A_PROCESS ! Unique process name (if any) CHARACTER*24 TRN_t_reserved END STRUCTURE ! PSPATRNRECS *!*** MODULE $PSPAFILDEFS IDENT X1.1-36 ***) PARAMETER FIL_S_VPAFILRECS = '0000004D'X  STRUCTURE /PSPAFILRECS/- BYTE FIL_B_TYPE ! Record type 10E1 INTEGER*4 FIL_A_DEVICE ! Disk device name 1 INTEGER*4 FIL_A_DIRECTORY ! Directory namer' INTEGER*4 FIL_A_FILE ! FilenameT1 INTEGER*2 FIL_W_FID_NUM ! FID file number5 INTEGER*2 FIL_W_FID_SEQ ! FID sequence numberr< INTEGER*2 FIL_W_FID_RVN ! FID relative volume number1 INTEGER*2 FIL_W_INDEX ! Disk index numberM3 REAL*4 FIL_F_SERVICE ! Service time (ms) / REAL*4 FIL_F_OPCNT ! Operations rate 1 REAL*4 FIL_F_IOCNT ! Thruput byte rateD3 REAL*4 FIL_F_RDCNT ! Read operation rate . REAL*4 FIL_F_SPLITS ! Split IO rate; REAL*4 FIL_F_TURNS ! Window turn rate (not used)M5 REAL*4 FIL_F_PAGOP ! Paging operation rate 7 REAL*4 FIL_F_SWPOP ! Swapping operation rateR4 REAL*4 FIL_F_MSCPOP ! MSCP operation rate! INTEGER*4 FIL_L_PID ! PIX CHARACTER*16 FIL_t_reserved END STRUCTURE ! PSPAFILRECS s*!*** MODULE $PSPAHDRDEFS IDENT X1.1-36 ***& PARAMETER HDR_M_ALTERED = '00000001'X3 PARAMETER HDR_K_DECTRACE = '00000000'X ! DECtraceF6 PARAMETER HDR_K_FOREIGN = '00000001'X ! Not DECtrace' PARAMETER HDR_S_DT_QUEUE = '00000081'XDD! DECps generates the following address fields in the reader module& PARAMETER HDR_K_DT_PSDC = '0000000F'X! RUNDOWN_PSDCi) PARAMETER HDR_K_DT_VERSION = '00000013'XP! RUNDOWN_VERSZUN/ PARAMETER HDR_K_DT_EVENT_CHANNEL = '0000001F'Xi! RUNDOWN_DT_EVENT . PARAMETER HDR_K_DT_TEXT_CHANNEL = '00000023'X! RUNDOWN_DT_TEXT- PARAMETER HDR_K_DT_TEXT_DELETE = '00000027'X ! RUNDOWN_DT_BEHEAD STRUCTURE /PSPAHDRRECS/F! DECtrace and DECPS_DC and VPA$READ Event Header Queue entry offsets2 INTEGER*4 HDR_L_FLINK ! Queue forward link3 INTEGER*4 HDR_L_BLINK ! Queue backward link 0 INTEGER*2 HDR_W_FLAGS ! Queue flags $ PARAMETER HDR_S_ALTERED = 1E PARAMETER HDR_V_ALTERED = 0 ! Event description is alteredM# PARAMETER HDR_S_spares = 7R# PARAMETER HDR_V_spares = 1R BYTE %FILL (1)eH! DECtrace sends the following fields in realtime via two data channels INTEGER*4 HDR_L_EVENT_TYPEe9! Reserved /* User / Start-Stop / Facility / Event typeH6! b<31-30> /* b<29> / b<28-28> / b<27-16> / b<15-0>D INTEGER*2 HDR_W_EVENT_USER_LEN ! Event user meter name lengthM INTEGER*4 HDR_L_EVENT_USER_BUF ! Event user name string buffer pointerVG INTEGER*4 HDR_L_EVENT_HANDLE ! Event handle (matches start-stop) < INTEGER*4 HDR_L_EVENT_EPID ! EPID (0 in appl context)0 INTEGER*2 HDR_W_SEQ ! FID of header file INTEGER*2 HDR_W_NUM INTEGER*2 HDR_W_RVNB INTEGER*2 HDR_W_DEVICE_LEN ! Header file device name length CHARACTER*16 HDR_T_DEVICE! Header file device nameC! DECps derives the following fields from the DECtrace header fileF" CHARACTER*40 HDR_T_EVENT_IDEN&! Event description (from DC headers)I! DECps derives the following fields from the DECtrace data channel datapB INTEGER*4 HDR_L_EVENT_SUBTYPE ! Event subtype (DC assigned)" CHARACTER*32 HDR_T_EVENT_USER! Event user meter name stringR@ INTEGER*4 HDR_A_EVENT_US ! Event user specified qualifier3 INTEGER*4 HDR_A_EVENT_ID ! Event descriptionGD! DECPS_DC V1.1-36 Rundown dispatch block DECtrace relevant offsets END STRUCTURE ! PSPAHDRRECS r)!*** MODULE $PSDCWRDEFS IDENT X1.1-36 ***u$! Network interface argument block STRUCTURE /PSDCWRSTRUC/- INTEGER*4 WR_L_REQTYPE ! Request type- INTEGER*4 WR_L_STATUS ! Return statusr2 INTEGER*4 WR_L_NODE_LEN ! Node name length CHARACTER*15 WR_T_NODENAMEA ! Node name? INTEGER*4 WR_A_RESNAM ! EOF resource name ASCID pointer ; INTEGER*4 WR_A_LKSB ! EOK lock status block pointer2- INTEGER*4 WR_L_SIZE ! EOF file lengthP- INTEGER*4 WR_L_TIME ! EOF time of dayC INTEGER*4 WR_L_TIME_CONT 4 INTEGER*4 WR_L_FIT ! File Info Table pointer< INTEGER*4 WR_L_ITVL ! Interval from connection block6 INTEGER*4 WR_L_QUOTA ! Interval pipeline quota< INTEGER*4 WR_L_PACKET ! Packet from current interval3 INTEGER*4 WR_L_C ! Network connection blockP@ INTEGER*4 WR_L_BYTES ! Data collection buffer byte count> INTEGER*4 WR_L_BUFFER ! Data collection buffer pointer+! Network jacket prepended to data buffere4 INTEGER*2 WR_W_TYPE ! DECps data record type8 INTEGER*4 WR_L_LENGTH ! DECps data record length3 INTEGER*4 WR_L_VERSION ! DECps data version 4 INTEGER*2 WR_W_COMMAND ! DECps data command > INTEGER*4 WR_L_SEQUENCE ! Send&Receive sequence number? INTEGER*4 WR_L_BYTE_COUNT ! Send&Receive data byte count 1 INTEGER*4 WR_L_FLAGS ! Work request flagsx= INTEGER*4 WR_A_CONN_AST ! connection AST routine addr,7 INTEGER*4 WR_A_READ_AST ! Read AST routine addr 8 INTEGER*4 WR_A_WRITE_AST ! Write AST routine addrD INTEGER*4 WR_A_INT_AST ! MBX interrupt msg AST routine addr > INTEGER*4 WR_A_CTX ! address of internal context block END STRUCTURE ! PSDCWRSTRUC) PARAMETER WR_M_WRT_AST_REQ = '00000001'X * PARAMETER WR_M_WRT_AST_DONE = '00000002'X( PARAMETER WR_M_RD_AST_REQ = '00000004'X) PARAMETER WR_M_RD_AST_DONE = '00000008'X ) PARAMETER WR_M_INT_AST_REQ = '00000010'X * PARAMETER WR_M_INT_AST_DONE = '00000020'X& PARAMETER WR_M_WAKE_REQ = '00000040'X' PARAMETER WR_M_WAKE_DONE = '00000080'XR' PARAMETER WR_M_CONNECTED = '00000100'XM STRUCTURE /wr_flags/ # PARAMETER WR_S_WRT_AST_REQ = 1M> PARAMETER WR_V_WRT_AST_REQ = 0 ! write done AST request$ PARAMETER WR_S_WRT_AST_DONE = 1D PARAMETER WR_V_WRT_AST_DONE = 1 ! write done AST request done" PARAMETER WR_S_RD_AST_REQ = 1< PARAMETER WR_V_RD_AST_REQ = 2 ! read done AST request# PARAMETER WR_S_RD_AST_DONE = 1iB PARAMETER WR_V_RD_AST_DONE = 3 ! read done AST request done# PARAMETER WR_S_INT_AST_RE 4t$ DISKM010.B5  [DISK.B]PSPA$LIB.FOR;2[l"|Q = 1 F PARAMETER WR_V_INT_AST_REQ = 4 ! MBX interrupt done AST request$ PARAMETER WR_S_INT_AST_DONE = 1F PARAMETER WR_V_INT_AST_DONE = 5 ! MBX int done AST request done PARAMETER WR_S_WAKE_REQ = 1@ PARAMETER WR_V_WAKE_REQ = 6 ! WAKE in AST routine request! PARAMETER WR_S_WAKE_DONE = 1 > PARAMETER WR_V_WAKE_DONE = 7 ! WAKE in AST routine done! PARAMETER WR_S_CONNECTED = 14 PARAMETER WR_V_CONNECTED = 8 ! Link connected PARAMETER WR_S_SPARES = 23' PARAMETER WR_V_SPARES = 9 BYTE %FILL (4)P END STRUCTURE ! wr_flagsT STRUCTURE /io_ast_blk/ 8 INTEGER*4 ablk_a_flink ! address of next in list< INTEGER*4 ablk_a_blink ! address of previous in list2 INTEGER*2 ablk_w_status ! status value9 INTEGER*2 ablk_w_depw ! device dependent wordM= INTEGER*4 ablk_l_depl ! device dependent longword8 INTEGER*4 ablk_a_wr ! work request block address END STRUCTURE ! io_ast_blkA T)!*** MODULE $PSPACDDEFS IDENT X1.1-36 ***_ ! Collection Definition recordN PARAMETER CTXCD$K_MAINMAN = '00000001'X ! Main data collector/server processM PARAMETER CTXCD$K_NETWORK = '00000002'X ! Client/Server DECnet-DECnet link XJ PARAMETER CTXCD$K_NETFILE = '00000004'X ! Client/Server DECnet-File linkC PARAMETER CTXCD$K_DSKFILE = '00000008'X ! Detached data collectorG- PARAMETER CTXCD$M_CLASS_STATUS = '00000001'X( PARAMETER CTXCD$M_PROCESS = '00000002'X& PARAMETER CTXCD$M_IMAGE = '00000004'X% PARAMETER CTXCD$M_DISK = '00000008'X% PARAMETER CTXCD$M_TAPE = '00000010'Xr' PARAMETER CTXCD$M_PARAMS = '00000020'X / PARAMETER CTXCD$M_SYSTEM_METRICS = '00000040'XI) PARAMETER CTXCD$M_TERMINAL = '00000080'X*. PARAMETER CTXCD$M_CONFIGURATION = '00000100'X$ PARAMETER CTXCD$M_CPU = '00000200'X) PARAMETER CTXCD$M_HOT_FILE = '00000400'Xu* PARAMETER CTXCD$M_HOT_LOCKS = '00000800'X) PARAMETER CTXCD$M_DECTRACE = '00001000'XC- PARAMETER CTXCD$M_FULL_STRINGS = '00002000'XP STRUCTURE /PSPACDSTRUC/@ INTEGER*4 CTXCD$L_RECD_TYPE ! DECps data file record typeK INTEGER*4 CTXCD$L_RECD_LENGTH ! Collection definition length (bytes)e= INTEGER*4 CTXCD$L_DECPS_VERSION ! DECps version numberI7 INTEGER*4 CTXCD$L_NODENAME_LEN ! Nodename lengthR. CHARACTER*6 CTXCD$T_NODENAME ! NodenameC INTEGER*4 CTXCD$L_COLL_DEF_LEN ! Collection extension lengthID CHARACTER*20 CTXCD$T_COLL_DEF_NAME ! Collection file extension4 INTEGER*4 CTXCD$A_FLINK ! Pointer to next CD= INTEGER*4 CTXCD$L_ITVL_QUOTA ! Realtime interval quota7 INTEGER*4 CTXCD$L_DATA_ACCESS ! Data access modeA? INTEGER*4 CTXCD$L_INTERVAL ! Realtime interval (seconds)R UNION MAP; INTEGER*4 CTXCD$L_CLASSES ! Class selectionsA END MAP MAP/ PARAMETER CTXCD$S_CLASS_STATUS = 1 E PARAMETER CTXCD$V_CLASS_STATUS = 0 ! Success or failuree* PARAMETER CTXCD$S_PROCESS = 1. PARAMETER CTXCD$V_PROCESS = 1 ! ( PARAMETER CTXCD$S_IMAGE = 1, PARAMETER CTXCD$V_IMAGE = 2 ! ' PARAMETER CTXCD$S_DISK = 1M+ PARAMETER CTXCD$V_DISK = 3 ! H' PARAMETER CTXCD$S_TAPE = 1+ PARAMETER CTXCD$V_TAPE = 4 ! ) PARAMETER CTXCD$S_PARAMS = 10- PARAMETER CTXCD$V_PARAMS = 5 ! s1 PARAMETER CTXCD$S_SYSTEM_METRICS = 1S4 PARAMETER CTXCD$V_SYSTEM_METRICS = 6 ! + PARAMETER CTXCD$S_TERMINAL = 1/ PARAMETER CTXCD$V_TERMINAL = 7 ! 0 PARAMETER CTXCD$S_CONFIGURATION = 13 PARAMETER CTXCD$V_CONFIGURATION = 8 ! R& PARAMETER CTXCD$S_CPU = 1* PARAMETER CTXCD$V_CPU = 9 ! + PARAMETER CTXCD$S_HOT_FILE = 1d0 PARAMETER CTXCD$V_HOT_FILE = 10 ! , PARAMETER CTXCD$S_HOT_LOCKS = 10 PARAMETER CTXCD$V_HOT_LOCKS = 11 ! + PARAMETER CTXCD$S_DECTRACE = 1R0 PARAMETER CTXCD$V_DECTRACE = 12 ! / PARAMETER CTXCD$S_FULL_STRINGS = 1 3 PARAMETER CTXCD$V_FULL_STRINGS = 13 ! R0 PARAMETER CTXCD$S_CLASS_SPARES = 180 PARAMETER CTXCD$V_CLASS_SPARES = 14 BYTE %FILL (4)G END MAP END UNION INTEGER*4 CTXCD$L_CLASSES2y INTEGER*4 CTXCD$L_CLASSES32 INTEGER*4 CTXCD$L_CLASSES4-@ REAL*4 CTXCD$F_HOTFILE_QUEUE ! Hotfile queue threshold4 INTEGER*4 CTXCD$L_START_TIME ! Beginning time" INTEGER*4 CTXCD$L_START_TIME2/ INTEGER*4 CTXCD$L_END_TIME ! Ending time( INTEGER*4 CTXCD$L_END_TIME25 INTEGER*4 CTXCD$L_WS_QUOTA ! Working Set quotaI7 INTEGER*4 CTXCD$L_WS_EXTENT ! Working Set extent26 INTEGER*4 CTXCD$L_CPU_THRESHOLD ! CPU threshold@ INTEGER*4 CTXCD$L_RESOURCE_NAME_LEN ! Resource name lengthE CHARACTER*32 CTXCD$T_RESOURCE_NAME ! Resource name for file I/OiC INTEGER*4 CTXCD$L_PATH_LEN ! Device/Directory length (bytes)NJ CHARACTER*512 CTXCD$T_PATH_SPEC ! Device/Directory file destination; INTEGER*4 CTXCD$L_SCHED_MON ! Weekly hourly schedule4 INTEGER*4 CTXCD$L_SCHED_TUE INTEGER*4 CTXCD$L_SCHED_WED INTEGER*4 CTXCD$L_SCHED_THU INTEGER*4 CTXCD$L_SCHED_FRI INTEGER*4 CTXCD$L_SCHED_SAT INTEGER*4 CTXCD$L_SCHED_SUNC INTEGER*4 CTXCD$L_MAXDEVCNT ! Maximum disks/tapes to monitoriL INTEGER*4 CTXCD$L_HOTFILE_MAX ! Maximum files to monitor as hot filesI INTEGER*4 CTXCD$L_HOTFILE_LIFE ! Duration of inactivity cools filekJ INTEGER*4 CTXCD$L_RETENTION ! Retention time for daily files (days)G INTEGER*4 CTXCD$L_DISKSPACE ! Disk free space threshold (blocks)LL INTEGER*4 CTXCD$L_DISKINCEXC ! Disk Inclusion/Exclusion list pointer.'! Offset from begging of this block.n#! Points to blocks described by _! $PSPAEIDEFSO INTEGER*4 CTXCD$L_PROCINCEXC ! Process Inclusion/Exclusion list pointer.T)! Offset from beginning of this block. #! Points to blocks described by G! $PSPAEIDEFS END STRUCTURE ! PSPACDSTRUC T)!*** MODULE $PSPAEIDEFS IDENT X1.1-36 ***i, PARAMETER CTXCDEI$M_INCLUSION = '00000001'X, PARAMETER CTXCDEI$M_EXCLUSION = '00000002'X. PARAMETER CTXCDEI$M_DISK_DEVICE = '00000004'X. PARAMETER CTXCDEI$M_DISK_VOLUME = '00000008'X+ PARAMETER CTXCDEI$M_PROC_PID = '00000010'Xe, PARAMETER CTXCDEI$M_PROC_NAME = '00000020'X STRUCTURE /PSPAEISTRUC/B INTEGER*4 CTXCDEI$L_FLINK ! Forward link to next identifier(! Relative offset from this location. UNION MAP" INTEGER*4 CTXCDEI$L_FLAGS END MAP MAP. PARAMETER CTXCDEI$S_INCLUSION = 1L PARAMETER CTXCDEI$V_INCLUSION = 0 ! This is an inclusion block. PARAMETER CTXCDEI$S_EXCLUSION = 1L PARAMETER CTXCDEI$V_EXCLUSION = 1 ! This is an exclusion block0 PARAMETER CTXCDEI$S_DISK_DEVICE = 1P PARAMETER CTXCDEI$V_DISK_DEVICE = 2 ! Data in ID_TEXT is disk name0 PARAMETER CTXCDEI$S_DISK_VOLUME = 1R PARAMETER CTXCDEI$V_DISK_VOLUME = 3 ! Data in ID_TEXT is disk volume- PARAMETER CTXCDEI$S_PROC_PID = 1EO PARAMETER CTXCDEI$V_PROC_PID = 4 ! Data in ID_TEXT is Process PIDR. PARAMETER CTXCDEI$S_PROC_NAME = 1Q PARAMETER CTXCDEI$V_PROC_NAME = 5 ! Data in ID_TEXT is Process NameW0 PARAMETER CTXCDEI$S_FLAGSPARES = 26/ PARAMETER CTXCDEI$V_FLAGSPARES = 6Q( BYTE %FILL (4) ! Spares END MAP END UNIONC INTEGER*4 CTXCDEI$L_ID_SIZE ! Identifier byte count. Size ofR! data in ID_TEXT fieldR? INTEGER*4 CTXCDEI$L_ID_TEXT ! Identifier text. This dataW#! could be a PID, Process Name,W"! Volume name, or Device name;$! depending upon the settings in! the flags word.R END STRUCTURE ! PSPAEISTRUC a+!*** MODULE $PSPADATEDEFS IDENT T1.1-38 ***T STRUCTURE /PSPADATESTRUC/= INTEGER*4 CTXDATE$A_FLINK ! Pointer to next date blockT; INTEGER*4 CTXDATE$L_FROM_TIME ! Beginning time range ( INTEGER*4 CTXDATE$L_FROM_TIME2 ! 6 INTEGER*4 CTXDATE$L_TO_TIME ! Ending time range& INTEGER*4 CTXDATE$L_TO_TIME2 !  END STRUCTURE ! PSPADATESTRUC Q&!*** MODULE $PSPAEND IDENT X1.1-36 *** :$ DISKM010.B  [DISK.B]REVIEW_ALL_DISKS.COM;2P `]*[DISK.B]REVIEW_ALL_DISKS.COM;2+, . / 4P - 0123KPWO 536|67@/E,<^89GHJ2$ ! COPYRIGHT (C) 1992 BY=$ ! DIGITAL EQUIPMENT CORPORATION, MAYNARD<$ ! MASSACHUSETTS. ALL RIGHTS RESERVED.$ !J$ ! THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIEDM$ ! ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSIONF$ ! OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIESI$ ! THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHERN$ ! PERSON. NO TITLE TO AND OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.$ !M$ ! THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE ANDN$ ! SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT CORPORATION.$ !H$ ! DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS;$ ! SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY DIGITAL.$ !N$ !***************************************************************************$ !J$!SIZE OF THE SMALLEST FILE TO INCLUDE IN THE BIGFILE LIST (50000 DEFAULT) $DEFINE/NOLOG BIGFILE_SIZE 50000$!P$!NUMBER OF WINDOWS WORTH OF EXTENTS NEEDED IN A FILE FOR IT TO BE ADDED TO THE $!HISTORY FILE$NUM_WINDOWS = 5*$@SYS$MANAGER:DISK_MANAGEMENT_LOGICALS.COM$$SAVE_DIR = F$ENVIRONMENT("DEFAULT")$SET DEFAULT DISK$MANAGEMENT:$NODE = F$GETSYI("NODENAME")"$VPADEF = F$TRNLNM("VPA$DATABASE")B$IF ("''VPADEF'" .EQS. "") THEN VPADEF = F$TRNLNM("PSDC$DATABASE")F$SUBMIT/NOPRINT/QUEUE=SYS$BATCH/AFTER="TODAY+7-02:00" REVIEW_ALL_DISKS $SET NOON$PURGE/KEEP=1 *.FRAG$RENAME *.FRAG *.LASTFRAG$PURGE/KEEP=1 *.LASTFRAG$ON ERROR THEN GOTO EXIT5$!GET INFORMATION NEEDED FOR REVIEW_DISK COMMAND LINE$NODE = F$GETSYI("NODENAME")4$YESTERDAY = F$CVTIME("YESTERDAY","ABSOLUTE","DATE")"$START = "''YESTERDAY'" + ":08:30"#$FINISH = "''YESTERDAY'" + ":17:00"5$!CREATE FILE CONTAINING OUTPUT OF "SHOW DEV/MOUNTED"2$SHOW DEVICE/MOUNTED/OUTPUT=SYS$LOGIN:FRAGLIST.TMP%$OPEN FRAGLIST SYS$LOGIN:FRAGLIST.TMP$ON ERROR THEN GOTO DONE$!SKIP 3 HEADER LINES-$READ/END=DONE/ERROR=EROR FRAGLIST DISKRECORD-$READ/END=DONE/ERROR=EROR FRAGLIST DISKRECORD-$READ/END=DONE/ERROR=EROR FRAGLIST DISKRECORD $READREC:!$!READ FILE TO EXTRACT DISK NAMES-$READ/END=DONE/ERROR=EROR FRAGLIST DISKRECORD%$VOLUME = F$EXTRACT(48,15,DISKRECORD)$$DEVICE = F$EXTRACT(0,14,DISKRECORD)5$IF (DEVICE .EQS. " ") THEN GOTO READREC&$DSTATUS = F$EXTRACT(24,14,DISKRECORD)$!SHOW SYM DEVICE$!SHOW SYM DSTATUS5$IF VOLUME .EQS. "(remote mount) " THEN GOTO READREC4$IF DSTATUS .EQS. "HostUnavailabl" THEN GOTO READREC4$IF DSTATUS .EQS. "ShadowSetMembe" THEN GOTO READREC4$IF DSTATUS .EQS. "ShadowCopying " THEN GOTO READREC$!L$!The following line can be used to remove all served disks from the displayI$!it should only be used in an MI cluster where you don't want to see the"$!disks local to the workstations.$!F$!IF (F$GETDVI("''DEVICE'","HOST_TYPE") .EQS. "VAX") THEN GOTO READREC$!9$IF (.NOT. F$GETDVI("''DEVICE'","MNT")) THEN GOTO READREC3$IF (F$GETDVI("''DEVICE'","SWL")) THEN GOTO READREC3$IF (F$GETDVI("''DEVICE'","FOR")) THEN GOTO READREC3$IF (F$GETDVI("''DEVICE'","DMT")) THEN GOTO READREC<$IF (.NOT. F$GETDVI("''DEVICE'","EXISTS")) THEN GOTO READREC$!SHOW SYM VOLUME$!SHOW SYM DEVICE$DEV = "''VOLUME'" - ":",$OUTFILE = F$EDIT("''DEV'","TRIM") + ".FRAG"+$!CREATE FRAGMENTATION REPORT FOR EACH DISK+$IF ("''VPADEF'" .EQS. "") THEN GOTO NO_VPAK$REVIEW_DISK/NODE='NODE'/HISTWINDOW='NUM_WINDOWS'/BEG='START'/END='FINISH'- /OUT='OUTFILE' 'DEVICE' $GOTO READREC$NO_VPA:<$REVIEW_DISK/HISTWINDOW='NUM_WINDOWS'/OUT='OUTFILE' 'DEVICE' $GOTO READREC$EROR:@$WRITE SYS$OUTPUT "********************************************";$WRITE SYS$OUTPUT "ERROR READING LIST OF DISKS TO RUN FRAG"@$WRITE SYS$OUTPUT "********************************************"$DONE:$CLOSE FRAGLIST$DELEX SYS$LOGIN:FRAGLIST.TMP;*$EXIT: $SET NOON$PURGE/KEEP=2 *.FRAG $PURGE/KEEP=3 REVIEW_ALL_DISKS.*8$!PRODUCE THE REPORT FRAG_SUMMARY.RPT OF THE "BAD" DISKS$@FRAG_SUMMARY.COMF$MAIL/SUBJECT="DISKS REQUIRING ACTION" FRAG_SUMMARY.SUM "@DM_MAIL.DIS"+$IF ("''VPADEF'" .EQS. "") THEN GOTO NO_HOT$@WEEKLY_HOT_FILES.COMD$MAIL/SUBJECT="WEEKLY HOT FILES" WEEKLY_HOT_FILES.RPT "@DM_MAIL.DIS" $PURGE/KEEP=3 WEEKLY_HOT_FILES.*$NO_HOT:>$SEARCH/WINDOW=(0,100)/OUT=BIG_FILES.LIS *.FRAG "Files larger"$PURGE/KEEP=3 BIG_FILES.LIS$PURGE/KEEP=3 FRAG_SUMMARY.*$SET DEFAULT 'SAVE_DIR',$PURGE/KEEP=3 SYS$LOGIN:REVIEW_ALL_DISKS.LOG$EXIT*[DISK.B]REVIEW_DISK.COM;4+,./ 4NT- 0123KPWO 56.7O,<^89GHJ 2$ ! COPYRIGHT (C) 1992 BY=$ ! DIGITAL EQUIPMENT CORPORATION, MAYNARD<$ ! MASSACHUSETTS. ALL RIGHTS RESERVED.$ !J$ ! THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIEDM$ ! ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSIONF$ ! OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIESI$ ! THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHERN$ ! PERSON. NO TITLE TO AND OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.$ !M$ ! THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE ANDN$ ! SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT CORPORATION.$ !H$ ! DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS;$ ! SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY DIGITAL.$ !N$ !***************************************************************************$ !J$!SIZE OF THE SMALLEST FILE TO INCLUDE IN THE BIGFILE LIST (50000 DEFAULT) $DEFINE/NOLOG BIGFILE_SIZE 50000*$@SYS$MANAGER:DISK_MANAGEMENT_LOGICALS.COM'$IF ("''P1'" .NES. "") THEN GOTO DISKOKG$READ/PROMPT="WHAT DISK TO ANALYZE FOR FRAGMENTATION (EX: DISK122:)?" - SYS$COMMAND P1$$IF ("''P1'" .EQS. "EXIT") THEN EXIT$$IF ("''P1'" .EQS. "exit") THEN EXIT $IF ("''P1'" .EQS. "") THEN EXIT$DISKOK:/$IF F$GETDVI("''P1'","EXISTS") THEN GOTO EXISTS>$WRITE SYS$OUTPUT "Device ''p1' does not exist on this system"$EXIT$EXISTS:$DEV = "''P1'" - ":",$OUTFILE = F$EDIT("''DEV'","TRIM") + ".FRAG"$NODE = F$GETSYI("NODENAME")$ON ERROR THEN EXIT5$!GET INFORMATION NEEDED FOR REVIEW_DISK COMMAND LINE$$VPADEF = F$TRNLNM(""VPA$DATABASE"")?$IF (VPADEF .EQS. "") THEN VPADEF = F$TRNLNM(""PSDC$DATABASE"")&$IF (VPADEF .EQS. "") THEN GOTO NO_VPA4$YESTERDAY = F$CVTIME("YESTERDAY","ABSOLUTE","DATE")"$START = "''YESTERDAY'" + ":08:30"#$FINISH = "''YESTERDAY'" + ":17:00"+$!CREATE FRAGMENTATION REPORT FOR EACH DISKD$REVIEW_DISK/NODE='NODE'/BEG='START'/END='FINISH'/OUT='OUTFILE' 'P1'$EXIT$NO_VPA:$REVIEW_DISK/OUT='OUTFILE' 'P1'$EXIT*[DISK.B]REVIEW_DISK_DECPS.OBJ;5+,r .,/ 4,*- 0123KPWO-56pm67_,<^89GHJ<REVIEW_DISK_DECPS01 7-Jul-1993 10:06 7-Jul-1993 10:06DEC Fortran V6.0-1REVIEW_DISK_DECPSP INVALID HEADER (OFFSETS) FOR # INVALID HEADER (WORDS IN USE) FOR  INVALID HEADER (STRUCLEV) FOR + UNKNOWN RETRIEVAL POINTER FORMAT - EXITING Disk analysis for  Logical name   from node  Disk size  Free space  Pct used % Error cnt  Cluster size  Windows  Bitmap holes  Largest hole  Pct busy  Ave I imo$ DISKM010.Br  [DISK.B]REVIEW_DISK_DECPS.OBJ;5,-_"/O /sec  Thruput /sec  Ave Que   Files > 1 header  Files >  extents # Files  Tot # Extent  Blks/file  19--                     # FILE FILE FILE HOTFILES ; HEADERS EXTENTS SIZE NUM I/O [DIRECTORY]FILENAME.EXT     V 19--    V      Files larger than  blocks on this disk are:  V- Modified Date Size [Directory]Filename.ExtREVIEW_DISK_DECPSQDEVICENo Disk device specifiedNODENo node specified, DECPS data will not be includedWINDOWHISTWINDOWOUTPUTBEGINNINGENDINGLNM$PROCESS_TABLEBIGFILE_SIZEDISK_HISTORY.DATFILE_HISTORY.DATARRAY LIMIT REACHED, REPORT MAY BE INCOMPLETEIDOFFSET = HIGHWATER = :BAD HEADER = P8@y@ 9@Y 'V";T'm 8 8   @ CLI$PRESENT@P CLI$GET_VALUE@x CLI$PRESENT@ CLI$GET_VALUE@266 CLI$PRESENT@66 CLI$GET_VALUE@40 == CLI$PRESENT@ == CLI$GET_VALUE@HHH CLI$PRESENT@HXH CLI$GET_VALUE@ OxO CLI$PRESENT@ OO CLI$GET_VALUE@8YY CLI$PRESENT@YY CLI$GET_VALUE@<` r` SYS$TRNLNM@r SYS$TRNLNM@ t FOR$OPEN@  d  FOR$OPEN@  dD      -   XX HHVVVPO[`^Ы\ːԭԭԭԭVԭZ(((((((X5P`Z5Q:a\5RޫTb`5Scd5Tdf5Ueh5Pޫp`l5Qap5Rbr5Sct5Tޫtdx5Ue|5P`~5Qa5RޫXb5Sc5Td5U*e5PޫP`5Qa5R@b5Sc5Tˉd5Uޫxe5P`5Qa5RޫLb5Sc5Td5UPPPqbP|PPP P ^PyPP&P P`PPPGPzP PPPPPPPP7 P P P PA P}I PK Ptj P P P Pq P P P P P P PS Pz P%~ P P P  P  PQ P P! P3 PR P P&) P&V P% P% P% P$ PPP PPP*PKPQP sPvP|!b$ DISKM010.Br  [DISK.B]REVIEW_DISK_DECPS.OBJ;5,,$PPP,P3 P PPFPP8P P* PP(P QP}YP[PtzPPPPP#PCPVPdPrPP2P#PPP'APcPhP'PP+P#P'7PFLPhP PZP9P@P6PA;P<wPd|P_PDP?PP(PCPT)PPwgPjP qPsPPP aU   "-v)4C8 GET_PSPA_DISK01 7-Jul-1993 10:06 7-Jul-1993 10:06DEC Fortran V6.0-1 GET_PSPA_DISK GET_PSPA_DISK PPPO [^,V} PQ,мЭ$Ь ޫPFOR$INI_DES1_R2YYZZP@Rb@8 STR$COPY_DXPPHDLIB$STOP^(n_~(n^X- H,YY1WjTdTDZUEQaQjRAQTbNScS(ZXHYiYNPAYS`RUeU,ZQATdTRVATUfVXhX0ZP@YiYVQAYXa O GET_PSPA_DISK STR$COPY_DXLIB$STOP$CODE$PDATAl$LOCALCOM$DEVFOR$INI_DES1_R2WP P P6*e8 GET_PSPA_FILE01 7-Jul-1993 10:06 7-Jul-1993 10:06DEC Fortran V6.0-1 GET_PSPA_FILE GET_PSPA_FILE04PMlPO4[^,V} PQ,4W}PQ4мЭ$Ь ޫPFOR$INI_DES1_R2PQP^(PA4n^SY$~YZ^(,nZV_~VP,Pn PQ^ZZMXXP@RbH@ STR$COPY_DXPPPLLIB$STOP^(n_~(n^- 4- 1VTXUEP`PVVvQAScSPS1XUERbRAUeURU XYIRbRAScSRSXYIRbRAUeURUAScSAUSeAYiYXRBUeUARAUYbV1\ZZ1 O GET_PSPA_FILE STR$COPY_DXLIB$STOP$CODE$PDATA$LOCAL COM$ARRAYFOR$INI_DES1_R2SP P PP P~&Pe?PLXP3PPSGi 4 PSPA$STOP01 7-Jul-1993 10:06 7-Jul-1993 10:06DEC Fortran V6.0-1 PSPA$STOPuP)5 %DECPS-F-INCOMPAT, Data is incompatible with reader.1 %DECPS-F-NOALLOCVA, Insufficient virtual memory. PSPA$STOP"TPPPTPTPTPHP[м SYS$GETMSG~ FOR$WRITE_SFk  FOR$IO_T_DS FOR$IO_ENDѼм ($ SYS$GETMSG~ FOR$WRITE_SFk484 FOR$IO_T_DS FOR$IO_ENDм@< SYS$GETMSG~ FOR$WRITE_SFkLPL FOR$IO_T_DS FOR$IO_ENDѼ~ FOR$WRITE_SF FOR$IO_ENDѼ:~ FOR$WRITE_SF FOR$IO_ENDмXTSYS$EXIT H PSPA$STOPSYS$EXIT SYS$GETMSG$CODEn$PDATA$LOCAL FOR$IO_END FOR$IO_T_DS FOR$WRITE_SF(EPrP?PPP((X5P`Z5Q:a\5RޫTb`5Scd5Tdf5Ueh5Pޫp`l5Qap5Rb*[DISK.B]WEEKLY_HOT_FILES.COM;27+,./ 4S- 0123KPWO56GM7@i,<^89GHJ2$ ! COPYRIGHT (C) 1992 BY=$ ! DIGITAL EQUIPMENT CORPORATION, MAYNARD<$ ! MASSACHUSETTS. ALL RIGHTS RESERVED.$ !J$ ! THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIEDM$ ! ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSIONF$ ! OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIESI$ ! THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHERN$ ! PERSON. NO TITLE TO AND OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.$ !M$ ! THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE ANDN$ ! SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT CORPORATION.$ !H$ ! DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS;$ ! SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY DIGITAL.$ !N$ !***************************************************************************$ !/$!check to see if VPA is installed on this node $VPA = "YES"#$VPADEF = F$TRNLNM("PSDC$DATABASE")*$IF ("''VPADEF'" .EQS. "") THEN VPA = "NO"1$!check to see if DECPS is installed on this node$DECPS = "YES"%$DECPSDEF = F$TRNLNM("PSDC$DATABASE").$IF ("''DECPSDEF'" .EQS. "") THEN DECPS = "NO"O$IF (("''VPA'" .EQS. "NO").AND.("''DECPS'" .EQS. "NO")) THEN WRITE SYS$OUTPUT -K"DECPS/VPA ARE NOT INSTALLED ON THIS SYSTEM, HOTFILES CANNOT BE DETERMINED"C$IF (("''VPA'" .EQS. "NO") .AND. ("''DECPS'" .EQS. "NO")) THEN EXITO$IF (("''VPA'" .EQS. "YES") .AND. ("''DECPS'" .EQS. "NO")) THEN PRODUCT = "VPA"O$IF (("''VPA'" .EQS. "NO") .AND. ("''DECPS'" .EQS. "YES")) THEN PRODUCT = "DEC"P$IF (("''VPA'" .EQS. "YES") .AND. ("''DECPS'" .EQS. "YES")) THEN PRODUCT = "DEC"$NODE = F$GETSYI("NODENAME") $HF_CNT = 50'$IF ("''P1'" .NES. "") THEN HF_CNT = P1$ON ERROR THEN GOTO EXIT1$DATE = F$CVTIME("YESTERDAY","COMPARISON","DATE")4$YESTERDAY = F$CVTIME("YESTERDAY","ABSOLUTE","DATE")$START = "''YESTERDAY'-4-" $END = "''YESTERDAY'" + ":23:59" $IF (PRODUCT .EQS. "DEC") THEN -FADVI PERF repo/incl=(NOALL,HOT)/OUT=WEEKLY_HOT_FILES.TXT/BEG='START' -/END='END' perf $IF (PRODUCT .EQS. "VPA") THEN -IADVI/repo=PERF=(NOALL,HOT)/OUT=WEEKLY_HOT_FILES.TXT/BEG='START'/END='END'N$IF (F$SEARCH("HOTFILE_HISTORY.DAT") .EQS. "") THEN CREATE HOTFILE_HISTORY.DAT#$OPEN DECPSHOT WEEKLY_HOT_FILES.TXT($OPEN/WRITE OUTFILE WEEKLY_HOT_FILES.RPT($OPEN/APPEND HISTORY HOTFILE_HISTORY.DAT$ON ERROR THEN GOTO DONE$WRITE OUTFILE -P"This report summarizes last week's hotfiles by disk and updates a history file"$WRITE OUTFILE " " $READ/END=DONE DECPSHOT DECPSREC$LEN = F$LENGTH(DECPSREC) 0$CLUSTER_LEN = F$LOCATE("CLUSTER","''DECPSREC'")6$IF ('CLUSTER_LEN' .NE. 'LEN') THEN GOTO CLUSTER_FOUND$CLUSTER_SKIP: $READ/END=DONE DECPSHOT DECPSREC$LEN = F$LENGTH(DECPSREC) 0$CLUSTER_LEN = F$LOCATE("CLUSTER","''DECPSREC'")5$IF ('CLUSTER_LEN' .EQ. 'LEN') THEN GOTO CLUSTER_SKIP3$IF ("''F$EXTRACT(1,1,DECPSREC)'" .EQS. " ") THEN -. DECPSREC = F$EXTRACT(1,LEN - 1,"''DECPSREC'")$CLUSTER_FOUND:$LENGTH = F$LENGTH(DECPSREC)&$PAGE = F$LOCATE("PAGE","''DECPSREC'")A$IF (PAGE .EQ. LENGTH) THEN PAGE = F$LOCATE("Page","''DECPSREC'"))$NOPAGE = F$EXTRACT(0,PAGE,"''DECPSREC'")!$NEWREC = "''NOPAGE'" + "''NODE'"$WRITE OUTFILE NEWREC $READ/END=DONE DECPSHOT DECPSREC$WRITE OUTFILE DECPSREC $READ/END=DONE DECPSHOT DECPSREC $READ/END=DONE DECPSHOT DECPSREC $READ/END=DONE DECPSHOT DECPSREC $READ/END=DONE DECPSHOT DECPSREC $READ/END=DONE DECPSHOT DECPSREC $READ/END=DONE DECPSHOT DECPSREC $READ/END=DONE DECPSHOT DECPSREC $HEADER_LOOP: $READ/END=DONE DECPSHOT DECPSREC-$IF (PRODUCT .EQS. "DEC") THEN GOTO SKIP_VPA1@$IF ("''F$EXTRACT(0,1,DECPSREC)'" .NES. "$") THEN GOTO SKIP_DEC1&$HDISK = F$EXTRACT(0,15,"''DECPSREC'")!$DISK = F$EDIT("''HDISK'","TRIM")$GOTO NEW_DISK $SKIP_VPA1:$LENGTH = F$LENGTH(DECPSREC)2$IF ((F$LOCATE("($",DECPSREC) .EQ. LENGTH) .AND. -- ((F$LOCATE("(",DECPSREC) .EQ. LENGTH) .OR. -, (F$LOCATE("$",DECPSREC) .EQ. LENGTH) .OR. -; (F$LOCATE(")",DECPSREC) .EQ. LENGTH))) THEN GOTO SKIP_DEC1$LEFTP = F$LOCATE("(",DECPSREC) $RIGHTP = F$LOCATE(")",DECPSREC)>$HDISK = F$EXTRACT(LEFTP + 1,RIGHTP - LEFTP - 1,"''DECPSREC'")!$DISK = F$EDIT("''HDISK'","TRIM")$GOTO NEW_DISK $SKIP_DEC1:$WRITE OUTFILE DECPSREC$GOTO HEADER_LOOP $NEW_DISK:$VOLUME_WRITE = "NO"$! CHECK IF THE DISK IS MOUNTED$MOUNTED = "YES"F$!IF (F$GETDVI("''DISK'","HOST_TYPE") .EQS. "VAX") THEN MOUNTED = "NO"9$IF (.NOT. F$GETDVI("''DISK'","MNT")) THEN MOUNTED = "NO"3$IF (F$GETDVI("'x$ DISKM010.B [DISK.B]WEEKLY_HOT_FILES.COM;27SIh 'DISK'","SWL")) THEN MOUNTED = "NO"3$IF (F$GETDVI("''DISK'","FOR")) THEN MOUNTED = "NO"3$IF (F$GETDVI("''DISK'","DMT")) THEN MOUNTED = "NO"<$IF (.NOT. F$GETDVI("''DISK'","EXISTS")) THEN MOUNTED = "NO" $DISK_LOOP:$ON ERROR THEN GOTO DONE $READ/END=DONE DECPSHOT DECPSRECE$IF ("''F$EXTRACT(0,1,DECPSREC)'" .EQS. " ") THEN GOSUB SKIP_NEW_PAGE-$IF (PRODUCT .EQS. "DEC") THEN GOTO SKIP_VPA2@$IF ("''F$EXTRACT(0,1,DECPSREC)'" .NES. "$") THEN GOTO SKIP_DEC2&$HDISK = F$EXTRACT(0,15,"''DECPSREC'")!$DISK = F$EDIT("''HDISK'","TRIM")$GOTO NEW_DISK $SKIP_VPA2:$LENGTH = F$LENGTH(DECPSREC)2$IF ((F$LOCATE("($",DECPSREC) .EQ. LENGTH) .AND. -- ((F$LOCATE("(",DECPSREC) .EQ. LENGTH) .OR. -, (F$LOCATE("$",DECPSREC) .EQ. LENGTH) .OR. -; (F$LOCATE(")",DECPSREC) .EQ. LENGTH))) THEN GOTO SKIP_DEC2$LEFTP = F$LOCATE("(",DECPSREC) $RIGHTP = F$LOCATE(")",DECPSREC)>$HDISK = F$EXTRACT(LEFTP + 1,RIGHTP - LEFTP - 1,"''DECPSREC'")!$DISK = F$EDIT("''HDISK'","TRIM")$GOTO NEW_DISK $SKIP_DEC2:'$DECPSCOMMAND = F$EXTRACT(0,6,DECPSREC)5$IF ("''DECPSCOMMAND'" .EQS. "User C") THEN GOTO DONE.$! SKIP THIS RECORD IF THE DISK IS NOT MOUNTED,$IF (MOUNTED .EQS. "NO") THEN GOTO DISK_LOOPR$HFILE = F$EXTRACT(35,69,"''DECPSREC' ")O$!extract all of the filename not just 18 characters,bug fix,6/4/92,DRB/dickens>$DECPSFILE = F$EDIT("''F$EXTRACT(35,86,DECPSREC)'","COLLAPSE")$!$FLENGTH = F$LENGTH(DECPSFILE)L$IF (F$LOCATE("(NonVirtualQIO)",DECPSFILE) .NE. FLENGTH) THEN GOTO DISK_LOOPL$IF (F$LOCATE("DeletedoraLOGIC",DECPSFILE) .NE. FLENGTH) THEN GOTO DISK_LOOP$$HIST_CNT = F$EXTRACT(31,3,DECPSREC)+$DECPS_COUNT = F$EDIT("''HIST_CNT'","TRIM")!$HHOTIO = F$EXTRACT(4,5,DECPSREC)S$IF ((DECPS_COUNT .NES. "***") .AND. (DECPS_COUNT .LT. HF_CNT)) THEN GOTO DISK_LOOP5$IF (VOLUME_WRITE .EQS. "YES") THEN GOTO DISK_WRITTEN$VOLUME_WRITE = "YES"%$LABEL = F$GETDVI("''DISK'","VOLNAM")5$WRITE OUTFILE "Hotfiles on disk ''LABEL' (''DISK')"$WRITE OUTFILE DECPSREC $GOSUB FRAG $GOSUB HIST$GOTO DISK_LOOP$DISK_WRITTEN:$WRITE OUTFILE DECPSREC $GOSUB FRAG $GOSUB HIST$GOTO DISK_LOOP$SKIP_NEW_PAGE:$CNT = 0 $SKIP_LOOP:$CNT = CNT + 1%$READ/END=DONE_SKIP DECPSHOT DECPSREC$$IF (CNT .LT. 7) THEN GOTO SKIP_LOOP $DONE_SKIP:$RETURN$FRAG:$!SHOW SYM DECPSFILE#$OPEN/ERR=NO_FRAG FRAG 'LABEL'.FRAG $SET NOON$!READ FRAG HEADER RECS!$READ/END=DONE_FRAG FRAG DISKNAME"$READ/END=DONE_FRAG FRAG DISKHOLES"$READ/END=DONE_FRAG FRAG DISKSPACE"$READ/END=DONE_FRAG FRAG DISKFILES $READ/END=DONE_FRAG FRAG DISKERR!$READ/END=DONE_FRAG FRAG DISKBUSY!$READ/END=DONE_FRAG FRAG DISKSUMM#$READ/END=DONE_FRAG FRAG DISKBLANK1$$READ/END=DONE_FRAG FRAG DISKHEADER1$$READ/END=DONE_FRAG FRAG DISKHEADER2#$READ/END=DONE_FRAG FRAG DISKBLANK2.$! SKIP DISK INFO WE ARE NOT CURRENTLY SHOWING$GOTO FRAG_LOOP9$BITHOLES = F$EDIT("''F$EXTRACT(14,8,DISKHOLES)'","TRIM")8$BIGHOLE = F$EDIT("''F$EXTRACT(36,8,DISKHOLES)'","TRIM")8$TOTSIZE = F$EDIT("''F$EXTRACT(14,8,DISKSPACE)'","TRIM"):$FREESPACE = F$EDIT("''F$EXTRACT(36,8,DISKSPACE)'","TRIM")8$NUMHEADER = F$EDIT("''F$EXTRACT(1,4,DISKSUMM)'","TRIM"):$NUMEXTENTS = F$EDIT("''F$EXTRACT(23,4,DISKSUMM)'","TRIM") $FRAG_LOOP:$READ/END=NOT_FRAG FRAG FRAGREC$!@$!ADDED 7/1/92 TO AVOID EXTRACTING DATA FROM THE BIG FILES LINES$FRLEN = F$LENGTH(FRAGREC)/$FILELINE = F$LOCATE("Files larger th",FRAGREC),$IF (FILELINE .NE. FRLEN) THEN GOTO NOT_FRAG$!8$FRAGFILE = F$EDIT("''F$EXTRACT(36,86,FRAGREC)'","TRIM")$!SH SYM FRAGFILE2$IF (DECPSFILE .NES. FRAGFILE) THEN GOTO FRAG_LOOP2$HEAD = F$EDIT("''F$EXTRACT(2,8,FRAGREC)'","TRIM")2$EXT = F$EDIT("''F$EXTRACT(11,8,FRAGREC)'","TRIM")3$SIZE = F$EDIT("''F$EXTRACT(19,8,FRAGREC)'","TRIM")$WRITE OUTFILE -O " This ''SIZE' block file has ''HEAD' file headers and ''EXT' file extents"$WRITE OUTFILE " "$GOTO DONE_FRAG $NOT_FRAG:$WRITE OUTFILE -9 " This file is not listed as a badly fragmented file"$WRITE OUTFILE " " $DONE_FRAG: $CLOSE FRAG$RETURN $NO_FRAG:$WRITE OUTFILE " "$RETURN$HIST:.$IF (HIST_CNT .EQS. "***") THEN HIST_CNT = 999"$ENDDIR = F$LOCATE("] ",HFILE) + 1$FLEN = F$LENGTH(HFILE)($DFILE = "''F$EXTRACT(0,ENDDIR,HFILE)'" 7$FFILE = "''F$EXTRACT(ENDDIR + 1,FLEN - ENDDIR,HFILE)'"$PFILE = DFILE + FFILE@$WRITE HISTORY "''DATE' ''HDISK' ''HIST_CNT' ''HHOTIO' ''PFILE'"$RETURN$DONE:$CLOSE OUTFILE$CLOSE DECPSHOT$CLOSE HISTORY$EXIT:"$PURGE/KEEP=1 WEEKLY_HOT_FILES.TXT$EXITa$ DISKM010.B   jhOBJ;T(h&gy7 JgZz^|5s2R"XbP$ nVLŭV%LfiiFD󾚊w.;dɛ[9W,03zW"jl9g~!]pxN`[%|7L|5[ga|:뤲d@: : ꂊ&q,ae8vVdn1`/Y ` p3F>2pIUiUyb-J"}jbj?Tc)T[2 {$TcD |Z1=8E#gFM$V:ɋ ߯,H t6s$R .L3NС%q3DaZtDq* Q"DlݷN`T8c:,,q#WZLaKO;[ x"trG)7|+:q*cx'97Tv|}E˃O~l{Agdrd9@FEzC Etwa}jhYoQb|wKQU$F.HZOJu9{ʖF|'-')9 U9ڣA)$"3k{G{%ٻ`E=v?Bovր4iE't@GxӏSW|?bџZu~R.~j"R*|lHWP+@TP_`-}V juRʯ*)UZ;$d J|?lCs|KO.b?@J9x; D\&2K~mBu2|E 4&R8{6> *m.ۜ2i='\v0@p6V6O]Hx"ao+uhAAsbArk3{f&Je֪DYlU-Kt2V,~{'Lq@Uq 33WwIU0BP9-l<ͯOI8k7~d}]Y/Ǻ disi &שXٟ 5Dc-N:5[!2 B @Cu @F )+KrD~a ݗڂ}פxEu8 ^}Q' M_HIPU~L&ri] u -,u!H|9_ӧ,PGdsܕ^B0w*:ɶ4{P×PCϵ[$QUχ/,u~ =O d& ^ZS~g:mx4hyä<[4!Y7! gj2턦`d?H>ʹ4])*7:Q!ótg9)9qSɒ8nyCp={3â?# Is'm{Sd.';gdm"e}.Ѣ3euߴ6`hCv@͈I0yo%Ȟ|乧.y1znܛ/`7AVMQ< -ߡ*EO=YhWƒ #,= Ia+50#`b[$7E^/f a-B45֟B)mBKau<ڇ/A@'i]xxpl><>#bi9sT۳ d`%>p.tPfZ ~m9Zgw.ra3'2IN"؅c hAqQi]:\#ͥܚ@M1wtZ(W@rďu?*xkb=wId=gT9 r"$%qD|M!,{C`l9K>UhKbzGb6\΢44s.4[ZDQ鴽o´C.y*Χn4! P~aա}Zuj8`#ܿ!!L /Xes_I1_, E4rf:͇=W% L[?61_j* nTLL16A|@k0 WCjKwzdMU]  .=Ç>6tƾN&אev: y^CPRy)O.Dg[,n$KPJ4f&X hU&u\7Bre$Sq"s asZZ,ۆj^ 0(FXo= T<\ ?ʖB\I1:#'KCovC`ʬ28B(8"~wQ?RiQo?*ql|(K=ACL#?N-𒢺8!m*{fՉD zNW"XR!9}@ ~ҵf,-V霒VY\\K*C&RC y-NQC >U7b*\ &~$\xz,L5xtC r|7rw 9B2.C? JLO4+ _ ޹H2zeBi%ɂwM2j#G P2G=QYNqsiBB[!#{Nb bv\tJToj:QdTpR8SR;L쩥iHy6_"4g 4͞Ga9,xG0PfJhg5~}ͅOnp:oyqff#du{|̠o(9% ן\ %Kz3cŬ \lJh 8RzISXG 0Ep\L b[bN^#DasXZ4j :*x'_-.osIbio$з.B<[G wIOgjW@jT+c-? ځ_Z![rkNf fh'Vz/ZV  'NKc&,SҐ~=H:bhUч'twߝ,*U,k? gNuGb FEަLUTGoLc˙E MDNRۏO錊EɄGN/M|t?'{I_WTuH륺ũN%BkE;|'ua*4ɡc?8X}v޺7/|?^r> 1QWzz@4/ã Wc^-{U\uA- z"|F)-.8~CY(#9[oH#HۭtTbqL&6Mu1NtK&o>Z"ʧj앶5/[s(6 crGQ5{]z)? !ɍi fj?`uˀNK/.!o'HE {rkA"GnA# d-l(t YX $NY'@po7P{R5yaLd"D@i!Dc_P/ RHbk^C^XjP 6sUpr/Vuqg"a&?ց8 77, Q1DM'7*(bO̦l. KuevЬ932ï/[s=bܥb!M%#xD0f|n0Df$tŠ xF)cБ4M"'lsw)g-ߚ HZaXv\. 6*!E) VV|ݬz'=EfY0Qꈎ)wSCo0!BD;jx2 q+$Zebۭ?nshfRKwV8LrCw)l<`(|F ӠdVBY-& -=z#KFɊi;oQ]epohvq@==2粏#DɁTV;:\D?'gƜ\H`̵n u}1j5~.dLvz@ %Kp{A^Z$$=8XVD ;kA/JFX~ ,5k`۟JbJZ_k.Bs/Ю_n۫Hq,)DJ>G zI]Y{vرؙD[uǓ9H'ZMpp0[l}A]Kp\+ϣͷ#\CZW-" u836Cx sQ#pp-/Mf}W`dL}{}IƥRSE 26K&x]TYi]j$ B5g}`Fl#~~9HYHL321*ƒd5?(RH $HiA_mD`*Yb 5φ-q!,=ދ:RV>Ku\t}|Jo!##ڍJ{cA曈 }JLR$!{Hc7sQ_$%f|K@ JDV .4:Ra#rO KaabNy%e^ n$[1@ؑeP|A'3j$|nl߯W{~!A8K&<@B1?m1w; Q^HhO>3+/ 5~(3Vjӿ#5o/r~4)vT#g;/ E⓷u 3LJk8x1c{zSv'ucO[ :" [ʪ/߬\4 :+ 8S,nUZSWU @0 8sڶ{lwv6@ I͌h@WaYMcE[;OKTEP t6ɒ}/rh06o\DM 3'C8~B^$NODMiG,\bqI$DWAwߛw%DIO =ؙ1Ipq3n8/bdq&psQ/`>lN6! 94@bA[Vo: ;Tp6),3|˿ }mpU];X6s+({8TARQDž3o>kJ*GJMeTmooATF%})NY-Em'1j?9dIj-^KyW?1zo\ەjVls-Դb ٬C^>%? XQwk7. Nz l}m/fTV2"PJx(;0V87v=J}C$.B6LDu.,:lO,%{o- +Yӡs/.-SWcd\`=6~hgT(Yn*ɇw (~#_ Ùe4fS]z|XTR:C9YD>3lir#oVu"% ycU-Z.̸:;i6fl%#2,v?rk&hÑʑ3$ּ q݁k~$pџb*OL(&![A tOL+?g)"nv\rM_颪0HՊ(:؋*:3@Tci{˓Cn*::LtX;GH$wHd)DvXĚTա=0qV=-yU`6pFU<|-\Pø(F)wBC+qEFrD2!@N=Qޡ-Ddi~/bov{3 ]̫#.%7D3p}^KCV#^2w8Rr[e脀{<ڣ6We$;B)]j|8VB.Ci%Fk\d(UM 5c+j[ o2C%`R`h7bSmU+7,ĥ$˨Y1)wG8~h 7t[!9[G #hJWa *'crfoꌷ,gsl@~u*%z ):b;39x/iԈ~vr[a @: XV<(.IkOױqY$cgL|`P}1i$H|gcU\)_>q}Xb hhvGn") Tz:C~%vn^] 9yz"O \^TU`t1"Yy;NE{?P05DS GshWGc?scU fq5o"SWTa4^t+pW枷8]X)=qS1!rċdX6juK \X#wFYox= DRx Tzr ϲkh$gDSVj-+hNok9)-,_='/rtAIH^B>.X4RZt,MhC^)?Pl