! { dg-do run } ! This test verifies the most basic sequential unformatted I/O ! with convert="swap". ! Adapted from seq_io.f. ! write 3 records of various sizes ! then read them back program main 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 character*4 str m(1) = Z'11223344' m(2) = Z'55667788' n = Z'77AABBCC' str = 'asdf' do i = 1,size r(i) = i end do open(9,form="unformatted",access="sequential",convert="swap") ! { dg-warning "Extension: CONVERT" } write(9) m ! an array of 2 write(9) n ! an integer write(9) r ! an array of reals write(9)str ! String ! 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 str = ' ' rewind(9) read(9) m read(9) n read(9) r read(9) str ! ! check results if (m(1).ne.Z'11223344') then if (debug) then print '(A,Z8)','m(1) incorrect. m(1) = ',m(1) else call abort endif endif if (m(2).ne.Z'55667788') then if (debug) then print '(A,Z8)','m(2) incorrect. m(2) = ',m(2) else call abort endif endif if (n.ne.Z'77AABBCC') 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 if (str .ne. 'asdf') then if (debug) then print *,'str incorrect, str = ', str else call abort endif ! use hexdump to look at the file "fort.9" if (debug) then close(9) else close(9,status='DELETE') endif end if end program main