This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug fortran/38439] New: I/O PD edit descriptor inconsistency
- From: "burnus at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 7 Dec 2008 21:34:26 -0000
- Subject: [Bug fortran/38439] New: I/O PD edit descriptor inconsistency
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
Found at
http://groups.google.com/group/comp.lang.fortran/browse_thread/thread/2fc107eda65d9065
The following code
WRITE (*,'(1PD24.15E4)') 1.0d0
end
is rejected in gfortran 4.2 to 4.4 with:
Error: Period required in format specifier at (1)
(and ifort, NAG f95 and g95 also reject it).
It is accepted with openf95, sunf95 and gfortran 4.1 [the latter with a warning
matching the error message above], and it is said to be accepted with g77.
The compiled programs then prints:
1.000000000000000D+0000 (note the "D")
Using the run-time version of the format string, i.e.
character(len=25) :: str
str = '(1PD24.15E4)'
WRITE (*,str) 1.0d0
end
it works with gfortran (4.1 to 4.4) and with g95.
The PD edit descriptor was always invalid according to the Fortran standard,
using '(1PE24.15E4)' works with all compilers and is valid (but it prints
"...E+0000" not "D").
The question is now whether
a) One accepts it with, e.g., -std=legacy. (The error message should then point
to the -std=legacy option)
-- or --
b) One checks whether on can get rid of the "D" support in libgfortran to save
some microseconds; libgfortran should then also print a run-time error message.
--
Summary: I/O PD edit descriptor inconsistency
Product: gcc
Version: 4.4.0
Status: UNCONFIRMED
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=38439