------- Comment #3 from jvdelisle at gcc dot gnu dot org 2009-03-09 03:35 ------- With the following example:
REAL :: x CHARACTER(80) :: str x = 0.0 write (6,'(f0.0)') x write (6,'(f0.1)') x write (6,'(f0.2)') x write (6,'(f0.3)') x write (6,'(f0.4)') x END gfortran gives: $ gfc pr39409.f90 $ ./a.out 0. .0 ** ** ** With this patch: Index: write_float.def =================================================================== --- write_float.def (revision 144717) +++ write_float.def (working copy) @@ -122,7 +122,7 @@ output_float (st_parameter_dt *dtp, cons /* Handle special cases. */ if (w == 0) - w = 2; + w = d + 2; /* For this one we choose to not output a decimal point. F95 10.5.1.2.1 */ The special case for pr37834 is generalized, giving the following result which matches ifort, sunf95, and Open64 f95. $ ./a.out 0. 0.0 0.00 0.000 0.0000 I plan to commit this patch to trunk under simple and obvious rule if it passes regression testing. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39402