Fortran: FORTRAN 77: Anhang

<<< zur Fortran-Startseite
<< FORTRAN 77 Fortran 90/95 >>
< Ein- und Ausgabe Anhang >

Die PAUSE-Anweisung unterbricht die Programmausführung. Diese Anweisung wurde mit dem Fortran 90/95-Standard aus dem Fortran-Sprachumfang verbannt. Moderne Compiler geben deshalb teilweise bei Verwendung dieser Anweisung eine Warnmeldung (obsolete o.ä.) aus. Das Verfahren zur normalen Fortsetzung des infolge PAUSE-Anweisung angehaltenen Programmes ist compilerabhängig, z. B.:

  • gfortran und g77: go RETURN
  • g95: RETURN
  • Intel Fortran Compiler 9.0: continue RETURN


Beispiel:

0   . |  1    .    2    .    3    .    4    .    5    .    6    .    7 |  .    8  
12345678901234567890123456789012345678901234567890123456789012345678901234567890
      PROGRAM BSP
     
      WRITE (*,*) 'Hallo '
      PAUSE
      WRITE (*,*) 'Welt!'

      END
12345678901234567890123456789012345678901234567890123456789012345678901234567890
0   . |  1    .    2    .    3    .    4    .    5    .    6    .    7 |  .    8  


Ausgabe bei Compilierung mit gfortran:

 Hallo
PAUSE
To resume execution, type go.  Other input will terminate the job.

Ausgabe bei Compilierung mit g95:

 Hallo
PAUSE statement executed.  Hit Return to continue

Ausgabe bei Compilierung mit ifort:

 Hallo
FORTRAN PAUSE
PAUSE prompt>

INCLUDE ermöglicht das Einbinden einer Datei. INCLUDE ist nicht explizit im FORTRAN 77-Standard angeführt, sondern wurde 1978 als Erweiterung des FORTRAN-Standards vom US-amerikanischen DoD im MilStd 1753 festgelegt (siehe auch Abschnitt MilStd 1753).


Beispiel:

Datei bsp.f:

0   . |  1    .    2    .    3    .    4    .    5    .    6    .    7 |  .    8  
12345678901234567890123456789012345678901234567890123456789012345678901234567890
      PROGRAM BSP
 
      INCLUDE 'inc.f'
     
      WRITE(*,*) 'Fläche ist', 10**2*PI, 'cm2'
C  Ausgabe: Fläche ist   314.1593     cm2
    
      END
12345678901234567890123456789012345678901234567890123456789012345678901234567890
0   . |  1    .    2    .    3    .    4    .    5    .    6    .    7 |  .    8  


Datei inc.f:

0   . |  1    .    2    .    3    .    4    .    5    .    6    .    7 |  .    8  
12345678901234567890123456789012345678901234567890123456789012345678901234567890
      REAL PI
      PARAMETER(PI=3.141593)
12345678901234567890123456789012345678901234567890123456789012345678901234567890
0   . |  1    .    2    .    3    .    4    .    5    .    6    .    7 |  .    8  

Hollerith-Konstanten

Bearbeiten

Eine veraltete Möglichkeit Zeichenketten anzugeben stellen die Hollerith[1]-Konstanten dar. Eine Hollerith-Konstante besteht aus

  1. Einer positiven Ganzzahl, welche die Zeichenkettenlänge angibt
  2. Dem Buchstaben H
  3. Der Zeichenkette

Beispiel:

0   . |  1    .    2    .    3    .    4    .    5    .    6    .    7 |  .    8  
12345678901234567890123456789012345678901234567890123456789012345678901234567890
       PROGRAM BSP
       
       CHARACTER*5 C
       DATA C /5HUralt/  
     
       WRITE (*,*) C
 C  Ausgabe: Uralt
 
       END
12345678901234567890123456789012345678901234567890123456789012345678901234567890
0   . |  1    .    2    .    3    .    4    .    5    .    6    .    7 |  .    8  

Arithmetisches IF

Bearbeiten

Schon in grauer Vorzeit fanden Programmierer arithmetische IF-Anweisungen sehr unterhaltsam, weil damit der Programmcode interessanter gestaltet werden konnte (Quelle: Ed Post - Real Programmers Don't Use PASCAL). Diese Aussage ist begreiflicherweise auch heute noch uneingeschränkt gültig.

IF(ausdruck) ziel1, ziel2, ziel3

mit

ausdruck springe zu
< 0 ziel1
= 0 ziel2
> 0 ziel3

Beispiel:

0   . |  1    .    2    .    3    .    4    .    5    .    6    .    7 |  .    8  
12345678901234567890123456789012345678901234567890123456789012345678901234567890
       PROGRAM BSP
    
       INTEGER I 
 
       I = -55
    
       IF(I) 100, 200, 300
       GOTO 999 
   
  100  WRITE(*,*) "Negative Zahl"
 C Ausgabe: Negative Zahl 
       GOTO 999
   
  200  WRITE(*,*) "Null"
       GOTO 999
   
  300  WRITE(*,*) "Positive Zahl"
 
  999  CONTINUE
       END
12345678901234567890123456789012345678901234567890123456789012345678901234567890
0   . |  1    .    2    .    3    .    4    .    5    .    6    .    7 |  .    8  

ASSIGN und Assigned GOTO

Bearbeiten

Noch wesentlich amüsanter als bei der unachtsamen Verwendung des arithmetischen IF können die Ergebnisse durch Verwendung von Assign-Anweisungen ausfallen.

ASSIGN weist eine Zielmarke einer INTEGER-Variablen zu:

ASSIGN zielmarke TO variable

Verwendung finden kann dies neben anderem beim Assigned GOTO:

GOTO variable (liste)

Beispiel:

0   . |  1    .    2    .    3    .    4    .    5    .    6    .    7 |  .    8  
12345678901234567890123456789012345678901234567890123456789012345678901234567890
      PROGRAM BSP
   
      INTEGER VAR   
   
C ...     
      ASSIGN 200 TO VAR
C ...    
C ...  
C ...  
 
      GOTO VAR (100, 200, 300) 
   
 100  WRITE(*,*) "Negative Zahl"
      GOTO 999
   
 200  WRITE(*,*) "Null"
C Ausgabe: Null
      GOTO 999
   
 300  WRITE(*,*) "Positive Zahl"

 999  CONTINUE
      END
12345678901234567890123456789012345678901234567890123456789012345678901234567890
0   . |  1    .    2    .    3    .    4    .    5    .    6    .    7 |  .    8  

MilStd 1753, DoD Supplement To American National Standard X3.9-1978

Bearbeiten

Nachfolgend stichwortartig die vom amerikanischen Department of Defense im Jahr 1978 ergänzend zu FORTRAN 77 geforderten Spracheigenschaften

  • END DO (gelabelt, für DO-Schleifen)
  • DO WHILE-Schleife
  • INCLUDE
  • IMPLICIT NONE
  • Manipulation von Bitfeldern (IOR, IAND,ISHFT, ...)
  • READ/WRITE-Verhalten nach EOF.



  1. Herman Hollerith (* 1860, †  1929), Erfinder des Hollerith-Lochkartenverfahrens,   Herman Hollerith


<<< zur Fortran-Startseite
<< FORTRAN 77 Fortran 90/95 >>
< Ein- und Ausgabe Anhang >