summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gfortran.dg/unf_io_convert_1.f90
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/gfortran.dg/unf_io_convert_1.f90')
-rw-r--r--gcc/testsuite/gfortran.dg/unf_io_convert_1.f9095
1 files changed, 95 insertions, 0 deletions
diff --git a/gcc/testsuite/gfortran.dg/unf_io_convert_1.f90 b/gcc/testsuite/gfortran.dg/unf_io_convert_1.f90
new file mode 100644
index 000000000..317656997
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/unf_io_convert_1.f90
@@ -0,0 +1,95 @@
+! { dg-do run }
+! { dg-options "-pedantic" }
+! 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 r(size)
+ integer i
+ character(4) str
+
+ m(1) = Z'11223344' ! { dg-warning "BOZ literal at .1. outside a DATA statement" }
+ m(2) = Z'55667788' ! { dg-warning "BOZ literal at .1. outside a DATA statement" }
+ n = Z'77AABBCC' ! { dg-warning "BOZ literal at .1. outside a DATA statement" }
+ 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
+ end if
+ ! use hexdump to look at the file "fort.9"
+ if (debug) then
+ close(9)
+ else
+ close(9,status='DELETE')
+ endif
+end program main