【问题标题】:Creating submodule in gfortran在 gfortran 中创建子模块
【发布时间】:2017-03-30 19:40:17
【问题描述】:

这是代码:

Program Submodules_0

Use Const_Var
Use Baz_Var

Implicit none

Call Pro_Baz

End Program Submodules_0

Module Const_Var

Implicit none

Integer::i
Integer,parameter::Br_NaNi=3
Real,parameter::S_baz=3.15E+06
Real,parameter,dimension(Br_NaNi)::V_baz=[110.0E+03,20.0E+03,0.40E+03]
Real,dimension(Br_NaNi)::I_baz,Z_baz,Y_baz

End module Const_Var

Module Baz_Var

Use Const_Var

Implicit none

Interface

Module subroutine Pro_Baz

End subroutine Pro_Baz

End interface

End module Baz_Var

Submodule(Baz_Var) Baz_Var_Main

Contains

Subroutine Pro_Baz

Implicit none

Do concurrent(i=1:Br_NaNi)

   I_baz(i)=(S_baz)/((sqrt(3.0))*V_baz(i))
   Z_baz(i)=(V_baz(i)**2)/(S_baz)
   Y_baz(i)=1/(Z_baz(i))

End Do

Return
End Subroutine Pro_Baz

End submodule Baz_Var_Main

我想创建包含子例程 Pro_Baz 的子模块,当我启动这个程序时,我收到一条消息:

错误:无法分类的语句

消息在这一行:Module subroutine Pro_Baz

这个程序有什么问题?

【问题讨论】:

  • 您使用的是支持子模块的 gfortran (6.0+) 版本吗?
  • 该项目是在 CodeBlocks 16.01 中创建的,但我现在不知道哪个版本的 gfortran 包含在该 IDE 中。

标签: fortran gfortran


【解决方案1】:

version 6.0 中的 gfortran 中引入了对子模块的编译器支持。

在接口块中,以module subroutine ... 开头的接口主体特定于子模块设施。因此,对这个接口主体的不可分类语句的抱怨表明缺乏对子模块的理解。编译器不会等着抱怨到达submodule 语句。

与 Code::Blocks 16.01 appears to be 4.9.2 捆绑的 gcc/gfortran 版本。

您需要安装和配置 IDE 以使用更新版本的编译器。无论您是使用带有捆绑默认编译器的 Windows 版本,还是使用带有单独编译器安装的任何操作系统上的版本,这都是如此。

【讨论】:

  • 感谢您的回答,但您能否提供 GCC 6 下载的链接,因为我找不到那个地方?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-02
  • 2011-03-05
  • 1970-01-01
  • 1970-01-01
  • 2012-10-22
  • 1970-01-01
  • 2013-03-19
相关资源
最近更新 更多