do ...end do 構文で、ある一定回数繰り返すのではなく、ある条件が満たされ る時のみ、繰り返したい時がある。そういう場合に便利なのが do while 文であ る。
do while (論理式) 実行文 end do論理式が真であるあいだ、do block を繰り返す。 (注:これは、Fortran 90 の文法である。F77 では標準ではない)
例: newton.f を次のようにする。
c Newton-Raphson method
implicit real*8 (a-h,o-z)
c
epsilon = 1.0 e-10
read(*,*) xnew
xold = xnew + 0.1
do while (abs(xnew-xold) > epsilon)
xold=xnew
xnew=xold-f(xold)/df(xold)
write(*,1000) "result=",xnew
end do
write(*,1000) "result=",xnew
1000 format(a,f20.16)
end
これはニュートン法のメインルーチンであり、xnew と xold の差の絶対値が、 epsilon より小さくなるまで実行を繰り返す。