[Bug fortran/78351] comma not terminating READ of formatted input field - ok in 4.1.7, not 4.4.7- maybe related to 25419?

jvdelisle at charter dot net gcc-bugzilla@gcc.gnu.org
Mon Nov 14 22:24:00 GMT 2016


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78351

--- Comment #4 from jvdelisle at charter dot net ---
On 11/14/2016 11:09 AM, kargl at gcc dot gnu.org wrote:
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78351
>
> kargl at gcc dot gnu.org changed:
>
>            What    |Removed                     |Added
> ----------------------------------------------------------------------------
>                  CC|                            |kargl at gcc dot gnu.org
>
> --- Comment #3 from kargl at gcc dot gnu.org ---
> (In reply to Dr. Kevin B. Beard from comment #0)
>> Created attachment 40038 [details]
>> Simple example - comma no longer  a format field delimiter - gfortran 4.1.2
>> ok, 4.4.7- fails
>>
>> Here @ NASA we often have strings to read of the form:
>>
>> #,#,#,#,.....
>>
>> and on many platforms, gfortran 4.1.2 and (most?) earlier, Intel Fortran
>> 16.0.3, g77-3.4.6 and most other FORTRANs, it would treat the "," as a field
>> delimiter during a formatted READ - for example (x1.f):
>>
>>       character*80 s
>>       s= '1,2,3,,,,'
>>       READ(s,'(2i10)') i,j
>>       write(6,'(2i10)') i,j
>>       end
>>
>> would print "       1         2".
>>
>> However, 4.4.7 ("gfortran -o x1 x1.f") now (11/2016) fails with
>>
>> "Fortran runtime error: Bad value during integer read".
>>
>> I believe it worked with 4.4.7 back in 9/2016 on ScientificLinux-6.4 fine,
>> but there have been security patches done since then.  It also fails on
>> 4.8.5 and 5.3.0 under Red Hat Enterprise Linux Server release 5.11  It would
>> be very nice to be able to restore the old behavior.
>>
>> This may be related to bug#25519.
>
> gfortran's behavior conforms to the standard while your code
> does not conform.  Perhaps, gfortran should accept a comma as
> a field delimiter under -std=legacy, but preference should
> be to fixing the wrong code.
>
>   10.7.2.2 Integer editing
>
>   The Iw and Iw.m edit descriptors indicate that the field to be
>   edited occupies w positions, except when w is zero.  When w is
>   zero, the processor selects the field width.  On input, w shall
>   not be zero.  The specified input/output list item shall be of
>   type integer. ...
>
>   On input, m has no effect.
>
>   In the input field for the I edit descriptor, the character string
>   shall be a signed-digit-string (R409), except for the interpretation
>   of blanks.
>
>   R409 signed-digit-string  is [ sign ] digit-string
>   R410 digit-string
>   R411 sign                 is digit [ digit ] ...
>
>                             is +
>                             or ­
>
>
> Perhaps, you want list-directed formatting
>
>   10.10 List-directed formatting
>
>   10.10.1 General
>
>   List-directed input/output allows data editing according to the type
>   of the list item instead of by a format specification.  It also allows
>   data to be free-field, that is, separated by commas (or semicolons) or
>   blanks.
>

Thank you for that clarification. That makes it not a regression really, just
an 
enhancement.

Jerry


More information about the Gcc-bugs mailing list