program pipe real(kind=8) :: a, b logical, parameter :: verbose = .FALSE. do while (.True.) read *, a, b if ((a <= 0.d0) .and. (b <= 0.d0)) exit if (verbose) write (0, *) '[pipe]', a, b, a**b print *, a**b end do end program pipe