Fortran 2003 bietet zusätzlich zum altbekannten datensatzbasierten I/O nun auch Dateieingabe und -ausgabe in Form von Streams, wie das z.B. in der Programmiersprache C seit jeher üblich ist.
Streams ermöglichen das Lesen und Schreiben von Binärdateien, ohne sich mit den auf Datensätzen aufbauenden Strukturen der konventionellen Fortran-I/O herumschlagen zu müssen.
Bei der Ein-/Ausgabe mit Streams wird die Datei als kontinuierliche Byte-Sequenz betrachtet.
Stream-I/O ist logischerweise nicht für interne Dateien gedacht.
program bsp
implicit none
real :: a = 55.678
real :: b
character( len = 3 ) :: str
open( 50, file = "test", access = "STREAM", status = "REPLACE")
write( 50 ) "Hallo Welt"
write( 50 ) "Hello World"
! Ausgabe in Datei: siehe Bild 1
write( 50, pos = 100 ) "Greetings"
! Ausgabe in Datei: siehe Bild 2
write( 50, pos = 60 ) a
! Ausgabe in Datei: siehe Bild 3
read( 50, pos = 60 ) b
write( *, * ) b
! Ausgabe:
! 55.678
read( 50, pos = 8 ) str
write( *, * ) str
! Ausgabe:
! elt
close( 50 )
end program bsp
Da es sich um eine unformatierte Ein-/Ausgabe handelt, darf natürlich kein Formatspezifizierer bei den read- und write-Anweisungen angegeben werden, auch kein *. Mittels pos-Spezifizierer kann an eine bestimmte Position in der Datei gesprungen werden.