| ! This file is all about BACKSPACE |
| ! { dg-do run { target fd_truncate } } |
| |
| integer i, n, nr |
| real x(10), y(10) |
| |
| ! PR libfortran/20068 |
| open (20, status='scratch') |
| write (20,*) 1 |
| write (20,*) 2 |
| write (20,*) 3 |
| rewind (20) |
| read (20,*) i |
| if (i .ne. 1) STOP 1 |
| write (*,*) ' ' |
| backspace (20) |
| read (20,*) i |
| if (i .ne. 1) STOP 2 |
| close (20) |
| |
| ! PR libfortran/20125 |
| open (20, status='scratch') |
| write (20,*) 7 |
| backspace (20) |
| read (20,*) i |
| if (i .ne. 7) STOP 3 |
| close (20) |
| |
| open (20, status='scratch', form='unformatted') |
| write (20) 8 |
| backspace (20) |
| read (20) i |
| if (i .ne. 8) STOP 4 |
| close (20) |
| |
| ! PR libfortran/20471 |
| do n = 1, 10 |
| x(n) = sqrt(real(n)) |
| end do |
| open (3, form='unformatted', status='scratch') |
| write (3) (x(n),n=1,10) |
| backspace (3) |
| rewind (3) |
| read (3) (y(n),n=1,10) |
| |
| do n = 1, 10 |
| if (abs(x(n)-y(n)) > 0.00001) STOP 5 |
| end do |
| close (3) |
| |
| ! PR libfortran/20156 |
| open (3, form='unformatted', status='scratch') |
| do i = 1, 5 |
| x(1) = i |
| write (3) n, (x(n),n=1,10) |
| end do |
| nr = 0 |
| rewind (3) |
| 20 continue |
| read (3,end=30,err=90) n, (x(n),n=1,10) |
| nr = nr + 1 |
| goto 20 |
| 30 continue |
| if (nr .ne. 5) STOP 6 |
| |
| do i = 1, nr+1 |
| backspace (3) |
| end do |
| |
| do i = 1, nr |
| read(3,end=70,err=90) n, (x(n),n=1,10) |
| if (abs(x(1) - i) .gt. 0.001) STOP 7 |
| end do |
| close (3) |
| stop |
| |
| 70 continue |
| STOP 8 |
| 90 continue |
| STOP 9 |
| |
| end |