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