http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51407

             Bug #: 51407
           Summary: Use of BOZ edit descriptors to edit real and complex
                    data and F2008
    Classification: Unclassified
           Product: gcc
           Version: 4.7.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: libfortran
        AssignedTo: unassig...@gcc.gnu.org
        ReportedBy: domi...@lps.ens.fr
                CC: bur...@net-b.de, jvdeli...@gcc.gnu.org,
                    thenl...@users.sourceforge.net


Consider the following code (borrowed from Iain Sandoe):

       real(kind=16) :: x
       character(len=32) :: str1
       x = 1.0_16 + 2.0_16**(-105)
       write (str1,'(z32)') x
       print *, str1
end

Without any -std=xx the executable outputs (on x86_64-apple-darwin10):

 3FFF0000000000000000000000000080

With -std=xx, xx in f95, f2003, and f2008, it ouputs

At line 4 of file boz_real.f90
Fortran runtime error: Expected INTEGER for item 1 in formatted transfer, got
REAL
(z32)
 ^
Altough the standards state

10.5.1 Numeric editing
The I, B, O, Z, F, E, EN, ES, D, and G edit descriptors may be used to specify
the input/output of integer, real, and complex data. The following general
rules apply:

I think the use of BOZ edit descriptors to edit real and complex data is
implicitly forbidden in f95 and f2003 by (f95)

10.5.1.2 Real and complex editing
The F, E, EN, ES, and D edit descriptors specify the editing of real and
complex data. An input/output list item corresponding to an F, E, EN, ES, or D
edit descriptor shall be real or complex. The G edit descriptor also may be
used to edit real and complex data (10.5.4.1.2).

or (f2003)

10.6.1.2 Real and complex editing
The F, E, EN, ES, and D edit descriptors specify the editing of real and
complex data. An input/output list item corresponding to an F, E, EN, ES, or D
edit descriptor shall be real or complex. The G edit descriptor also may be
used to edit real and complex data (10.6.4.1.2).

but explicitly allowed in f2008 by

10.7.2.3.1 General
The F, E, EN, ES, and D edit descriptors specify the editing of real and
complex data. An input/output list item corresponding to an F, E, EN, ES, or D
edit descriptor shall be real or complex. The G, B, O, and Z edit descriptors
also may be used to edit real and complex data (10.7.5.2.2, 10.7.2.4).

Is this reading of the standards correct?

Reply via email to