16-Aug-1990 09:09:17 VAX FORTRAN V5.4-79 Page 1 16-Aug-1990 09:08:13 SYS$SYSDEVICE:[CHRIS]DISKSPACE.FOR;17 0001 C PROGRAM: DISKSPACE DATE: 16th AUGUST 1990 RUN: 17 0002 C 0003 C PROGRAM TO LIST ALL THE USER DIRECTORIES ON A GIVEN DISK 0004 C LISTS: 1. EACH DIRECTORY NAME IN THE ROOT 0005 C 2. HOW MANY SUBDIRECTORIES IT CONTAINS 0006 C 3. HOW MANY FILES ARE INVOLVED 0007 C 4. HOW MANY BLOCKS ARE TAKEN 0008 C 0009 C PROGRAM IGNORES SINGLE FILES IN THE ROOT DIRECTORY. 0010 C 0011 INTEGER*4 IBLKS(300),KB,TOTDIR,TOTFIL,TOTBLK 0012 CHARACTER*23 DATIME 0013 LOGICAL DBG 0014 DIMENSION LYN(80),NDIR(300,31),NFILE(31),NTYP(31) 0015 DIMENSION IDIR(300),IFILES(300),IHDIR(9),ITOT(8) 0016 DIMENSION IVOLN(31),INUM(10) 0017 DATA IHDIR/'D','i','r','e','c','t','o','r','y'/ 0018 DATA ITOT/'T','o','t','a','l',' ','o','f'/ 0019 DATA INUM/'0','1','2','3','4','5','6','7','8','9'/ 0020 DATA IDOT,KOMMA,IKOLON,ILBK,IRBK/'.',',',':','[',']'/ 0021 DATA IBL,IPTR,JDIR,KA,KB/' ',1,0,0,0/ 0022 DATA IDIR,IFILES,IBLKS,IVOLN,NDIR,NFILE/1,899*0,9362*' '/ 0023 DATA DBG,TOTDIR,TOTFIL,TOTBLK/.FALSE.,3*0/ 0024 C WRITE(6,13) 0025 C13 FORMAT('$ENTER DEBUG (0/1):') 0026 C READ(5,14)I 0027 C14 FORMAT(I2) 0028 C IF (I.EQ.1)DBG=.TRUE. 0029 IF (DBG) WRITE(6,15) 0030 15 FORMAT(' PROGRAM IS RUNNING IN TEST MODE.') 0031 OPEN(5,FILE='DISKSPACE.DAT',STATUS='OLD') 0032 OPEN(3,FILE='DISKSPACE.TXT',STATUS='NEW') 0033 CALL LIB$DATE_TIME(DATIME) 0034 IF (DBG) WRITE(6,17)DATIME 0035 17 FORMAT(9X,'DATE AND TIME =',A23) 0036 WRITE(6,16) 0037 16 FORMAT('0 0 STATEMENTS PROCESSED') 0038 DO 50 LINE=1,99999 0039 WRITE(6,19)LINE 0040 19 FORMAT('+',I7) 0041 DO 20 I=1,80 0042 20 LYN(I)=IBL 0043 READ(5,21,END=60)(LYN(K),K=1,80) 0044 21 FORMAT(80A1) 0045 DO 22 I=1,80 0046 IF (LYN(I).NE.IBL)GO TO 24 0047 22 CONTINUE 0048 GO TO 50 0049 0050 24 DO 25 I=1,9 0051 IF (LYN(I).NE.IHDIR(I))GO TO 30 0052 25 CONTINUE 0053 IF (DBG) WRITE(3,29) 0054 29 FORMAT(' HANDLE DIRECTORY HERE') 0055 26 IF (DBG) WRITE(3,27)LYN 0056 27 FORMAT(1X,80A1) 0057 DO 220 I=1,31 DISKSPACE$MAIN 16-Aug-1990 09:09:17 VAX FORTRAN V5.4-79 Page 2 16-Aug-1990 09:08:13 SYS$SYSDEVICE:[CHRIS]DISKSPACE.FOR;17 0058 220 NFILE(I)=IBL 0059 IF(IVOLN(1).NE.IBL)GOTO 227 0060 DO 221 I=11,38 0061 IF(LYN(I).NE.IBL)GO TO 223 0062 221 CONTINUE 0063 GO TO 227 0064 223 DO 225 J=0,30 0065 IF(LYN(I+J).EQ.ILBK)GO TO 227 0066 225 IVOLN(J+1)=LYN(I+J) 0067 227 DO 222 I=11,40 0068 IF (LYN(I).EQ.ILBK)GO TO 228 0069 222 CONTINUE 0070 224 IF (.NOT. DBG)WRITE(6,27)LYN 0071 WRITE(3,226) 0072 226 FORMAT(' ERROR PROCESSING DIRECTORY HEADER') 0073 GO TO 50 0074 228 DO 250 J=1,32 0075 IF (LYN(I+J).EQ.IRBK)GO TO 252 0076 IF (LYN(I+J).EQ.IDOT)GO TO 252 0077 250 NFILE(J)=LYN(I+J) 0078 252 IF (DBG) WRITE(3,254)NFILE 0079 254 FORMAT(' DIRECTORY NAME=',31A1) 0080 DO 262 I=1,JDIR 0081 IF (NDIR(I,1).EQ.IBL)GO TO 264 0082 DO 260 J=1,31 0083 IF (NDIR(I,J).NE.NFILE(J))GO TO 262 0084 260 CONTINUE 0085 IF (DBG) WRITE(3,267)I 0086 IPTR=I 0087 IF (DBG) WRITE(3,261)JDIR,IPTR 0088 261 FORMAT(' JDIR=',I4,',IPTR=',I4) 0089 GO TO 268 0090 262 CONTINUE 0091 I=300 0092 264 DO 266 J=1,31 0093 266 NDIR(I,J)=NFILE(J) 0094 IF (DBG) WRITE(3,267)I 0095 267 FORMAT(' DIRECTORY NAME AT POSITION',I4) 0096 IPTR=I 0097 IF(JDIR.LT.300)JDIR=JDIR+1 0098 268 CONTINUE 0099 GO TO 50 0100 0101 30 DO 32 I=1,8 0102 IF(LYN(I).NE.ITOT(I))GO TO 40 0103 32 CONTINUE 0104 C HANDLE SUB-TOTAL OF FILES,BLOCKS HERE 0105 IF (DBG) WRITE(3,38) 0106 38 FORMAT(' HANDLE SUB-TOTALS HERE') 0107 IF (DBG) WRITE(3,27)LYN 0108 0109 130 IVAL=0 0110 DO 134 I=10,15 0111 DO 132 J=1,10 0112 IF (LYN(I).EQ.INUM(J))GO TO 134 0113 132 CONTINUE 0114 GO TO 136 DISKSPACE$MAIN 16-Aug-1990 09:09:17 VAX FORTRAN V5.4-79 Page 3 16-Aug-1990 09:08:13 SYS$SYSDEVICE:[CHRIS]DISKSPACE.FOR;17 0115 134 IVAL=IVAL*10+J-1 0116 136 KA=IVAL 0117 DO 230 I=16,23 0118 IF(LYN(I).EQ.KOMMA)GO TO 234 0119 230 CONTINUE 0120 232 WRITE(3,27)LYN 0121 WRITE(3,233) 0122 233 FORMAT(' ERROR PROCESSING SUB-TOTAL INFORMATION') 0123 GO TO 50 0124 234 IVAL=0 0125 DO 238 I=I+2,29 0126 DO 236 J=1,10 0127 IF(LYN(I).EQ.INUM(J))GO TO 238 0128 236 CONTINUE 0129 GO TO 239 0130 238 IVAL=IVAL*10+J-1 0131 239 KB=IVAL 0132 138 IF (DBG) WRITE(3,139)KA,KB 0133 139 FORMAT(' TOTAL VALUE=',I6,' TOTAL BLOCKS=',I6) 0134 IDIR(IPTR)=IDIR(IPTR)+1 0135 IFILES(IPTR)=IFILES(IPTR)+KA 0136 IBLKS(IPTR)=IBLKS(IPTR)+KB 0137 IF (DBG) WRITE(3,140)IPTR,IDIR(IPTR),IFILES(IPTR),IBLKS(IPTR) 0138 140 FORMAT(' IPTR=',I4,',IDIR(IPTR)=',I6,',IFILES(IPTR)=',I6,', 0139 1 IBLKS(IPTR)=',I8) 0140 GO TO 50 0141 0142 40 CONTINUE 0143 C WRITE(3,39)(LYN(KK),KK=1,64) 0144 C39 FORMAT(10X,64A1) 0145 50 CONTINUE 0146 0147 60 WRITE(3,62)IVOLN,DATIME 0148 62 FORMAT(41X,'DISK VOLUME: ',31A1,20X,A11) 0149 WRITE(3,63) 0150 63 FORMAT(41X,'------------',32X,'-----------') 0151 DO 67 I=1,300 0152 IF (IDIR(I).EQ.0)GO TO 67 0153 64 IF (DBG) WRITE(3,68)(NDIR(I,K),K=1,31),I,IDIR(I),IFILES(I),IBLKS(I) 0154 68 FORMAT(1X,31A1,',I=',I4,',IDIR(I)=',I6,',IFILES(I)=',I6, 0155 1 ',IBLKS(I)=',I8) 0156 67 CONTINUE 0157 DO 290 I=1,300 0158 IF(NDIR(I,1).EQ.IBL)GO TO 290 0159 TOTDIR=TOTDIR+IDIR(I) 0160 TOTFIL=TOTFIL+IFILES(I) 0161 TOTBLK=TOTBLK+IBLKS(I) 0162 WRITE(3,292)I,(NDIR(I,K),K=1,31),IDIR(I),IFILES(I),IBLKS(I) 0163 292 FORMAT('0',I3,'. ',31A1,' CONTAINS',I4,' DIRECTORIES,',I6, 0164 1 ' FILES,',I7,' BLOCKS.') 0165 290 CONTINUE 0166 WRITE(3,298)TOTDIR 0167 298 FORMAT('0TOTAL NUMBER OF DIRECTORIES = ',I5) 0168 WRITE(3,294)TOTFIL 0169 294 FORMAT(' TOTAL NUMBER OF FILES = ',I11) 0170 WRITE(3,296)TOTBLK 0171 296 FORMAT(' TOTAL NUMBER OF BLOCKS =',I11) DISKSPACE$MAIN 16-Aug-1990 09:09:17 VAX FORTRAN V5.4-79 Page 4 16-Aug-1990 09:08:13 SYS$SYSDEVICE:[CHRIS]DISKSPACE.FOR;17 0172 WRITE(3,61)LINE 0173 61 FORMAT(/I6,' LINES READ') 0174 CLOSE (5) 0175 CLOSE (3) 0176 STOP 0177 END PROGRAM SECTIONS Name Bytes Attributes 0 $CODE 1190 PIC CON REL LCL SHR EXE RD NOWRT LONG 1 $PDATA 733 PIC CON REL LCL SHR NOEXE RD NOWRT LONG 2 $LOCAL 41820 PIC CON REL LCL NOSHR NOEXE RD WRT LONG Total Space Allocated 43743 ENTRY POINTS Address Type Name 0-00000000 DISKSPACE$MAIN VARIABLES Address Type Name Address Type Name Address Type Name Address Type Name 2-0000A280 CHAR DATIME ** L*4 DBG ** I*4 I 2-0000A2B4 I*4 IBL 2-0000A2A4 I*4 IDOT ** I*4 IKOLON 2-0000A2AC I*4 ILBK 2-0000A2B8 I*4 IPTR 2-0000A2B0 I*4 IRBK ** I*4 IVAL ** I*4 J 2-0000A2BC I*4 JDIR 2-0000A2C4 I*4 K ** I*4 KA ** I*4 KB 2-0000A2A8 I*4 KOMMA 2-0000A2C0 I*4 LINE 2-0000A2A0 I*4 TOTBLK 2-0000A298 I*4 TOTDIR 2-0000A29C I*4 TOTFIL ARRAYS Address Type Name Bytes Dimensions 2-00000000 I*4 IBLKS 1200 (300) 2-00009838 I*4 IDIR 1200 (300) 2-00009CE8 I*4 IFILES 1200 (300) 2-0000A198 I*4 IHDIR 36 (9) 2-0000A258 I*4 INUM 40 (10) 2-0000A1BC I*4 ITOT 32 (8) 2-0000A1DC I*4 IVOLN 124 (31) 2-000004B0 I*4 LYN 320 (80) 2-000005F0 I*4 NDIR 37200 (300, 31) 2-00009740 I*4 NFILE 124 (31) 2-000097BC I*4 NTYP 124 (31) DISKSPACE$MAIN 16-Aug-1990 09:09:17 VAX FORTRAN V5.4-79 Page 5 01 16-Aug-1990 09:08:13 SYS$SYSDEVICE:[CHRIS]DISKSPACE.FOR;17 LABELS Address Label Address Label Address Label Address Label Address Label Address Label 1-0000001C 15' 1-00000056 16' 1-00000040 17' 1-00000076 19' ** 20 1-0000007C 21' ** 22 0-000000E4 24 ** 25 ** 26 1-0000009A 27' 1-00000081 29' 0-00000238 30 ** 32 1-00000112 38' 0-00000318 40 0-00000318 50 0-00000323 60 1-000002CC 61' 1-000001B9 62' 1-000001D3 63' ** 64 0-00000374 67 1-000001F3 68' ** 130 ** 132 0-00000270 134 0-0000027F 136 ** 138 1-00000156 139' 1-0000017A 140' ** 220 ** 221 ** 222 0-0000012C 223 ** 224 ** 225 1-000000A1 226' 0-00000147 227 0-00000198 228 ** 230 ** 232 1-0000012C 233' 0-000002D0 234 ** 236 0-000002F4 238 0-00000303 239 ** 250 0-000001B9 252 1-000000C6 254' ** 260 1-000000DD 261' 0-000001FC 262 0-00000205 264 ** 266 1-000000F2 267' 0-00000234 268 0-00000408 290 1-0000022B 292' 1-00000290 294' 1-000002AE 296' 1-0000026C 298' FUNCTIONS AND SUBROUTINES REFERENCED Type Name Type Name Type Name FOR$CLOSE FOR$OPEN LIB$DATE_TIME COMMAND QUALIFIERS FORTRAN/LIST DISKSPACE /CHECK=(NOBOUNDS,OVERFLOW,NOUNDERFLOW) /DEBUG=(NOSYMBOLS,TRACEBACK) /DESIGN=(NOCOMMENTS,NOPLACEHOLDERS) /SHOW=(NODICTIONARY,NOINCLUDE,MAP,NOPREPROCESSOR,SINGLE) /STANDARD=(NOSEMANTIC,NOSOURCE_FORM,NOSYNTAX) /WARNINGS=(NODECLARATIONS,GENERAL,NOULTRIX,NOVAXELN) /CONTINUATIONS=19 /NOCROSS_REFERENCE /NOD_LINES /NOEXTEND_SOURCE /F77 /NOG_FLOATING /I4 /NOMACHINE_CODE /OPTIMIZE /NOPARALLEL /NOANALYSIS_DATA /NODIAGNOSTICS /LIST=SYS$SYSDEVICE:[CHRIS]DISKSPACE.LIS;78 /OBJECT=SYS$SYSDEVICE:[CHRIS]DISKSPACE.OBJ;79 COMPILATION STATISTICS Run Time: 19.33 seconds Elapsed Time: 20.41 seconds Page Faults: 866 Dynamic Memory: 560 pages