2012-06-20 13 views
6

Qué significa esto Fortran:comunicado Fortran IF con números/etiquetas en lugar de otra declaración

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

que he visto en el viejo proyecto y no tiene idea de lo que este IF con números (etiquetas) significa.

+3

Está no era tan extraña en los primeros días de FORTRAN - era _la declaración condicional only_ disponible en el idioma a continuación. –

Respuesta

7

Este es un arithmetic if statement de FORTRAN 77. Adaptado de la especificación FORTRAN 77 (énfasis mío):

la forma de una declaración aritmética IF es:

IF (e) s1 , s2 , s2

  • donde: e es una expresión de entero, real o de doble precisión

  • s1, s2, y s3 son cada uno la etiqueta de declaración de una instrucción ejecutable que aparece en la misma unidad de programa que la instrucción aritmética IF. La misma etiqueta de declaración puede aparecer más de una vez en la misma instrucción aritmética IF.

ejecución de una instrucción de cálculo IF provoca la evaluación de la expresión e seguido de una transferencia de control. La instrucción identificada por s1, s2 o s3 se ejecuta a continuación ya que el valor de e es menor que cero, igual a cero o mayor que cero, respectivamente.

Para el ejemplo en su pregunta, a partir de la última frase anterior,

  • Si J1-3 < 0 comunicado 20 se ejecutará
  • Si J1-3 = 0 declaración también se ejecutarán 20
  • Si J1-3 > 0 declaración 21 se ejecutará

Editar: Una manera moderna y mucho más fácil de leer para escribir esto sería:

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

Muchas gracias. –

+0

No hay problema. Tenga en cuenta que mi edición sigue siendo válida FORTRAN 77 (y por supuesto válida Fortran 90, 95 etc.). Hace uso de una * declaración lógica *. El otro tipo de instrucción if es la instrucción * block if *. – Chris

+4

'if' en minúsculas no es estándar FORTRAN 77 :) –