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.