Fortran 元素的结束语句
End statement for Fortran elements
在 Fortran 77 或 Fortan 90 或 Fortran 2003 中,是否可以在没有相应结束语句的情况下结束后续构造,如下所示?
例如,是否可以仅使用 end
语句而不是 end program
来结束程序?
子程序:结束子程序
函数:结束函数
模块:结束模块
程序:结束程序
如果:结束if\endif
做:结束do\enddo
select:结束select\endselect
它有点复杂,但是当你包含编码风格标签时,我首先要说我强烈建议在所有情况下都使用完整形式——任何像样的编辑器都会自动神奇地适当地完成一个 End
语句。例如在 emacs 中,我使用的编辑器,在输入 End
后点击 tab 将自动添加所有文本。
但在某些情况下,技术上并不需要。对于诸如 do、if、select、where 等控制结构,需要完整形式。然而对于程序和子程序来说严格来说它不是 - 事实上最简单的 Fortran 程序就是
End
但是我不建议这样做,因为完整形式可以有效地记录程序,而程序员的开销几乎为零,而且这也意味着您不必记住何时需要完整形式,何时不需要.
我还要补充一点,当你包含编码风格标签时,我所说的完整形式实际上是指还包含 program/subprogram 名称或控制构造名称(如果使用)的形式。因此我会写一个 "Hello World" 程序作为
Program hello_world
Implicit None
Write( *, * ) 'Hello World!'
End Program hello_world
最后我要补充一点,在这个时代没有人应该使用 Fortran77,它已经过时了四分之一个世纪,而且 Fortran90 也应该因新代码而退休。
可以在程序单元和 subprograms/procedure 定义中使用未修饰的 end
:
end [program]
end [module]
end [submodule]
end [block data]
end [function]
end [subroutine]
不允许将未经修饰的 end
用于可执行结构、接口块,或 "assignment constructs" 或类型定义(基本上,其他任何地方):
end associate
end block
end critical
end do
end enum
end forall
end if
end interface
end select
(对于每个 select case
、select rank
和 select type
)
end team
end type
end where
此外,对于第一个列表,在添加程序时需要使用扩展形式 unit/procedure 名称:
end ... name
请注意,我没有提到语言修订:其中一些问题甚至在 Fortran 77 中都不存在,上面列表中的一些是 Fortran 2018 中的新问题。
简单提一下风格,我无话可说。
在 Fortran 77 或 Fortan 90 或 Fortran 2003 中,是否可以在没有相应结束语句的情况下结束后续构造,如下所示?
例如,是否可以仅使用 end
语句而不是 end program
来结束程序?
子程序:结束子程序
函数:结束函数
模块:结束模块
程序:结束程序
如果:结束if\endif
做:结束do\enddo
select:结束select\endselect
它有点复杂,但是当你包含编码风格标签时,我首先要说我强烈建议在所有情况下都使用完整形式——任何像样的编辑器都会自动神奇地适当地完成一个 End
语句。例如在 emacs 中,我使用的编辑器,在输入 End
后点击 tab 将自动添加所有文本。
但在某些情况下,技术上并不需要。对于诸如 do、if、select、where 等控制结构,需要完整形式。然而对于程序和子程序来说严格来说它不是 - 事实上最简单的 Fortran 程序就是
End
但是我不建议这样做,因为完整形式可以有效地记录程序,而程序员的开销几乎为零,而且这也意味着您不必记住何时需要完整形式,何时不需要.
我还要补充一点,当你包含编码风格标签时,我所说的完整形式实际上是指还包含 program/subprogram 名称或控制构造名称(如果使用)的形式。因此我会写一个 "Hello World" 程序作为
Program hello_world
Implicit None
Write( *, * ) 'Hello World!'
End Program hello_world
最后我要补充一点,在这个时代没有人应该使用 Fortran77,它已经过时了四分之一个世纪,而且 Fortran90 也应该因新代码而退休。
可以在程序单元和 subprograms/procedure 定义中使用未修饰的 end
:
end [program]
end [module]
end [submodule]
end [block data]
end [function]
end [subroutine]
不允许将未经修饰的 end
用于可执行结构、接口块,或 "assignment constructs" 或类型定义(基本上,其他任何地方):
end associate
end block
end critical
end do
end enum
end forall
end if
end interface
end select
(对于每个select case
、select rank
和select type
)end team
end type
end where
此外,对于第一个列表,在添加程序时需要使用扩展形式 unit/procedure 名称:
end ... name
请注意,我没有提到语言修订:其中一些问题甚至在 Fortran 77 中都不存在,上面列表中的一些是 Fortran 2018 中的新问题。
简单提一下风格,我无话可说