首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Fortran元素的End语句

Fortran元素的End语句
EN

Stack Overflow用户
提问于 2019-08-07 08:44:24
回答 2查看 189关注 0票数 1

在Fortran 77或Fortan 90或Fortran 2003中,是否可以在没有如下所示的关联终止语句的情况下结束以下构造?

例如,是否可以仅使用end语句而不是end program来结束程序?

子程序:结束子例程

功能:终端功能

模块:终端模块

程序:结束程序

if:结束if\endif

do:结束do\enddo

选择:结束选择\endselect

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-08-07 09:08:35

这有点复杂,但是当您包含编码样式标记时,我首先要说,我强烈建议在任何情况下都使用完整的表单--任何优秀的编辑器都会自动神奇地适当地完成一个End语句。例如,在emacs中,我使用的编辑器在输入End后按下选项卡将自动添加所有文本。

然而,在某些情况下,技术上不需要这样做。对于诸如do、if、select、where等控制结构,需要完整的表单。然而,严格地说,对于程序和子程序来说,它并不是--实际上,最简单的Fortran程序只是

代码语言:javascript
复制
End

但是,我建议不要这样做,因为完整的表单有效地记录了程序的实际开销,这也意味着您不需要记住什么时候需要完整的表单,什么时候不需要。

我还将添加,因为您还包括编码样式标记,我所说的完整表单实际上是指同样包含程序/子程序名称的表单,或者如果使用控件构造名称的话。因此,我会写一个"Hello“的程序

代码语言:javascript
复制
Program hello_world

  Implicit None

  Write( *, * ) 'Hello World!'

End Program hello_world

最后,我要补充的是,在这个时代,没有人应该使用Fortran77,它已经过时了四分之一世纪,而且Fortran90也应该退出使用新代码。

票数 3
EN

Stack Overflow用户

发布于 2019-08-07 09:18:13

可以在程序单元和子程序/过程定义中使用朴素的end

  • end [program]
  • end [module]
  • end [submodule]
  • end [block data]
  • end [function]
  • end [subroutine]

不允许对可执行结构、接口块或“赋值结构”或类型定义(本质上,其他地方)使用未修饰的end

  • end associate
  • end block
  • end critical
  • end do
  • end enum
  • end forall
  • end if
  • end interface
  • end select ( select caseselect rankselect type中的每一个)
  • end team
  • end type
  • end where

此外,对于第一个列表,在添加程序单元/过程名称时,必须使用扩展表单:

  • end ... name

请注意,我没有提到语言修订:问题中的一些甚至在Fortran 77中不存在,而上面列表中的一些在Fortran 2018中是新的。

简单地说一下风格,我对Ian Bush's answer没有什么可说的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57390353

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档