! pr 15472
! sequential access files
!
!  this test verifies the most basic sequential unformatted I/O
!      write 3 records of various sizes
!      then read them back
!      and compare with what was written
!
       implicit none
       integer size
       parameter(size=100)
       logical debug 
       data debug /.FALSE./
! set debug to true for help in debugging failures.
       integer m(2)
       integer n
       real*4 r(size)
       integer i
       m(1) = Z'11111111'
       m(2) = Z'22222222'
       n    = Z'33333333'
       do i = 1,size
         r(i) = i
       end do
       write(9)m  ! an array of 2
       write(9)n  ! an integer
       write(9)r  ! an array of reals
! zero all the results so we can compare after they are read back
       do i = 1,size
          r(i) = 0
       end do
       m(1) = 0
       m(2) = 0
       n = 0

       rewind(9)
       read(9)m
       read(9)n
       read(9)r
!
! check results
       if (m(1).ne.Z'11111111') then
         if (debug) then
            print '(A,Z8)','m(1) incorrect.  m(1) = ',m(1)
         else
            call abort
         endif
       endif

       if (m(2).ne.Z'22222222') then
         if (debug) then
            print '(A,Z8)','m(2) incorrect.  m(2) = ',m(2)
         else
            call abort
         endif
       endif

       if (n.ne.Z'33333333') then
         if (debug) then
            print '(A,Z8)','n incorrect.  n = ',n
         else
            call abort
         endif
       endif

       do i = 1,size
          if (int(r(i)).ne.i) then
            if (debug) then
              print*,'element ',i,' was ',r(i),' should be ',i
            else
              call abort
            endif
          endif
       end do
! use hexdump to look at the file "fort.9"
       if (debug) then
         close(9)
       else
         close(9,status='DELETE')
       endif
       end
