111
|
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
|