view gcc/testsuite/gfortran.dg/backspace_9.f @ 118:fd00160c1b76

ifdef TARGET_64BIT
author mir3636
date Tue, 27 Feb 2018 15:01:35 +0900
parents 04ced10e8804
children 84e7813d76e9
line wrap: on
line source

! { dg-do run }
! { dg-options "-std=legacy" }
!
! 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