Is this a regression for access="stream",form="unformatted"?

Jerry DeLisle jvdelisle@verizon.net
Mon Nov 5 23:43:00 GMT 2007


Dominique Dhumieres wrote:
> The following code:
> 
> ! { dg-do run }
> ! PR25828 Stream IO test 7, Array writes and reads.
> ! Contributed by Jerry DeLisle <jvdelisle@verizon.net>.
> program streamtest
>   implicit none
>   character(1)   :: lf = char(10)
>   character(1)   :: tchar
>   integer        :: i,j,k
>   real(kind=4), dimension(100,100) :: anarray
>   open(10, file="teststream", access="stream", form="unformatted")
>   anarray = 3.14159
>   write(10) anarray
>   write(10, pos=1) ! This is a way to position an unformatted file
>   anarray = 0.0
>   read(10) anarray
>   anarray = abs(anarray - 3.14159)
>   if (any(anarray.gt.0.00001)) call abort()
>   close(10,status="delete")
> end program streamtest
> 
> used to pass. At revision 129901, it now fails with:
> 
> At line 15 of file streamtest_7.f90 (unit = 10, file = 'teststream')
> Fortran runtime error: End of file
> 
> Note that gfortran.dg/streamio_7.f90 passes and differs only by:
> 
>   write(10) anarray
>   anarray = 0.0
>   read(10, pos=1) anarray
> 
> Is "write(10, pos=1)" really a way to position an unformatted file?

Yes

> And if yes, why is it now failing?

Because I eliminated the flush on unformatted STREAM I/O to speed things up. 
So, yes this is a regression.  I will revert until I have tome to think it through.
> 
> TIA
> 
> Dominique
> 



More information about the Fortran mailing list