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 より小さくなるまで実行を繰り返す。