re PR fortran/32235 (incorrectly position text file after backspace)
authorJerry DeLisle <jvdelisle@gcc.gnu.org>
Mon, 11 Jun 2007 03:06:01 +0000 (03:06 +0000)
committerJerry DeLisle <jvdelisle@gcc.gnu.org>
Mon, 11 Jun 2007 03:06:01 +0000 (03:06 +0000)
2007-06-10  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

PR libgfortran/32235
* gfortran.dg/backspace_9.f: New test.

From-SVN: r125611

gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/backspace_9.f [new file with mode: 0644]

index c9bdc4a..32d88ad 100644 (file)
@@ -1,3 +1,8 @@
+2007-06-10  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+       PR libgfortran/32235
+       * gfortran.dg/backspace_9.f: New test.
+
 2007-06-10  Zdenek Dvorak  <dvorakz@suse.cz>
 
        * gcc.dg/tree-ssa/prefetch-7.c: New test.
diff --git a/gcc/testsuite/gfortran.dg/backspace_9.f b/gcc/testsuite/gfortran.dg/backspace_9.f
new file mode 100644 (file)
index 0000000..fe62ea5
--- /dev/null
@@ -0,0 +1,55 @@
+! { dg-do run }
+! PR32235 incorrectly position text file after backspace
+! Test case from PR, prepared by Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+      program main
+      character*10 a
+      ncards=2
+      input=10
+      write(10,"(a)") "One"
+      write(10,"(a)") "Two"
+      write(10,"(a)") "Three"
+      rewind(10)
+      read(input,1000)a
+      read(input,1000)a
+
+      call inlist(ncards)
+
+      read(input,1000)a
+      if (a.ne."Three") call abort
+      close(10,status="delete")
+      stop
+ 1000 format(a10)
+ 2000 format('read =',a10)
+      end
+
+      subroutine inlist(ncards)
+      character*4 data(20)
+      input=10
+c
+      if (ncards.eq.0) go to 20
+      do 15 i=1,ncards
+      backspace input
+   15 continue
+c
+   20 continue
+      kard  = 0
+   30 read(input,1000,end=60)   data
+   40 kard=kard + 1
+   50 continue
+      if ((kard .eq. 1) .and. (DATA(1) .ne. "One")) call abort
+      if ((kard .eq. 2) .and. (DATA(1) .ne. "Two")) call abort
+      if ((kard .eq. 3) .and. (DATA(1) .ne. "Thre")) call abort
+
+      go to 30
+   60 continue
+      kard=kard - ncards + 1
+      do 70   i=1,kard
+      backspace input
+   70 continue
+c
+      return
+c
+ 1000 format (20a4)
+ 2020 format (8x,i15,8x,20a4)
+c
+      end