https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111022
--- Comment #9 from Jerry DeLisle <jvdelisle at gcc dot gnu.org> ---
I am using this:
program teste0es0en0
integer,parameter::p1 = kind(1e0), p2 = kind(1d0), &
p3 = selected_real_kind(precision(1.0_p2)+1), &
hp = selected_real_kind(precision(1.0_p3)+1), &
p4 = merge(hp,p3,hp>0) ! in gfortran p4 /= p3, in ifort p4 == p3
character(*),parameter:: fmt(3) = "(A,1X,"//[" E","ES","EN"]//"0.0E0) "
integer ifmt
write(*,"(A,4(1X,I0))") 'real kinds',p1,p2,p3,p4
do ifmt = 1,3
write(*, fmt(ifmt)) 'With '//fmt(ifmt), 666.0_p1
write(*, fmt(ifmt)) 'With '//fmt(ifmt), 666.0_p2
write(*, fmt(ifmt)) 'With '//fmt(ifmt), 666.0_p3
if(p3/=p4) write(*, fmt(ifmt)) 'With '//fmt(ifmt), 666.0_p4
end do
end program teste0es0en0
And I get the following output with some test patching:
$ ./a.out
real kinds 4 8 10 16
With (A,1X, E0.0E0) 1.E+3
With (A,1X, E0.0E0) 1.E+3
With (A,1X, E0.0E0) 1.E+3
With (A,1X, E0.0E0) 1.E+3
With (A,1X,ES0.0E0) 7.E+2
With (A,1X,ES0.0E0) 7.E+2
With (A,1X,ES0.0E0) 7.E+2
With (A,1X,ES0.0E0) 7.E+2
With (A,1X,EN0.0E0) 666.
With (A,1X,EN0.0E0) 666.
With (A,1X,EN0.0E0) 666.
With (A,1X,EN0.0E0) 666.