The code:
PROGRAM MINTRES
C FORMATS
20 FORMAT(2X,1G9.4,G10.5,G10.4,G10.3,G10.5,G10.3,I5,I5 )
30 FORMAT(G10.3)
40 FORMAT(A,G10.4)
50 FORMAT(2X,
1G9.4,G10.5,G10.4,G10.3,G10.5,G10.3,I7,I7,4X,G10.3)
C DECLARATIONS:
IMPLICIT NONE
DOUBLE PRECISION CL, CRL, CNL, ChL
DOUBLE PRECISION CU, CRU, CNU, ChU
DOUBLE PRECISION CS, CRS, CNS, ChS
DOUBLE PRECISION iC, iCR, iCN, iCh
DOUBLE PRECISION iCf, iCRf, iCNf, iChf
DOUBLE PRECISION msRes, sRes, Pn
INTEGER I, J, CNT
DOUBLE PRECISION Fy(150), t(150), Pt(150)
DOUBLE PRECISION R(150), N(150), h(150)
C INITIALISE VARIABLES
DATA CL/0.0D0/, CRL/1.0D-4/, CNL/1.0D-4/, ChL/1.0D-4/
DATA CU/2.0D1/, CRU/1000.1D-3/, CNU/1000.1D-3/, ChU/1000.1D-3/
DATA CS/0.5D0/, CRS/2.5D-2/, CNS/2.5D-2/, ChS/2.5D-2/
DATA iC, iCR, iCN, iCh/4*0.0D0/
DATA iCf, iCRf, iCNf, iChf/4*0.0D0/
DATA msRES, sRES, Pn/3*0.0D0/
DATA I/1/, J/1/, CNT/0/
D /*debug stuff
PRINT *, CL, CRL, CNL, ChL
PRINT *, CU, CRU, CNU, ChU
PRINT *, CS, CRS, CNS, ChS
PRINT *, msRES, sRES, Pn
D debug stuff*/
OPEN(1,FILE="bdata_d.txt")
DO WHILE (.TRUE.)
READ (1,*, end=200) t(I), Fy(I), R(I), N(I), h(I), Pt(I)
WRITE(*,20) t(I), Fy(I), R(I), N(I), h(I), Pt(I), CNT, I
CNT = CNT + 1
I = I + 1
END DO
200 CONTINUE
CLOSE(1)
DO 540 iC = CL, CU, CS
DO 530 iCR = CRL, CRU, CRS
DO 520 iCN = CNL, CNU, CNS
DO 510 iCh = ChL, ChU, ChS
sRES = 0.0D0
DO 500 I = 1, CNT
Pn=iC*(t(I)**2)*(Fy(I)/1.d3)*(1-iCR*SQRT(R(I)/t(I)))*
& (1+iCN*SQRT(N(I)/t(I)))*(1-iCh*SQRT(h(I)/t(I)))
D print *, sRES, Pn, Pt(I)
sRES = sRES + ((Pn - Pt(I))**2)
500 CONTINUE
D print *, sRES
C Store the first one
IF(J.EQ.1) THEN
msRES = sRES
iCf = iC
iCRf = iCR
iCNf = iCN
iChf = iCh
J = 2
END IF
C Change msRES if the new one is smaller
IF(sRES.LT.msRES) THEN
D This is the block of interest, it seems
D Any of these PRINT or WRITE statements, when un-commented
D causes a change in the final co-efficient values
D print *
D write (*,3000) sRES, iC, iCR, iCN, iCh, J, ' 1st'
D write (*,3000) msRES, iCf, iCRf, iCNf, iChf, J, '
2nd'
msRES = sRES
iCf = iC
iCRf = iCR
iCNf = iCN
iChf = iCh
d write (*,3000) sRES, iC, iCR, iCN, iCh, J, ' 3rd'
D write (*,3000) msRES, iCf, iCRf, iCNf, iChf, J, '
4th'
3000 format (5(G10.4),I6, A)
END IF
c write (*,3000) sRES, iC, iCR, iCN, iCh, J, ' 5th'
c write (*,3000) msRES, iCf, iCRf, iCNf, iChf, J, '
6th'
510 CONTINUE
520 CONTINUE
530 CONTINUE
540 CONTINUE
C Output the final coefficients and the original data from
C "BDATA.TXT"
OPEN(2,FILE="bout.txt",STATUS='NEW', ERR=1000)
WRITE(2,2004)
WRITE(2,2005)
2004 FORMAT(3X,'t(I)',5X,'Fy(I)',6X,'R(I)',6X,'N(I)',5X,'h(I)',7X,
& 'Pt(I)',8X,'CNT',5X,'I',7X ,'Pn')
2005 FORMAT(91('-'))
C Calculate Pn
DO 600 I = 1, CNT
Pn =iCf*(t(I)**2)*(Fy(I)/1.d3)*(1-iCRf*SQRT(R(I)/t(I)))*
& (1+iCNf*SQRT(N(I)/t(I)))*(1-iChf*SQRT(h(I)/t(I)))
WRITE(2,50) t(I), Fy(I), R(I), N(I), h(I), Pt(I), CNT, I , Pn
D write (*,3000) msRES, iCf, iCRf, iCNf, iChf, J, ' pEnd'
600 CONTINUE
D write (*,3000) msRES, iCf, iCRf, iCNf, iChf, J, ' End'
WRITE(2,40)'iCf = ', iCf
WRITE(2,40)'iCRf = ',iCRf
WRITE(2,40)'iCNf = ',iCNf
WRITE(2,40)'iChf = ',iChf
WRITE(2,*)'iCf = ', iCf
WRITE(2,*)'iCRf = ',iCRf
WRITE(2,*)'iCNf = ',iCNf
WRITE(2,*)'iChf = ',iChf
CLOSE(2)
GOTO 1100
1000 PRINT*,"OUTPUT FILE EXISTS!"
1100 STOP
END
And the data file bdata_d.txt
0.791D0 335.58D0 3.367767857D0 25.D0 83.68246429D0 1.857D0
0.791D0 335.58D0 3.367767857D0 25.D0 83.68246429D0 2.1235D0
1.078D0 307.72D0 3.175D0 25.D0 83.494D0 4.036D0
1.078D0 307.72D0 3.175D0 25.D0 83.494D0 3.57D0
0.791D0 335.58D0 3.367767857D0 25.D0 66.19282925D0 2.11D0
0.791D0 335.58D0 3.367767857D0 25.D0 66.19282925D0 2.16D0
1.078D0 307.72D0 3.175D0 25.D0 90.006532D0 4.38D0
1.078D0 307.72D0 3.175D0 25.D0 90.006532D0 3.955D0
1.547D0 391.01D0 3.186024306D0 25.D0 127.6800228D0 7.315315D0
1.547D0 391.01D0 3.186024306D0 25.D0 127.6800228D0 7.09741D0
1.874D0 453.8D0 3.19484375D0 25.D0 153.4099736D0 5.74746D0
1.874D0 453.8D0 3.19484375D0 25.D0 153.4099736D0 6.463815D0
1.078D0 307.72D0 3.175D0 25.D0 90.006532D0 4.46D0
1.078D0 307.72D0 3.175D0 25.D0 90.006532D0 4.245D0
0.791D0 335.58D0 3.367767857D0 25.D0 66.19282925D0 2.204D0
Cheers,
Vic