c combine output from several runs of this using c combhist.for CHARACTER*40 INFILE,FILENAME LOGICAL EFLG real*4 M1(3),d(100) INTEGER*4 count(500),I,J,k 1200 FORMAT(A) write(6,*)'Enter bin size (AU):' read (5,*) binsize c read operator into m2 6 WRITE(6,*) 'ENTER NAME OF pdb file (atom recds only):' READ(5,1200) INFILE IF (INFILE(:5).EQ.' ') STOP INQUIRE(FILE=INFILE, NAME=FILENAME,EXIST=EFLG) IF (.NOT.EFLG) GOTO 6 OPEN (UNIT=2,FILE=INFILE,STATUS='OLD',READONLY) C make 1 pass to find minimum z value: k=0 zmax=-1e10 zmin= 1e10 c read coord 50 read(2,51,end=60) x,y,z 51 format (30x,3d8.3,2f6.2) c write(6,*) x,y,z if (z.lt.zmin) zmin=z if (z.gt.zmax) zmax=z k=k+1 goto 50 60 CLOSE(UNIT=2) write (6,*) 'number, zmin,zmax=', k,zmin,zmax write (6,*) 'Enter zmin, zmax to use:' read(5,*)zmin,zmax do 70 I=1,1+ int(zmax/binsize) 70 count(i)=0 C second pass to count into bins OPEN (UNIT=2,FILE=INFILE,STATUS='OLD',READONLY) k=0 c read coord 150 read(2,51,end=160) x,y,z c write(6,111) x,y,z ibin=(z - zmin)/binsize count(ibin)=count(ibin)+1 k=k+1 goto 150 160 CLOSE(UNIT=2) do 170 I=1,1+ int(zmax/binsize) 170 write (6,*) (i-1)*binsize, count(i) END