With compiler
4.3.0 20080109 (experimental) [trunk revision 131426] (GCC)

vector valued reads into an array don't appear to read in values.
The test program prints out
 kind of qda =            4
 vector valued read failed
           1 -100.000000      1.00000000
           2 -100.000000       2.0000000
           3 -100.000000       3.0000000
           4 -100.000000       4.0000000
           5 -100.000000       5.0000000
           6 -100.000000       6.0000000
           7 -100.000000       7.0000000
           8 -100.000000       8.0000000
           9 -100.000000       9.0000000
          10 -100.000000      10.0000000
 subscript range read succeeded

Dick Hendrickson

      Program QH0008

      REAL(4) QDA(10)
      REAL(4) QDA1(10)
      integer, dimension(10) ::  nfv1 = (/1,2,3,4,5,6,7,8,9,10/)

      qda1 = nfv1
      qda = -100

      print *, 'kind of qda = ', kind(qda)
      OPEN (UNIT=47,
     $      STATUS='SCRATCH',
     $      FORM='UNFORMATTED',
     $ ACTION='READWRITE')
      ISTAT = -314
      REWIND (47, IOSTAT = ISTAT)
      IF ( ISTAT .NE. 0) THEN
        stop ' FIRST REWIND FAILED '
      ENDIF

      ISTAT = -314
      WRITE (47,IOSTAT = ISTAT) QDA1
      IF ( ISTAT .NE. 0) THEN
        stop ' WRITE FAILED '
      ENDIF

      ISTAT = -314
      REWIND (47, IOSTAT = ISTAT)
      IF ( ISTAT .NE. 0) THEN
        stop ' SECOND REWIND FAILED '
      ENDIF
      READ (47,IOSTAT = ISTAT) QDA(NFV1)
      IF ( ISTAT .NE. 0) THEN
        stop ' READ FAILED '
      ENDIF

      IF ( ANY (QDA .ne. QDA1) ) then
         print *, 'vector valued read failed'
         DO I = 1,10
           print *, I, qda(i), qda1(i)
         enddo
      else
        print *, 'vector valued read succeeded'
      endif


      ISTAT = -314
      REWIND (47, IOSTAT = ISTAT)
      IF ( ISTAT .NE. 0) THEN
        stop ' THIRD REWIND FAILED '
      ENDIF
      qda = -200

      READ (47,IOSTAT = ISTAT) QDA(1:10)
      IF ( ISTAT .NE. 0) THEN
        stop ' READ FAILED '
      ENDIF

      IF ( ANY (QDA .ne. QDA1) ) then
         print *, 'vector valued read failed'
         DO I = 1,10
           print *, I, qda(i), qda1(i)
         enddo
      else
        print *, 'subscript range read succeeded'
      endif


      END


-- 
           Summary: read into vector-valued section doesn't transfer any
                    values
           Product: gcc
           Version: 4.3.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: fortran
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: dick dot hendrickson at gmail dot com


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

Reply via email to