If statement Fortran中频循环

If statement Fortran中频循环,if-statement,fortran,If Statement,Fortran,我对我正在看的一些用Fortran编写的代码有一个问题。我感到困惑的代码部分写在下面 DO 40 LL=1,N DO 40 I=1,N-1,2 IF((LL-I)*(LL-I-1)*(LL-I*2)*(LL-I+N-2)) 22,21,22 NODO=LL-I+1 IF((LL.EQ.1) .AND. (I.EQ.N-1)) NODO=NODO+N 我不明白第一个IF语句的条件。看起来数字是相乘的,但是这个数字并没有被检查。然后在IF语句之后写入3个行号。有人知道这个IF语句在做什么吗?最后一

我对我正在看的一些用Fortran编写的代码有一个问题。我感到困惑的代码部分写在下面

DO 40 LL=1,N
DO 40 I=1,N-1,2
IF((LL-I)*(LL-I-1)*(LL-I*2)*(LL-I+N-2)) 22,21,22
NODO=LL-I+1
IF((LL.EQ.1) .AND. (I.EQ.N-1)) NODO=NODO+N
我不明白第一个IF语句的条件。看起来数字是相乘的,但是这个数字并没有被检查。然后在IF语句之后写入3个行号。有人知道这个IF语句在做什么吗?最后一个IF语句有意义,因为实际正在检查一个条件。谢谢。

电话线

IF((LL-I)*(LL-I-1)*(LL-I*2)*(LL-I+N-2)) 22,21,22

是一个算术if语句,它肯定已经过时(Fortran标准术语表示已弃用),甚至可能已在最新的语言标准中删除。如果条件计算为负数,则程序控制分支到带有第一个标签的行(即
22
),如果计算为
0
,则分支到第二个标签(
21
),如果分支到第三个标签(
22
)。正如您所见,这三个标签不一定都是不同的。

此外,除非标签21或22出现在NODO=LL…的语句中,否则将永远无法到达该语句。多亏了你们两位。21出现在NODO的声明中。非常古老的Fortran,让许多人困惑,并被反复询问:,和