2012-06-20 4 views
6

Was bedeutet diese Fortran-Code Mittelwert:Fortran IF-Anweisung mit Zahlen/Labels eher als eine andere Aussage

IF (J1-3) 20, 20, 21 
21 J1 = J1 - 3 
20 IF (J2-3) 22, 22, 23 
23 J2 = J2 - 3 
22 CONTINUE 

ich in alten Projekt gesehen habe, und ich habe keine Ahnung, was das IF mit Zahlen (Etiketten) meint.

+3

Es war nicht so seltsam in den frühen Tagen der FORTRAN - es _the only_ bedingte Anweisung zur Verfügung stand dann in der Sprache. –

Antwort

7

Dies ist ein arithmetic if statement von FORTRAN 77. aus der Spezifikation 77 FORTRAN Angepasst (Hervorhebung von mir):

Die Form eines arithmetischen IF Anweisung lautet:

IF (e) s1 , s2 , s2

  • Dabei gilt: e ist ein ganzzahliger, reeller oder doppelter Genauigkeitsausdruck

  • s1, s2 und s3 sind jeweils die Anweisungsetikette einer ausführbaren Anweisung, die in der gleichen Programmeinheit wie die arithmetische IF -Anweisung erscheint. Dasselbe Anweisungslabel kann mehr als einmal in der gleichen arithmetischen IF Anweisung erscheinen.

Ausführung einer arithmetischen IF Anweisung bewirkt Auswertung des Ausdrucks e durch eine Übertragung der Kontrolle verfolgt. Die Anweisung, die durch s1, s2 oder s3 identifiziert wird, wird als nächstes ausgeführt, da der Wert e kleiner als Null, gleich Null oder größer als Null ist.

Für das Beispiel in Frage, aus dem letzten Satz oben,

  • Wenn J1-3 < 0 Anweisung 20
  • Wenn J1-3 = 0 Anweisung 20 auch
  • Wenn J1-3 > 0 Anweisung ausgeführt werden, ausgeführt wird, wird 21 wird ausgeführt

bearbeiten: Ein moderner und viel besser lesbar Weg, dies wäre zu schreiben:

if (J1-3 > 0) J1 = J1 - 3 
if (J2-3 > 0) J2 = J2 - 3 
+0

Vielen Dank. –

+0

Kein Problem. Beachten Sie, dass mein Edit weiterhin FORTRAN 77 (und natürlich Fortran 90, 95 usw.) gültig ist. Es verwendet eine * logische if-Anweisung *. Der andere Typ der if-Anweisung ist die * block if-Anweisung *. – Chris

+4

Kleinschreibung 'if' ist nicht Standard FORTRAN 77 :) –