Here are the subroutines as they did not fit in one post.
SUBROUTINE READDATA(y,n,seqfname)
IMPLICIT NONE
INTEGER::i,ierr
INTEGER,INTENT(out)::n
DOUBLE PRECISION,INTENT(INOUT),DIMENSION(n)::y
CHARACTER(LEN=11),INTENT(IN)::seqfname
ierr = 0
OPEN (UNIT=3, FILE=seqfname, STATUS='OLD', ACTION='READ', IOSTAT=ierr)
DO i = 1, size(y)
READ (3,*,IOSTAT=ierr) y(i)
if (ierr /=0) exit
END DO
n=i-1
CLOSE (UNIT = 3)
RETURN
END SUBROUTINE
!$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
SUBROUTINE MEAN(vdata,avg,n,seqfileout)
IMPLICIT NONE
INTEGER :: i, ierr
DOUBLE PRECISION :: sum1
INTEGER, INTENT(IN) :: n
DOUBLE PRECISION, INTENT(IN), DIMENSION(n) :: vdata
DOUBLE PRECISION, INTENT(OUT) :: avg
CHARACTER(LEN=11),INTENT(IN)::seqfileout
CHARACTER (LEN=11)::seqfout
ierr = 0
seqfout = seqfileout(1:7)
sum1 = 0
DO i = 1, n
sum1 = sum1 + vdata(i)
END DO
avg = sum1/REAL(n)
RETURN
END SUBROUTINE
!$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
SUBROUTINE VFLUCTUATION (vdata,avg,n,fluctuation,seqfileout)
IMPLICIT NONE
INTEGER,INTENT(in):: n
DOUBLE PRECISION,INTENT(in)::avg
DOUBLE PRECISION,DIMENSION(n),INTENT(in)::vdata
DOUBLE PRECISION,DIMENSION(n),INTENT(out)::fluctuation
CHARACTER(LEN=11),INTENT(IN)::seqfileout
CHARACTER(LEN=11)::seqfout
INTEGER::i, ierr
ierr = 0
seqfout = seqfileout(1:7)
DO i=1,n
fluctuation(i) = vdata(i)-avg
ENDDO
RETURN
END SUBROUTINE VFLUCTUATION
!$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
SUBROUTINE AUTOCORRELATION(fluctuation,n,length,newcore,seqfileout)
IMPLICIT NONE
INTEGER,INTENT(IN)::n,length
DOUBLE PRECISION,DIMENSION(n),INTENT(IN)::fluctuation
DOUBLE PRECISION,DIMENSION(length)::core
DOUBLE PRECISION,DIMENSION(2*length),INTENT(OUT)::newcore
CHARACTER(LEN=11),INTENT(IN)::seqfileout
CHARACTER (LEN=11)::seqfout
INTEGER::i,j, ierr
DOUBLE PRECISION::container
core = 0.
ierr = 0
seqfout = seqfileout(1:7)
do i=1,length
do j=1,(n-i)
core(i)=core(i)+(fluctuation(j)*fluctuation(j+i-1))
end do
core(i)=(core(i)/(n-i))
if (i==1)then
container=core(1)
end if
core(i)=core(i)/container
end do
do i = 1,length
newcore(i) = core(length-i+1)
end do
do i = 1,length
newcore(length+i) = core(i)
end do
OPEN (UNIT=14,FILE=trim(seqfout)//'.crr',STATUS='REPLACE',ACTION='WRITE',IOSTAT=ierr)
DO i = 1,2*length
WRITE(14,*)(i-length)*0.0001,newcore(i)
ENDDO
CLOSE (UNIT=14)
RETURN
END SUBROUTINE AUTOCORRELATION