The following program works with NAG f95, g95, sunf95, ifort but fails with a Fortran runtime error: End of file in gfortran. I think the program is valid.
--------------------------------- implicit none character(len=5) :: str integer :: a str = '' a = 5 read(str,'(5x,i1)') a print *, a if(a /= 0) call abort() end --------------------------------- If one uses a logical value rather than an integer, ifort/openf95/sunf95 print .false. and g95/NAG f95/gfortran print an error. I think "" -> .false. is a vendor extension. If I read the standard correctly, this extension makes the compiler invalid (i.e. the compiler needs to diagnose this rather than doing something else); however, I might be wrong and this extension is acceptable. I asked at http://groups.google.com/group/comp.lang.fortran/browse_thread/thread/68cb46bf0e610043 * * * See "10.6.1 Numeric editing": "On Input [...] A field containing only blanks is considered to be zero." (Such a statement is missing from "10.6.2 Logical editing".) I did not quickly find the place which allows "" (rather than " ") to be 0 and not end-of-file. I also did not find the place which requires the end-of-file error rather allowing for .false. -- Summary: Reading integer from "" gives end-of-file instead of reading a 0 Product: gcc Version: 4.4.0 Status: UNCONFIRMED Keywords: wrong-code Severity: normal Priority: P3 Component: fortran AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: burnus at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39587