1  COM X$[6],X,Y$[7],S1$[6],P$[30],Z$[64],C$[11]
100  REM  program name...: SPACE
140  REM
150  REM  files..: $ZSPACE (or optionally selected ASCII file)
160  REM  purpose: to breakdown available disc space by groupings
170  REM  to use.: ADT tracks must be dumped out to an ASCII file
180  REM             =>  dum*out=(file name)*adt
190  REM
1000  DIM A$[255],B$[255],D$[25]
1010  DIM T[3],F[100],X[101],S[101],L[101]
1020  FILES AAAADT
1030  MAT T=ZER
1040  MAT X=ZER
1050  MAT S=ZER
1060  MAT L=ZER
1070  REM *****************************************
1080  REM  sets groupings for block sizes
1090  J=F[1]=0
1100  IF TYP(0)#1 THEN 1170
1110  J=J+1
1120  READ F[J+1]
1130  IF F[J+1] <= F[J] THEN 1120
1140  GOTO 1100
1150  DATA 5,15,25,50,75,100,150,250,500,1000,2500
1160  REM ==============
1170  C=J+1
1180  REM ****************************************
1190  REM  read and convert data from ASCII file
1200  IF  END #1 THEN 1400
1210  LINPUT #1;B$
1220  LINPUT #1;A$
1230  IF A$[1,3]="ADT" THEN 1220
1240  FOR I=8 TO LEN(A$) STEP 14
1250  CONVERT A$[I,I+4] TO N
1260  T[1]=T[1]+N
1270  T[2]=T[2]+1
1280  IF N <= T[3] THEN 1300
1290  T[3]=N
1300  FOR J=1 TO C
1310  IF N>F[J] THEN 1330
1320  GOTO 1340
1330  NEXT J
1340  S[J]=S[J]+N
1350  X[J]=X[J]+1
1360  IF N <= L[J] THEN 1380
1370  L[J]=N
1380  NEXT I
1390  GOTO 1220
1400  F[C+1]=INT((T[1] MAX F[C])/100)*100+200
1410  REM **********************************************
1420  REM  print output
1430  GOSUB 1570
1440  PRINT "SYSLIB STORAGE UTILIZATION ANALYSIS AS OF ";D$
1450  PRINT 
1460  PRINT "range:";TAB(22);"   blocks    space  largest"
1470  FOR J=2 TO C+1
1480  IF X[J]=0 THEN 1510
1490  PRINT  USING 1500;F[J-1]+1,F[J],X[J],S[J],L[J]
1500  IMAGE     9D," to", 7d,"..:", 3(9d)
1510  NEXT J
1520  PRINT TAB(22);"   ------   ------"
1530  PRINT  USING 1540;T[2],T[1]
1540  IMAGE "TOTAL SYSTEM SPACE...:",9D,9D
1550  PRINT 
1560  GOTO 1760
1570  REM (C)**************************** dater subr.
1580  CONVERT B$[16,18] TO T2
1590  CONVERT B$[20,21] TO T3
1600  DEF FNZ()=31-(M=2)*3-(M=4 OR M=6 OR M=9 OR M=11)
1610  M0=M1=0
1620  FOR M=1 TO 12
1630  M0=M0+FNZ(M)
1640  IF T3/4#INT(T3/4) OR M#2 THEN 1660
1650  M0=M0+1
1660  IF M0 >= T2 THEN 1690
1670  M1=M0
1680  NEXT M
1690  D$="  /  /    at    :  "
1700  CONVERT M TO D$[1+(M<10),2]
1710  CONVERT T2-M1 TO D$[4+(T2-M1<10),5]
1720  CONVERT T3 TO D$[7,8]
1730  D$[15,16]=B$[24,25]
1740  D$[18]=B$[26,27]
1750  RETURN 
1760  REM (C) ******************************* END OF PROGRAM
1765  CHAIN X0,C$
1770  END 
