| ! 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 |