在Fortran 77或Fortan 90或Fortran 2003中,是否可以在没有如下所示的关联终止语句的情况下结束以下构造?
例如,是否可以仅使用end语句而不是end program来结束程序?
子程序:结束子例程
功能:终端功能
模块:终端模块
程序:结束程序
if:结束if\endif
do:结束do\enddo
选择:结束选择\endselect
发布于 2019-08-07 09:08:35
这有点复杂,但是当您包含编码样式标记时,我首先要说,我强烈建议在任何情况下都使用完整的表单--任何优秀的编辑器都会自动神奇地适当地完成一个End语句。例如,在emacs中,我使用的编辑器在输入End后按下选项卡将自动添加所有文本。
然而,在某些情况下,技术上不需要这样做。对于诸如do、if、select、where等控制结构,需要完整的表单。然而,严格地说,对于程序和子程序来说,它并不是--实际上,最简单的Fortran程序只是
End但是,我建议不要这样做,因为完整的表单有效地记录了程序的实际开销,这也意味着您不需要记住什么时候需要完整的表单,什么时候不需要。
我还将添加,因为您还包括编码样式标记,我所说的完整表单实际上是指同样包含程序/子程序名称的表单,或者如果使用控件构造名称的话。因此,我会写一个"Hello“的程序
Program hello_world
Implicit None
Write( *, * ) 'Hello World!'
End Program hello_world最后,我要补充的是,在这个时代,没有人应该使用Fortran77,它已经过时了四分之一世纪,而且Fortran90也应该退出使用新代码。
发布于 2019-08-07 09:18:13
可以在程序单元和子程序/过程定义中使用朴素的end:
end [program]end [module]end [submodule]end [block data]end [function]end [subroutine]不允许对可执行结构、接口块或“赋值结构”或类型定义(本质上,其他地方)使用未修饰的end:
end associateend blockend criticalend doend enumend forallend ifend interfaceend select ( select case、select rank和select type中的每一个)end teamend typeend where此外,对于第一个列表,在添加程序单元/过程名称时,必须使用扩展表单:
end ... name请注意,我没有提到语言修订:问题中的一些甚至在Fortran 77中不存在,而上面列表中的一些在Fortran 2018中是新的。
简单地说一下风格,我对Ian Bush's answer没有什么可说的。
https://stackoverflow.com/questions/57390353
复制相似问题