72 lines
1.9 KiB
Fortran
72 lines
1.9 KiB
Fortran
! { dg-do run }
|
|
! PR43265 Followup patch for miscellaneous EOF conditions.
|
|
! Eaxamples from Tobius Burnus
|
|
use iso_fortran_env
|
|
character(len=2) :: str, str2(2)
|
|
integer :: a, b, c, ios
|
|
str = ''
|
|
str2 = ''
|
|
|
|
open(99,file='test.dat',access='stream',form='unformatted', status='replace')
|
|
write(99) ' '
|
|
close(99)
|
|
|
|
open(99,file='test.dat')
|
|
read(99, '(T7,i2)') i
|
|
close(99, status="delete")
|
|
if (i /= 0) call abort
|
|
|
|
read(str(1:0), '(T7,i1)') i
|
|
if (i /= 0) call abort
|
|
|
|
read(str,'(i2,/,i2)',end=111) a, b
|
|
call abort !stop 'ERROR: Expected EOF error (1)'
|
|
111 continue
|
|
|
|
read(str2,'(i2,/,i2)',end=112) a, b
|
|
|
|
read(str2,'(i2,/,i2,/,i2)',end=113) a, b, c
|
|
call abort !stop 'ERROR: Expected EOF error (2)'
|
|
|
|
112 call abort !stop 'ERROR: Unexpected EOF (3)'
|
|
|
|
113 continue
|
|
read(str,'(i2,/,i2)',end=121,pad='no') a, b
|
|
call abort !stop 'ERROR: Expected EOF error (1)'
|
|
121 continue
|
|
|
|
read(str2(:),'(i2,/,i2)', end=122, pad='no') a, b
|
|
goto 125
|
|
122 call abort !stop 'ERROR: Expected no EOF error (2)'
|
|
125 continue
|
|
|
|
read(str2(:),'(i2,/,i2,/,i2)',end=123,pad='no') a, b, c
|
|
call abort !stop 'ERROR: Expected EOF error (3)'
|
|
123 continue
|
|
|
|
read(str(2:1),'(i2,/,i2)',end=131, pad='no') a, b
|
|
call abort !stop 'ERROR: Expected EOF error (1)'
|
|
131 continue
|
|
|
|
read(str2(:)(2:1),'(i2,/,i2)',end=132, pad='no') a, b
|
|
call abort !stop 'ERROR: Expected EOF error (2)'
|
|
132 continue
|
|
|
|
read(str2(:)(2:1),'(i2,/,i2,/,i2)',end=133,pad='no') a, b, c
|
|
call abort !stop 'ERROR: Expected EOF error (3)'
|
|
133 continue
|
|
|
|
read(str(2:1),'(i2,/,i2)',iostat=ios, pad='no') a, b
|
|
if (ios /= IOSTAT_END) call abort !stop 'ERROR: expected iostat /= 0 (1)'
|
|
|
|
read(str2(:)(2:1),'(i2,/,i2)',iostat=ios, pad='no') a, b
|
|
if (ios /= IOSTAT_END) call abort !stop 'ERROR: expected iostat /= 0 (2)'
|
|
|
|
read(str2(:)(2:1),'(i2,/,i2,/,i2)',iostat=ios,pad='no') a, b, c
|
|
if (ios /= IOSTAT_END) call abort !stop 'ERROR: expected iostat /= 0 (2)'
|
|
|
|
! print *, "success"
|
|
end
|
|
|
|
|