This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug fortran/38439] New: I/O PD edit descriptor inconsistency


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]