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)') used_subtotal l=index(line(slash+1:),' ')-1 read(line(slash+1:slash+l),'(i)') 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