| ! { 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") STOP 1 |
| 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")) STOP 2 |
| if ((kard .eq. 2) .and. (DATA(1) .ne. "Two")) STOP 3 |
| if ((kard .eq. 3) .and. (DATA(1) .ne. "Thre")) STOP 4 |
| |
| 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 |