带有数字/标签的Fortran IF语句而不是另一个语句

Pav*_*yan 6 fortran fortran90

这个Fortran代码的含义是什么:

   IF (J1-3) 20, 20, 21
21 J1 = J1 - 3
20 IF (J2-3) 22, 22, 23
23 J2 = J2 - 3
22 CONTINUE
Run Code Online (Sandbox Code Playgroud)

我在旧项目中看到过,我不知道带有数字(标签)的IF是什么意思.

Chr*_*ris 7

这是来自FORTRAN 77 的算术if语句.改编自FORTRAN 77规范(强调我的):

算术IF语句的形式是:

IF (e) s1 , s2 , s2

  • 其中:e是整数,实数或双精度表达式

  • s1,s2和s3每个都是可执行语句的语句标签,它出现在与算术IF语句相同的程序单元中.相同的语句标签可能在同一算术IF语句中出现多次.

算术IF语句的执行导致表达式的评估,e然后是控制的转移.由s1,s2或s3随后作为值标识的语句e小于零,分别等于零或大于零.

对于你问题中的例子,从上面的最后一句,

  • 如果J1-3 < 0声明20将被执行
  • 如果J1-3 = 0声明20也将被执行
  • 如果J1-3 > 0声明21将被执行

编辑:一种现代的,更易读的方式来写这个:

if (J1-3 > 0) J1 = J1 - 3
if (J2-3 > 0) J2 = J2 - 3
Run Code Online (Sandbox Code Playgroud)

  • 小写`if`不是标准的FORTRAN 77 :) (4认同)