1! This file is all about BACKSPACE
2! { dg-do run { target fd_truncate } }
3
4      integer i, n, nr
5      real x(10), y(10)
6
7! PR libfortran/20068
8      open (20, status='scratch')
9      write (20,*) 1
10      write (20,*) 2
11      write (20,*) 3
12      rewind (20)
13      read (20,*) i
14      if (i .ne. 1) call abort
15      write (*,*) ' '
16      backspace (20)
17      read (20,*) i
18      if (i .ne. 1) call abort
19      close (20)
20
21! PR libfortran/20125
22      open (20, status='scratch')
23      write (20,*) 7
24      backspace (20)
25      read (20,*) i
26      if (i .ne. 7) call abort
27      close (20)
28
29      open (20, status='scratch', form='unformatted')
30      write (20) 8
31      backspace (20)
32      read (20) i
33      if (i .ne. 8) call abort
34      close (20)
35
36! PR libfortran/20471
37      do n = 1, 10
38        x(n) = sqrt(real(n))
39      end do
40      open (3, form='unformatted', status='scratch')
41      write (3) (x(n),n=1,10)
42      backspace (3)
43      rewind (3)
44      read (3) (y(n),n=1,10)
45
46      do n = 1, 10
47        if (abs(x(n)-y(n)) > 0.00001) call abort
48      end do
49      close (3)
50
51! PR libfortran/20156
52      open (3, form='unformatted', status='scratch')
53      do i = 1, 5
54        x(1) = i
55        write (3) n, (x(n),n=1,10)
56      end do
57      nr = 0
58      rewind (3)
59  20  continue
60      read (3,end=30,err=90) n, (x(n),n=1,10)
61      nr = nr + 1
62      goto 20
63  30  continue
64      if (nr .ne. 5) call abort
65
66      do i = 1, nr+1
67        backspace (3)
68      end do
69
70      do i = 1, nr
71        read(3,end=70,err=90) n, (x(n),n=1,10)
72        if (abs(x(1) - i) .gt. 0.001) call abort
73      end do
74      close (3)
75      stop
76
77  70  continue
78      call abort
79  90  continue
80      call abort
81
82      end
83