Fortran if then 和指令都在同一行

Fortran if then and instruction all on the same line

我不会说 Fort运行,但我正在尝试将一些功能从 Fort运行 重新编码为 Python。我无法编译和 link 整个原始源代码(也涉及 c 库)和调试原始代码。但是我陷入了经验编码员可能会提供帮助的一小部分。本质上,在 Fort运行 代码的中间,我们有一个带指令的 if 语句,但在同一行上还有一个“then”:

If (something) then instruction
Something
Something etc.

这是嵌套在一系列“if end if”块中。 我知道这不是 recommended/allowed 的语法,但程序显然 运行 没问题。我的 Python 版本没有,所以这可能是我错误的根源。所以我的问题是;我是否只是忽略“然后”将其视为

IF (something) instruction
Something
Something etc

或者,在这种情况下,我是否应该寻找结束语“如果结束”? 这甚至清楚问题是什么吗? 实际代码,如此处所建议: 有问题的行是:

if (t.lt.1.) then i=i-1

所有缩进已发布..

subroutine detpic(sen,der,i)
     dimension sen(100000),der(100000)
     logical detmax,derpos

     detmax=.false.
     do while (der(i).eq.0.)
          i=i+1 
          if (i.gt.39999) then
              return
          end if
     end do
     if (der(i).gt.0.) then
                    derpos=.true.
                       else
                    derpos=.false.
     end if
     do while (detmax.eqv..false.)
          if (derpos.eqv..true.) then
              do while (der(i).ge.0.)
                  i=i+1
                  if (i.gt.39999) then
                      return
                  end if
              end do
                  t=der(i-1)/(-der(i))
                  if (t.lt.1.) then i=i-1
                  detmax=.true.
                              else
              do while (der(i).le.0)
                  i=i+1
                  if (i.gt.39999) then
                      return
                  end if
              end do
              derpos=.true.
          end if
     end do
     return       
     end

这样的语句

      if (t.lt.1.) then i=i-1

如果源是固定形式(并且仅当是固定形式),则它是一个有效的 Fortran IF 语句。和

是一样的说法
      if (t.lt.1.) theni=i-1

这是对变量theni的条件赋值。这是又一次 implicit none 和使用 free-form 源代码使代码更容易调试和理解。

If free-form source 这不是有效的 IF 语句或 IF 构造介绍。

更一般地说,除赋值语句或指针赋值语句外,没有任何操作语句以四个字符 then 开头。同样,除了 IF 或 IF-THEN 语句之外,没有其他语句以 if(expression) then 开头。总之,这些意味着 if (condition) then something(对于 non-whitespace something)的唯一解释是作为 IF 语句中的赋值或指针赋值操作语句。