没有逻辑表达式的Fortran IF语句

use*_*714 0 fortran if-statement fortran77

我正在转换Fortran中的旧代码,我认为它是77.在以下方式中有几种IF的使用,我无法意识到它的作用:

    IF(x1-x2) 12, 13, 14

12  WRITE(*,*) x1
    .
    .
    .
13  y=...
    .
    .
14  DO x=x1,x2
    IF(x-x2) 33, 34, 40
    .
    .
    .
Run Code Online (Sandbox Code Playgroud)

代码符合并运行正常,并产生结果.有没有人遇到IF的这种用法?

Kei*_*son 5

那是算术IF.它分支到第一个,第二个或第三个标签,具体取决于表达式是负数,零还是正数.

在非常旧版本的Fortran(或FORTRAN)中,它是唯一IF可用的语句形式.

看到它在Fortran 77的最新版本中使用它可能有点奇怪,它具有更现代的逻辑IF.该功能在Fortran 90中被宣布为过时,但如果更现代的Fortran编译器仍然支持它,我不会感到惊讶.