https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90374
--- Comment #35 from Thomas Henlich <thenlich at gcc dot gnu.org> --- I tried to investigate the next issue: write (aresult,fmt="(G0.10e0)") rn if (aresult /= "0.3139999928E-2") stop 52 triggers "E specifier not allowed with g0 descriptor in format string" during compilation. But it is allowed, according to F2018. The following works as it should: afmt = "(G0.10e0)" write (aresult,fmt=afmt) rn if (aresult /= "0.3139999928E-2") stop 33 That is how far I got. Probably some changes are required in io.c (check_format)