Formatstrings dienen dazu die Ausgabe / Eingabe zu formatieren. So kann bspw. bei Eingaben angegeben werden, welche Datentypen erwartet werden, oder bei Ausgaben, welche Datentypen wie ausgegeben werden (bspw. hexadezimal, etc).
Formatstrings können bei WRITE/READ-Anweisungen folgendermaßen angegeben werden:
Eine Formatliste enthält durch Komma getrennte Formatelemente:
Ein Datenformatelement kann folgendermaßen angegeben werden:
nFw.d
Eine Gruppierung von Elementen ist möglich via Klammerung:
FORMAT(5(I2,':', F6.2))
Format | Bedeutung | Beispiel | Wert | Ausgabe |
---|---|---|---|---|
Iw[.m] | Ausgabe von Integerzahlen, rechtsbündig, mindestens m Ziffern | I5 | -23 | -23 |
Fw.d | Ausgabe von real mit Festkomma; d Kommastellen | F5.1 | 12.123 | 12.1 |
Ew.d[Ee] | Ausgabe von real mit Gleitkomma; d Matisseziffern, e Exponentenziffern | E9.2 | -1.0 | -00.10E+01 |
ENw.d[Ee] | siehe E; Angabe des Exponenten erfolgt in 3er-Schritten (einfache Umrechnung in metrische Einheiten möglich); passt die Zahl nicht in w Zeichen werden w Sterne ausgegeben. | EN9.2 | 23 | 23E+00 |
ESw.d[Ee] | siehe E; Ausgabe des Exponenten erfolgt in 1er Schritten, dabei steht vor dem Komma der Mantisse nie eine 0 | ES9.2 | 23 | 2.3E+01 |
Dw.d | siehe E | |||
Lw | Ausgabe von Logical-Werten, rechtsbündig | L3 | (2>1) | T |
A[w] | Ausgabe von Character mit w Zeichen, rechtsbündig | A3 | 'Texte' | 'Tex' |
Gw.d[Ee] | generisches Format, gibt die Werte angepasst an den Typ und Wert der Variablen aus | G9.2 | 0.002 | 0.20E-01 |
Zw[.m] | hexadezimal Ausgabe von integer, real, logical mit mindestens m Hexadezimalstellen | Z9.8 | 20 | 00000014 |
Ow[.m] | siehe Z; Ausgabe als Oktalzahlen | |||
Bw[.m] | siehe W; Ausgabe als Binärzahlen | |||
Steuerelemente | ||||
'…' | die Zeichenkette ausgeben | 'Hallo' | Hallo | |
nH… | Hollerith-Konstante (Zeichenkette) ausgeben; die Zeichenkette hat dabei n Zeichen | 5HHallo | Hallo | |
Tn | In der Zeile zur Position n springen (absolute Angabe) | |||
TRn | In der Zeile um n Zeichen nach rechts springen (relativ) | |||
TLN | In der Zeile um n Zeichen nach links springen (relativ) | |||
nX | n Leerzeichen ausgeben | |||
/ | Neuer Datensatz / Neue Zeile, Möglich ist neben …,/,… auch …/… | |||
nP | Skalierungsfaktor 10^n für alle nachfolgenden E und F-Formate | |||
SP | Erzwingt die Ausgabe des Vorzeichens auch bei positiven Zahlen | |||
SS | Gibt die Vorzeichen bei positiven Zahlen nicht (mehr) mit aus | |||
BN | Leerzeichen bei der Eingabe ignorieren | |||
BZ | Leerzeichen bei der Eingabe als 0 interpretieren | |||
: | vorzeitiges Ende der Ausgabe, falls die ioliste abgearbeitet ist. | |||
$ | steht am Ende der Formatliste; erzwingt, dass der Cursor nach der Ausgabe stehenbleibt; dh. kein Newline am Ende der Ausgabe |
Jedem Datenelement aus der ioliste wird ein Datenformat aus der Formatliste zugeordnet, zwischen den Datenformatelementen stehende Steuerzeichen werden noch verarbeitet, selbst wenn die ioliste erschöpft ist (das Steuerzeichen „:“ verhindert das). Beim Ende der Formatliste wird ein Newline-Zeichen ausgegeben, dann geht es bei der letzten Formatgruppe (Klammerung) der Formatliste weiter.
Eine Eingabe soll direkt hinter der Frage nach der Eingabe erfolgen:
integer a WRITE (*,'(A,$)') "Bitte geben Sie eine Integerzahl ein: " READ (*,*) a
Ausgabe einer Matrix A zeilenweise, dabei werden acht Werte auf eine Zeile geschrieben (wir ignorieren hier, dass Matrizen in Fortran spaltenweise gespeichert werden):
program main INTEGER,PARAMETER :: N = 100 REAL,DIMENSION(N,N) :: A INTEGER :: i, k ! Initialisieren von A do i=1, N do k=1, N A(i,k) = i*1000+k; enddo enddo ! Ausgabe von A do i=1, N write (*, '(6HZeile , I3 / (1X, 8E10.2))') i, (A(i,j),j=1,N) enddo end program