GOTO
bewirkt einen Sprung zu einer bestimmten Anweisungsnummer.
Beispiel:
0 . | 1 . 2 . 3 . 4 . 5 . 6 . 7 | . 8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
PROGRAM BSP
GOTO 100
WRITE (*,*) 'Hallo'
100 WRITE (*,*) 'Welt'
C Ausgabe: Welt
END
12345678901234567890123456789012345678901234567890123456789012345678901234567890
0 . | 1 . 2 . 3 . 4 . 5 . 6 . 7 | . 8
CONTINUE
ermöglicht bei Anweisungsnummern eine „leere“ Anweisung.
Beispiel:
0 . | 1 . 2 . 3 . 4 . 5 . 6 . 7 | . 8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
PROGRAM BSP
GOTO 100
WRITE (*,*) 'Hallo'
100 CONTINUE
C keine Ausgabe
END
12345678901234567890123456789012345678901234567890123456789012345678901234567890
0 . | 1 . 2 . 3 . 4 . 5 . 6 . 7 | . 8
Beim bedingten GOTO
ist in Abhängigkeit von einer Integer-Variablen der Sprung zu einer bestimmten Anweisungsnummer möglich.
Beispiel: Eine „Switch“-Verzweigung
0 . | 1 . 2 . 3 . 4 . 5 . 6 . 7 | . 8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
PROGRAM BSP
INTEGER I
I=2
GOTO (100, 200, 300), I
100 WRITE (*,*) 'Hallo 1'
GOTO 1000
200 WRITE (*,*) 'Hallo 2'
GOTO 1000
300 WRITE (*,*) 'Hallo 3'
1000 CONTINUE
C Ausgabe: Hallo 2
END
12345678901234567890123456789012345678901234567890123456789012345678901234567890
0 . | 1 . 2 . 3 . 4 . 5 . 6 . 7 | . 8
IF (logischer ausdruck) anweisung
Beispiel:
0 . | 1 . 2 . 3 . 4 . 5 . 6 . 7 | . 8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
PROGRAM BSP
INTEGER I
I=2
IF (I .EQ. 2) WRITE (*,*) 'Hallo'
C Ausgabe: Hallo
END
12345678901234567890123456789012345678901234567890123456789012345678901234567890
0 . | 1 . 2 . 3 . 4 . 5 . 6 . 7 | . 8
IF (logischer ausdruck) THEN
anweisungsblock
END IF
Beispiel:
0 . | 1 . 2 . 3 . 4 . 5 . 6 . 7 | . 8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
PROGRAM BSP
INTEGER I
I=2
IF (I .EQ. 2) THEN
WRITE (*,*) 'Hallo'
END IF
C Ausgabe: Hallo
END
12345678901234567890123456789012345678901234567890123456789012345678901234567890
0 . | 1 . 2 . 3 . 4 . 5 . 6 . 7 | . 8
IF (logischer ausdruck) THEN
if-anweisungsblock
ELSE
else-anweisungsblock
END IF
Beispiel:
0 . | 1 . 2 . 3 . 4 . 5 . 6 . 7 | . 8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
PROGRAM BSP
INTEGER I
I=333
IF (I .GE. 444) THEN
WRITE (*,*) 'Hallo'
ELSE
WRITE (*,*) 'Hola'
END IF
C Ausgabe: Hola
END
12345678901234567890123456789012345678901234567890123456789012345678901234567890
0 . | 1 . 2 . 3 . 4 . 5 . 6 . 7 | . 8
IF (logischer ausdruck 1) THEN
if-anweisungsblock 1
ELSE IF (logischerAusdruck 2) THEN
if-anweisungsblock 2
ELSE IF (logischerAusdruck n) THEN
if-anweisungsblock n
ELSE
else-anweisungsblock
END IF
0 . | 1 . 2 . 3 . 4 . 5 . 6 . 7 | . 8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
PROGRAM BSP
INTEGER I
I = 2
IF (I .EQ. 1) THEN
WRITE (*,*) 'I ist eins'
ELSE IF (I .EQ. 2) THEN
WRITE (*,*) 'I ist zwei'
ELSE
WRITE (*,*) 'Ich weiß nicht was I ist'
END IF
C Ausgabe: I ist zwei
END
12345678901234567890123456789012345678901234567890123456789012345678901234567890
0 . | 1 . 2 . 3 . 4 . 5 . 6 . 7 | . 8
Die DO
-Schleife (Zählschleife) ist die einzige Schleife die FORTRAN 77 standardmäßig kennt.
DO nr zählvariable = startwert, endwert [, schrittweite]
anweisungsblock
nr CONTINUE
Beispiel:
0 . | 1 . 2 . 3 . 4 . 5 . 6 . 7 | . 8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
PROGRAM BSP
INTEGER I
DO 100 I = 1, 10
WRITE (*,*) I
100 CONTINUE
C Zeilenweise Ausgabe der Zahlen 1 bis 10
END
12345678901234567890123456789012345678901234567890123456789012345678901234567890
0 . | 1 . 2 . 3 . 4 . 5 . 6 . 7 | . 8
Da FORTRAN 77 keine weiteren Schleifen kennt, müssen diese mit Hilfe einer IF-Verzweigung und einem GOTO
-Befehl nachgebildet werden. Prominente Beispiele aus anderen Programmiersprachen sind die While-Schleife und die Do-While-Schleife.
While-Schleife (kopfgesteuerte Schleife)[ Bearbeiten ]
Beispiel:
0 . | 1 . 2 . 3 . 4 . 5 . 6 . 7 | . 8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
PROGRAM BSP
INTEGER I
I=0
10 IF(I .LT. 5) THEN
WRITE (*,*) I
I = I + 1
GOTO 10
END IF
C Die Zahlen 0 bis 4 werden ausgegeben
END
12345678901234567890123456789012345678901234567890123456789012345678901234567890
0 . | 1 . 2 . 3 . 4 . 5 . 6 . 7 | . 8
Do-While-Schleife (fußgesteuerte Schleife)[ Bearbeiten ]
Beispiel:
0 . | 1 . 2 . 3 . 4 . 5 . 6 . 7 | . 8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
PROGRAM BSP
INTEGER I
I=6
10 CONTINUE
WRITE (*,*) I
I = I + 1
IF (I .LT. 5) GOTO 10
C Die Zahl 6 wird ausgegeben
END
12345678901234567890123456789012345678901234567890123456789012345678901234567890
0 . | 1 . 2 . 3 . 4 . 5 . 6 . 7 | . 8
Bei Eingabe oder Ausgabe ist die Angabe einer impliziten Schleife möglich.
Beispiel:
0 . | 1 . 2 . 3 . 4 . 5 . 6 . 7 | . 8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
PROGRAM BSP
INTEGER I
WRITE (*,*) ('Hallo', I = 1, 10)
C Ausgabe: HalloHalloHalloHalloHalloHalloHalloHalloHalloHallo
END
12345678901234567890123456789012345678901234567890123456789012345678901234567890
0 . | 1 . 2 . 3 . 4 . 5 . 6 . 7 | . 8
Die STOP
-Anweisung beendet das Programm.
Beispiel:
0 . | 1 . 2 . 3 . 4 . 5 . 6 . 7 | . 8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
PROGRAM BSP
WRITE (*,*) 'Vor Stop-Statement'
STOP
WRITE (*,*) 'Nach Stop-Statement'
C Ausgabe: Vor Stop-Statement
END
12345678901234567890123456789012345678901234567890123456789012345678901234567890
0 . | 1 . 2 . 3 . 4 . 5 . 6 . 7 | . 8