next up previous contents
Nächste Seite: Unterprogramme Aufwärts: Tastaturein- und Bildschirmausgabe Vorherige Seite: Tastatureingabe: READ   Inhalt

Format

Es sollen hier nur die wichtigsten Formate angegeben werden;
die Liste ist bei weitem nicht vollständig, kann aber in jedem Fortran 90 Buch nachgelesen werden.
Man unterscheidet zwischen Formatangaben zur Datenaufbereitung und zur Ein-/Ausgabe-Steuerung und zur Ausgabe von Zeichenketten innerhalb der Formatangabe.
Aufbereitung * freies Format
  nA[w] n mal CHARACTER der Länge w
  nFw.d n mal REAL, DOUBLE PRECISION, COMPLEX
  nIw n mal INTEGER mit w Stellen
  nX n Leerzeichen
Steuerung ADVANCE = 'NO' kein Zeilenvorschub
  IOSTAT = variable variable (INTEGER) enthält einen Wert,
    der Statusinformation angibt: i.a. 0 für ok
  ERR = marke verzweige im Falle eines Fehlers zur Marke "marke"
Zeichenketten H, ', "  
PROGRAM in_output
 IMPLICIT NONE
 REAL     :: r
 REAL, PARAMETER :: pi = 3.14
 INTEGER  :: i, ios
!-------------------------------------------------------
 loop: DO
        WRITE (*,'(A)',ADVANCE='NO') &
              'geben Sie eine max. 3-stellige INTEGER-Zahl ein: '
        READ (*,'(i3)',ERR=50,IOSTAT=ios) i
        IF (ios /= 0) EXIT
        r = pi*i**2.0
        WRITE (*,60) i, r
60 FORMAT ('Die Flaeche eines Kreises mit Radius ',i3,' ist ',f10.2)
        CYCLE
50      WRITE (*,*) 'Fehlerhafte Eingabe!'
       ENDDO loop
 WRITE (*,*)
 STOP 'Programm wurde beendet!'
END PROGRAM in_output
Dieses Programm liefert folgende Ausgabe:
geben Sie eine max. 3-stellige INTEGER-Zahl ein: 999
Die Flaeche eines Kreises mit Radius 999 ist 3133723.25
geben Sie eine max. 3-stellige INTEGER-Zahl ein: 1000
Die Flaeche eines Kreises mit Radius 100 ist   31400.00
geben Sie eine max. 3-stellige INTEGER-Zahl ein: 34
Die Flaeche eines Kreises mit Radius  34 ist    3629.84
geben Sie eine max. 3-stellige INTEGER-Zahl ein: *
 Fehlerhafte Eingabe!
geben Sie eine max. 3-stellige INTEGER-Zahl ein:
STOP: Programm wurde beendet!
und zwar aus folgendem Grund:
  1. Zeile: Textausgabe ohne Zeilenvorschub; Eingabe "999" von Tastatur
  2. Zeile: Ausgabe von Text, der 3-stelligen Eingabe und der Ausgabe im Format f10.2, d.h.: 10 Zeichen, davon 1 Komma und 2 Stellen hinter dem Komma
  3. Zeile: Textausgabe ohne Zeilenvorschub; Eingabe "1000" von Tastatur
  4. Zeile: da nur 3 Stellen erwartet wurden (I3), wird die 3. Null von 1000 ignoriert, es wird also nur 100 eingelesen!
  5. Zeile: Ausgabe von Text, der 3-stelligen Eingabe und der Ausgabe im Format f10.2; wenn weniger als 10 Zeichen, dann wird vorne mit blanks (' ') aufgefüllt.
  6. Zeile: es wird nur eine 2-stellige Zahl eingegeben, führende Stellen werden mit 0 aufgefüllt (also 034 und nicht 340)
  7. Zeile: 34 wird auf 3 Stellen rechtsbündig ausgegeben, die Fläche ebenfalls rechtsbündig mit 2 Nachkommastellen auf insgesammt 10 Positionen.
  8. Zeile: eine Stern ('*') wird eingegeben.
  9. Zeile: der Stern wurde als fehlerhafte Eingabe erkannt und es wurde zu Marke 50 verzweigt; das führende Blank entsteht durch die Ausgabe im freien Format ( ,*)
  10. Zeile: die Eingabe wird abgebrochen (CTRL-Z auf PC, CTRL-D unter UNIX), ios bekommt einen Wert /= 0, die Schleife wird verlassen.




Das Programm ADD_2_REALS nun mit formatierter Ein- und Ausgabe:

PROGRAM ADD_2_REALS_AGAIN
 IMPLICIT NONE                       ! verhindert Tippfehler!
 REAL :: X, Y
 WRITE (*,'(A15)',ADVANCE='NO') 'Input data X:'
 READ (*,'(f2.2)') X                 ! lies zwei Positionen; falls kein Komma
 WRITE (*,*) "Input data  X = ", X   ! dabei, interpretiere die letzten beiden
 WRITE (*,'(A15)',ADVANCE='NO') 'Input data Y:' ! Zahlen als Nachkommastellen
 READ (*,'(f3.2)') Y                 ! lies drei Psitionen und falls kein Komma
 WRITE (*,*) "Input data  Y = ", Y   ! dabei -> 2 Nachkommastellen
 WRITE (*,*) 'X + Y =', X + Y
END PROGRAM ADD_2_REALS_AGAIN
liefert zur Laufzeit: 2. Eingabe 3. Eingabe
  Input data X:56.78                1.3                  .56 
 Input data  X =    0.5600000            1.0000000            0.5000000
  Input data Y:4.567                456                  .56
 Input data  Y =    4.5000000            4.5599999            0.5600000
 X + Y =   5.0599999            5.5599999            1.0599999

next up previous contents
Nächste Seite: Unterprogramme Aufwärts: Tastaturein- und Bildschirmausgabe Vorherige Seite: Tastatureingabe: READ   Inhalt
Reinfried O. Peter 2001-09-07