summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gfortran.dg/pr16597.f90
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/gfortran.dg/pr16597.f90')
-rw-r--r--gcc/testsuite/gfortran.dg/pr16597.f9030
1 files changed, 30 insertions, 0 deletions
diff --git a/gcc/testsuite/gfortran.dg/pr16597.f90 b/gcc/testsuite/gfortran.dg/pr16597.f90
new file mode 100644
index 000000000..c29147411
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/pr16597.f90
@@ -0,0 +1,30 @@
+! { dg-do run }
+! { dg-options "-std=legacy" }
+!
+! pr 16597
+! libgfortran
+! reading a direct access record after it was written did
+! not always return the correct data.
+
+ program gfbug4
+ implicit none
+
+ integer strlen
+ parameter (strlen = 4)
+
+ integer iunit
+ character string *4
+
+ iunit = 99
+ open (UNIT=iunit,FORM='unformatted',ACCESS='direct',RECL=strlen)
+ write (iunit, rec=1) 'ABCD'
+ read (iunit, rec=1) string
+ close (iunit)
+ if (string.ne.'ABCD') call abort
+
+ open (UNIT=iunit,FORM='unformatted',ACCESS='direct',STATUS='scratch',RECL=strlen)
+ write (iunit, rec=1) 'ABCD'
+ read (iunit, rec=1) string
+ close (iunit)
+ if (string.ne.'ABCD') call abort
+ end