program hisgrmvh integer x,y,z parameter (x=50) parameter (y=500) parameter(z=25000) real hist,width,inc,bin(y),add real dum3,dum4,dum5,dum6 real mean,square,var,dat,data(x) integer colmn,vpnts,pnts,step,i,k,dum2,dum1 character fyle*8,fileout*8 data bin /y*0/ print *, 'Enter data input file' read '(A)', fyle print *, 'Enter data output file' read '(a)', fileout print *, 'Enter data width' read *, width print *, 'Enter data increment' read *, inc print *, 'Enter number of data points' read *, pnts print *, 'Enter data column (2-6)' read *, colmn open(unit=20,file=fyle) step=aint(width/inc)+1 mean=0.0 square=0.0 do 20 j=1,pnts read(20,*) dum1,dum2,dum3,dum4,dum5,dum6 c 21 format(a4,4x,i2,5x,f9.4,3x,f9.4,3x,f9.4,3x,f9.4) 10 continue if (colmn .eq. 2) then data(j)=dum2 else if (colmn .eq. 3) then data(j)=dum3 else if (colmn .eq. 4) then data(j)=dum4 else if (colmn .eq. 5) then data(j)=dum5 else if (colmn .eq. 6) then data(j)=dum6 else print *, 'ERROR! incorrect column number, re-enter number (2-6)' read *, colmn goto 10 endif mean=mean+data(j)/pnts square=square+data(j)**2 20 continue var=(square - pnts*mean*mean)/(pnts-1) do 40 j=1,pnts hist=width*(-1./2.) do 30 k=1,step dat=data(j)-mean if (dat .lt. hist) then add=0 else if (dat .ge. hist+inc) then add=0 else add=1/(inc*pnts) endif bin(k)=bin(k)+add hist=hist+inc 30 continue 40 continue close (unit=20) open (unit=21,file=fileout) hist=width*(-1/2)+inc/2 do 25 k=1,step write (21,*) hist,bin(k) hist=hist+inc 25 continue write (21,*) mean,var close (unit=21) stop end