在gfortran中创建子模块

时间:2017-03-29 21:26:06

标签: fortran gfortran

这是代码:

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的子模块,当我启动这个程序时,我得到了一条消息:

错误:无法分类的陈述

消息在这一行:模块子程序Pro_Baz

这个程序有什么问题?

1 个答案:

答案 0 :(得分:0)

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

在接口块中,以module subroutine ...开头的接口主体特定于子模块工具。因此,对该接口主体的无法分类的声明的抱怨表明缺乏对子模块的理解。编译器没有等到达到submodule语句时抱怨。

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

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