program directory_total

integer*4	start,end,n,used_total,alloc_total,used_subtotal,alloc_subtotal
integer*4	dot,comma,slash,l,in/1/,report/5/
character*1	infile*30,line*256,dir*80,lastdir*40,thisdir*40
logical*1	eof

call lib$get_foreign(infile,,,)
open(unit=in,file=infile,status='old')
open(unit=report,file='dirtotal.lis',status='new')
eof=.false.
lastdir=' '
repeat{
  read(unit=in,fmt='(q,256a)',end=900) n,line
  if (n!=0) {
    if (line(1:9)=='Directory') {
      start=index(line,'[')+1
      end=index(line,']')-1
      dot=index(line,'.')
      if (dot!=0) end=dot-1
      thisdir=line(start:end)
      if (thisdir!=lastdir) {
        l=index(lastdir,' ')
        if (lastdir!=' ')write(unit=report,fmt=1) lastdir(1:l-1),used_total,alloc_total
1     format(' [',a,'] ',T20,i6,'/',i6)
        lastdir=thisdir
        used_total=0
        alloc_total=0
	}
      }
    else  {
      if (line(1:5)!='Grand') {
	comma=index(line,',')+2
	slash=index(line,'/')
	read(line(comma:slash-1),'(i<slash-comma>)') used_subtotal
	l=index(line(slash+1:),' ')-1
	read(line(slash+1:slash+l),'(i<l>)') alloc_subtotal
	used_total=used_total+used_subtotal
	alloc_total=alloc_total+alloc_subtotal
	}
      }
    }
} until (eof)
900     l=index(lastdir,' ')
write(unit=report,fmt=1) lastdir(1:l-1),used_total,alloc_total
eof=.true.
close(in)
close(report)
end
