Dichiarazione Fortran IF con numeri / etichette piuttosto che un’altra affermazione

Cosa significa questo codice Fortran:

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

Ho visto nel vecchio progetto e non ho idea di cosa significhi questo IF con numeri (etichette).

Questa è una dichiarazione aritmetica in FORTRAN 77. Adattata dalla specifica FORTRAN 77 (sottolineatura mia):

La forma di un’istruzione IF aritmetica è:

IF (e) s1 , s2 , s2

  • dove: e è un’espressione di precisione intera, reale o doppia

  • s1 , s2 e s3 sono ciascuna l’etichetta dell’istruzione di un’istruzione eseguibile che appare nella stessa unità di programma dell’istruzione IF aritmetica. La stessa etichetta di dichiarazione può apparire più di una volta nella stessa dichiarazione IF aritmetica.

L’esecuzione di un’istruzione IF aritmetica provoca la valutazione dell’espressione e seguita da un trasferimento di controllo. L’istruzione identificata da s1 , s2 o s3 viene eseguita successivamente quando il valore di e è minore di zero, uguale a zero o maggiore di zero, rispettivamente.

Per l’esempio nella tua domanda, dall’ultima frase sopra,

  • Se J1-3 < 0 istruzione 20 verrà eseguita
  • Se J1-3 = 0 istruzione 20 verrà eseguita anche
  • Se viene J1-3 > 0 istruzione J1-3 > 0 21

Modifica : un modo moderno e molto più leggibile per scrivere questo sarebbe:

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