====== Umgang mit Dateien ====== Der Umgang mit Dateien ist in vielen Programmen unerlässlich, sei es um Ausgabedaten festzuhalten oder Eingabedaten komfortabel einzulesen oder um Konfigurationdaten zu speichern. Dateien müssen in Fortran grundsätzlich zunächst geöffnet werden, dann kann je nachdem was beim Öffnen angegeben wurde, gelesen und / oder geschrieben werden, und wenn die Datei nicht mehr benötigt wird, sollte die Datei wieder geschlossen werden. Beim Öffnen wird eine Unit-Nr mit der Datei verknüpft. Dh. wir geben eine Zahl an, unter der wir auf die Datei zugreifen wollen. Units sind eine Art Identifikator für Dateien, bspw. hat ''stdout'' (die Standardausgabe) die Nummer 7. ====== Öffnen ====== Wir öffnen eine Datei mit der ''Open''-Anweisung: open ([UNIT=], ...) ''Open'' nimmt eine Vielzahl von Argumenten, hier seien nur einige aufgelistet: * **[UNIT=]x** - Angabe der Unitnummer (Ganzzahl), die mit der zu öffnenden Datei verknüpft werden soll * **file=x** - Angabe des Dateinamens * **iostat=x** - Die Variable x ist 0 falls Open fehlerfrei ausgeführt wurde, ansonsten eine andere Nummer * **status=x** - Angabe (als String), welchem Constraint die Datei unterliegen muss: * 'old' - Datei existiert bereits und wird nicht erzeugt * 'new' - Datei wird erzeugt * 'scratch' - es wird eine namenlose temporäre Datei erzeugt, die nach Schließen der Datei wieder gelöscht wird * 'unknown' - Das System bestimmt den Dateistatus selbst * 'replace' - Eine bereits vorhandene Datei wird ersetzt (damit beim Öffnen gelöscht) * **access=x** - Angabe der Zugriffsmethode: * 'sequentiail' - sequentieller Zugriff * 'direct' - direkter Zugriff * 'stream' - binärer Zugriff * **position=x** - Angabe, wo der Dateizeiger beim Öffnen der Datei stehen soll * 'asis' * 'rewind' - ans Anfang setzen * 'append' - ans Ende setzen * **action=x** - Angabe was mit der Datei geschehen soll, nur der Zugriff ist dann später auch erlaubt: * 'read' - nur Lesezugriff * 'write' - nur Schreibzugriff * 'readwrite' - Lesen und Schreiben * **err=x** - Angabe einer Sprungmarke x, an die gesprungen werden soll, wenn ein Fehler auftritt Im Standardfall sind folgende Vorgaben gemacht: * status = 'unknown' * position = 'asis' * access = 'sequential' * form = 'formatted' ====== Lesen und Schreiben ====== Der Lese- und Schreibzugriff auf Dateien erfolgt mittels der gewohnten ''write'' und ''read''-Befehle unter Angabe der Unit-Nummer, die beim ''open'' belegt wurde. Ist die Unitnummer, die angegeben wird, nicht belegt, erzeugt Fortran eine Datei nach dem Schema: .f. ====== Dateien schließen ====== Eine Datei kann mittels ''close'' geschlossen werden: close (...) Parameter: * **[unit=]x** - Unitnummer, die geschlossen werden soll * **iostat=x** - x ist nach der Rückkehr 0 falls fehlerfrei durchgelaufen, ansonsten eine andere Zahl * **err=x** - Angabe einer Marke, an die gesprungen wird, wenn ein Fehler auftritt * **status=x** * 'keep' - Datei soll erhalten bleiben (Standard) * 'delete' - Datei soll gelöscht werden