Mit type fasst du Daten zu einem eigenen Typ zusammen, zum Beispiel einen Punkt aus x und y. Auf Felder greifst du mit % zu. Dateien öffnest du mit open(unit=10, file="daten.txt"), liest oder schreibst mit read(10,*) bzw. write(10,*) und schließt mit close(10).
Mit iostat= fängst du Fehler ab, etwa beim Dateiende. Dynamische Arrays legst du mit allocatable an und reservierst sie mit allocate(a(n)).
program dateien
implicit none
type :: punkt
real :: x, y
end type punkt
type(punkt) :: p
real, allocatable :: werte(:)
integer :: n, i, io
p%x = 3.0
p%y = 4.0
print *, "Abstand:", sqrt(p%x**2 + p%y**2)
n = 5
allocate(werte(n))
werte = [(real(i)**2, i = 1, n)]
open(unit=10, file="quadrate.txt", status="replace", iostat=io)
if (io == 0) then
write(10,*) werte
close(10)
end if
deallocate(werte)
end program dateienMerke
typedefiniert eigene Typen, Zugriff mit%open,read,write,closefür Dateienallocatableundallocatefür dynamische Arrays
Aufgabe
Schreibe die Quadratzahlen von 1 bis 10 in eine Datei und lies sie wieder ein.