https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102699
--- Comment #1 from kargl at gcc dot gnu.org ---
(In reply to xin liu from comment #0)
>
> is it a bug or is there something wrong with my understanding?
I think you may be tripped up by "12.3.3.4 Stream access" where
one finds
P. 213
While connected for formatted stream access, an external file has
the following properties.
* Some file storage units of the file can contain record markers;
this imposes a record structure on the file in addition to its
stream structure. There might or might not be a record marker
at the end of the file. If there is no record marker at the end
of the file, the final record is incomplete.
Followed by "12.3.4.2 Advancing and nonadvancing input/output"
P. 214
An advancing input/output statement always positions a record
file after the last record read or written, unless there is an
error condition.
If I trim your program to
program streamio
implicit none
open(10, file="123.txt", access="stream")
write(10) '098765'
write(10) '239345'
write(10) '123789'
write(10) '789509'
write(10) '543210'
close(10)
end
the resulting filesize for 123.txt is 30 bytes. If, instead, I use
program streamio
implicit none
open(10, file="123.txt", form="formatted", access="stream")
write(10, "(A6)") '098765'
write(10, "(A6)") '239345'
write(10, "(A6)") '123789'
write(10, "(A6)") '789509'
write(10, "(A6)") '543210'
close(10)
end
the resulting filesize for 123.txt is 35 bytes. So, record markers
are written into the file. You can probably verify this by using
INQUIRE and POS= after the READs in your original code to see if
the file is positioned at the start of a record.