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

            Bug ID: 89782
           Summary: Can do an internal READ of a character array when it
                    is a parameter, but not a scalar character parameter
           Product: gcc
           Version: 7.3.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: fortran
          Assignee: unassigned at gcc dot gnu.org
          Reporter: urbanjost at comcast dot net
  Target Milestone: ---

Inconsistently, a scalar parameter CHARACTER variable fails with an internal
READ,
but a vector parameter CHARACTER variable works with an internal READ.
Not actually sure which one is wrong, but it is inconsistent. Could not find 
anything in the Fortran standard that definitively cleared it up, other than
saying that 

      ยท "A record of an internal file is a scalar character variable".

with emphasis on "variable"(?). It seems one of them should be wrong, though.

This fails:

   program nanio
   character(len=*),parameter :: VALUE='NaN'
      read(VALUE,*)float
      write(*,*)float
   end program nanio

 PRODUCES THIS ERROR...

    read(VALUE,*)float
        1
    Error: UNIT specification at (1) must be an INTEGER expression or a
CHARACTER variable

This works:

   program nanio
   character(len=*),parameter :: VALUES(*)=[character(len=10) ::
'NaN','NAN','nan','Inf','INF','inf','Infinity']
   do i=1,size(VALUES)
      read(VALUES(i),*)float
      write(*,*)float
   enddo
   end program nanio

Reply via email to