summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gfortran.dg/backspace_9.f
blob: 851f518a2a94dc5da9362bd02c6c56ae332fa8a1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
! { 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