1! { dg-do run }
2! PR43265 Followup patch for miscellaneous EOF conditions.
3! Eaxamples from Tobius Burnus
4  use iso_fortran_env
5  character(len=2) :: str, str2(2)
6  integer :: a, b, c, ios
7  str = ''
8  str2 = ''
9
10  open(99,file='test.dat',access='stream',form='unformatted', status='replace')
11  write(99) ' '
12  close(99)
13
14  open(99,file='test.dat')
15  read(99, '(T7,i2)') i
16  close(99, status="delete")
17  if (i /= 0) call abort
18
19  read(str(1:0), '(T7,i1)') i
20  if (i /= 0) call abort
21
22  read(str,'(i2,/,i2)',end=111) a, b
23  call abort !stop 'ERROR: Expected EOF error (1)'
24  111 continue
25
26  read(str2,'(i2,/,i2)',end=112) a, b
27
28  read(str2,'(i2,/,i2,/,i2)',end=113) a, b, c
29  call abort !stop 'ERROR: Expected EOF error (2)'
30
31  112 call abort !stop 'ERROR: Unexpected EOF (3)'
32
33  113 continue
34  read(str,'(i2,/,i2)',end=121,pad='no') a, b
35  call abort !stop 'ERROR: Expected EOF error (1)'
36  121 continue
37
38  read(str2(:),'(i2,/,i2)', end=122, pad='no') a, b
39  goto 125
40  122 call abort !stop 'ERROR: Expected no EOF error (2)'
41  125 continue
42
43  read(str2(:),'(i2,/,i2,/,i2)',end=123,pad='no') a, b, c
44  call abort !stop 'ERROR: Expected EOF error (3)'
45  123 continue
46
47  read(str(2:1),'(i2,/,i2)',end=131, pad='no') a, b
48  call abort !stop 'ERROR: Expected EOF error (1)'
49  131 continue
50
51  read(str2(:)(2:1),'(i2,/,i2)',end=132, pad='no') a, b
52  call abort !stop 'ERROR: Expected EOF error (2)'
53  132 continue
54
55  read(str2(:)(2:1),'(i2,/,i2,/,i2)',end=133,pad='no') a, b, c
56  call abort !stop 'ERROR: Expected EOF error (3)'
57  133 continue
58
59  read(str(2:1),'(i2,/,i2)',iostat=ios, pad='no') a, b
60  if (ios /= IOSTAT_END) call abort !stop 'ERROR: expected iostat /= 0  (1)'
61
62  read(str2(:)(2:1),'(i2,/,i2)',iostat=ios, pad='no') a, b
63  if (ios /= IOSTAT_END) call  abort !stop 'ERROR: expected iostat /= 0  (2)'
64
65  read(str2(:)(2:1),'(i2,/,i2,/,i2)',iostat=ios,pad='no') a, b, c
66  if (ios /= IOSTAT_END) call abort !stop 'ERROR: expected iostat /= 0  (2)'
67
68  ! print *, "success"
69  end
70
71
72