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

时间:2012-06-20 17:23:07

标签: 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

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

1 个答案:

答案 0 :(得分:7)

这是来自FORTRAN 77的arithmetic if statement。改编自FORTRAN 77规范(强调我的):

  

算术IF语句的形式是:

     

IF (e) s1 , s2 , s2

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

  •   
  • s1s2s3都是可执行语句的语句标签,它出现在与算术IF语句相同的程序单元中。相同的语句标签可能在同一算术IF语句中出现多次。

  •   
     

执行算术IF语句会导致对表达式e进行评估,然后进行控制转移。 s1s2s3标识的语句将在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