aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/gcc/testsuite/gfortran.dg/direct_io_11.f90
diff options
context:
space:
mode:
authorBen Cheng <bccheng@google.com>2014-03-25 22:37:19 -0700
committerBen Cheng <bccheng@google.com>2014-03-25 22:37:19 -0700
commit1bc5aee63eb72b341f506ad058502cd0361f0d10 (patch)
treec607e8252f3405424ff15bc2d00aa38dadbb2518 /gcc-4.9/gcc/testsuite/gfortran.dg/direct_io_11.f90
parent283a0bf58fcf333c58a2a92c3ebbc41fb9eb1fdb (diff)
downloadtoolchain_gcc-1bc5aee63eb72b341f506ad058502cd0361f0d10.tar.gz
toolchain_gcc-1bc5aee63eb72b341f506ad058502cd0361f0d10.tar.bz2
toolchain_gcc-1bc5aee63eb72b341f506ad058502cd0361f0d10.zip
Initial checkin of GCC 4.9.0 from trunk (r208799).
Change-Id: I48a3c08bb98542aa215912a75f03c0890e497dba
Diffstat (limited to 'gcc-4.9/gcc/testsuite/gfortran.dg/direct_io_11.f90')
-rw-r--r--gcc-4.9/gcc/testsuite/gfortran.dg/direct_io_11.f9055
1 files changed, 55 insertions, 0 deletions
diff --git a/gcc-4.9/gcc/testsuite/gfortran.dg/direct_io_11.f90 b/gcc-4.9/gcc/testsuite/gfortran.dg/direct_io_11.f90
new file mode 100644
index 000000000..a2b8afc35
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gfortran.dg/direct_io_11.f90
@@ -0,0 +1,55 @@
+! { dg-do run }
+! PR42090 Problems reading partial records in formatted direct access files
+! Test case from PR, prepared by Jerry DeLisle <jvdelisle@gcc.gnu.org>
+program da_good_now
+ implicit none
+ real :: a, b
+
+ a = 1.111111111
+ b = 2.222222222
+
+ open( 10, file = 't.dat', form = 'formatted', access = 'direct', recl = 12 )
+ write( 10, rec = 1, fmt = '( f6.4, /, f6.4 )' ) a, b
+ close( 10 )
+
+ a = -1.0
+ b = -1.0
+
+ open( 10, file = 't.dat', form = 'formatted', access = 'direct', recl = 12 )
+
+ read( 10, rec = 1, fmt = '( f6.4, /, f6.4 )' ) a, b
+ !write( *, '( "partial record 1", t25, 2( f6.4, 1x ) )' ) a, b
+ a = -1.0
+ b = -1.0
+
+ read( 10, rec = 1, fmt = '( f6.4 )' ) a, b
+ !write( *, '( "partial record 2", t25, 2( f6.4, 1x ) )' ) a, b
+ if (a /= 1.1111 .and. b /= 2.2222) call abort()
+ a = -1.0
+ b = -1.0
+
+ read( 10, rec = 1, fmt = '( f12.4, /, f12.4 )' ) a, b
+ !write( *, '( "full record 1", t25, 2( f6.4, 1x ) )' ) a, b
+ if (a /= 1.1111 .and. b /= 2.2222) call abort()
+ a = -1.0
+ b = -1.0
+
+ read( 10, rec = 1, fmt = '( f12.4 )' ) a, b
+ !write( *, '( "full record 2", t25, 2( f6.4, 1x ) )' ) a, b
+ if (a /= 1.1111 .and. b /= 2.2222) call abort()
+ a = -1.0
+ b = -1.0
+
+ read( 10, rec = 1, fmt = '( f6.4, 6x, /, f6.4, 6x )' ) a, b
+ !write( *, '( "full record with 6x", t25, 2( f6.4, 1x ) )' ) a, b
+ if (a /= 1.1111 .and. b /= 2.2222) call abort()
+ a = -1.0
+ b = -1.0
+
+ read( 10, rec = 1, fmt = '( f6.4 )' ) a
+ read( 10, rec = 2, fmt = '( f6.4 )' ) b
+ !write( *, '( "record at a time", t25, 2( f6.4, 1x ) )' ) a, b
+ if (a /= 1.1111 .and. b /= 2.2222) call abort()
+
+ close( 10, status="delete")
+end program da_good_now