DO循环中IF条件的奇怪标签用法

时间:2011-07-22 12:21:25

标签: fortran

我不确定哪个版本的Fortran是这段代码,我也不是很擅长但是这是我试图理解的代码片段......

      DO 55 J=1,N  
      IF(KODE(J)) 55,55,40  ! Can not figure out what this line does
   40 DO 50 I=1,N  
      CH=G(I,J) 
      G(I,J)=-H(I,J)
      H(I,J)=-CH
   50 CONTINUE
   55 CONTINUE

在上面给出的循环中,你能帮我理解第二行的作用,特别是标签55,55,40

这是我试图理解的边界元素书的代码......

2 个答案:

答案 0 :(得分:2)

哇...我有一段时间没见过那种语法。这是Fortran 算术IF语句KODE(J)的结果是一个数字。如果它小于零,则使用第一个跳转,如果它等于零,则使用第二个跳转,否则,使用第三个跳转。这大致相当于:

X=KODE(J)
IF (X.LT.0) GO TO 55
IF (X.EQ.0) GO TO 55
GO TO 40

我的Fortran技能已经明显消退,但这是我记得的。

在这种特殊情况下,程序员编写更简单

X=KODE(J)
IF (X.LE.0) GO TO 55
GO TO 40

答案 1 :(得分:1)

“算术if”语句是早期Fortran的IF语句。传统的IF语句(又名“逻辑”if)于1962年在Fortran IV中引入(http://en.wikipedia.org/wiki/Fortran#FORTRAN_IV)。算术IF语句是真正旧代码(FORTRAN II!)的标志,或者是遵循这种风格的程序员。

算术If语句在Fortran 90中被列为“过时”,作为警告,该功能可能会在将来从该语言中删除。