! ---------------------------------------------------------------------------
! Sprache: Fortran 95
!
!          - im Besonderen im Ingenieursbereich weit verbreitet
!            und urspruenglich fuer diesen entwickelt
!          - schnell bei Berechnungen
!          - leichte Verarbeitung von Zahlen und Texten
!          - auch fuer Anfaenger gut geeignet, da recht einfache 
!            (man sagt auch: "hohe") Programmiersprache
!
! ---------------------------------------------------------------------------


! ---------------------------BEISPIEL-PROGRAMM-------------------------------
! Datei      : mittelwert.f
! Aufgabe    : liest Zahlen aus einer Datei ein und gibt Mittelwert aus
! ---------------------------------------------------------------------------

PROGRAM mittelwert
  
!  Variablen-Deklaration
   IMPLICIT NONE
   REAL :: zahl, summe, mittw
   CHARACTER (LEN = 128) :: datnam
   INTEGER :: i, n, fehler
  
!  Initialisierung
   n = 0
   summe = 0

!  Startmeldung
   PRINT *
   PRINT *, 'Dieses Programm liest Zahlen aus einer Datei ein'
   PRINT *, 'und berechnet anschliessend den Mittelwert.'
   PRINT *
  
!  Beginn Schleife - Datei oeffnen
   DO   
!      Eingabe des Dateinamens
       PRINT *, 'Geben Sie den Dateinamen ein:'
       READ (*, '(A)') datnam

!     Datei oeffnen
      OPEN (10, FILE = datnam, STATUS = 'OLD', IOSTAT = fehler)

!     Fehlermeldung, wenn Datei nicht existiert
      IF (fehler /= 0) PRINT *, 'Datei existiert nicht!'

   IF (fehler == 0) EXIT
   ENDDO
!  Ende Schleife - Datei oeffnen
      
!  Datei bis zum Ende lesen und Summe berechnen
   DO
      READ (10, *, IOSTAT = fehler) zahl
      IF (fehler == 0) THEN
         summe = summe + zahl
         n = n + 1
      ENDIF
   IF (fehler /= 0) EXIT
   ENDDO

!  Datei schliessen
   CLOSE (10)

!  Mittelwert berechnen
   mittw = summe / n

!  Ausgabe der Ergebnisse
   PRINT *
   PRINT *, 'Anzahl der gelesenen Zahlen = ', n
   PRINT *, 'Summe = ', summe
   PRINT *, 'Mittelwert = ', mittw
   PRINT *

END

! ---------------------------------------------------------------------------
