Fortran将模块拆分为多个文件

时间:2015-01-25 07:48:40

标签: fortran

我有这样的事情:

Module ModA
    contains
    subroutine FooA()
       ....
    end subroutine
    subroutine FooB()
       ....
    end subroutine
end mofule ModA

我可以将两个子程序分别放在一个单独的文件中,但它们都属于同一个模块。

1 个答案:

答案 0 :(得分:4)

是。你有两个选择。

第一种是简单地用模块子程序部分中的子程序源包含文件。

! Module.f90
MODULE ModA
CONTAINS
  INCLUDE 'FooA.f90'
  INCLUDE 'FooB.f90'
END MODULE ModA

! FooA.f90
SUBROUTINE FooA()
!...
END SUBROUTINE FooA

! FooB.f90
SUBROUTINE FooB()
!...
END SUBROUTINE FooB

第二个选项是将每个子程序移动到它自己的子模块中。

MODULE ModA
  INTERFACE
    MODULE SUBROUTINE FooA()
    END MODULE SUBROUTINE FooA
    MODULE SUBROUTINE FooB()
    END MODULE SUBROUTINE FooB()
  END INTERFACE
END MODULE ModA

! FooA.f90 (or whatever name you prefer)
SUBMODULE (ModA) FooA_submodule
CONTAINS
  MODULE PROCEDURE FooA
  !...
  END PROCEDURE FooA
END SUBMODULE FooA_submodule

! FooB.f90 (or whatever name you prefer).
SUBMODULE (ModA) FooB_submodule
CONTAINS
  MODULE PROCEDURE FooB
  !...
  END MODULE PROCEDURE FooB
END SUBMODULE FooB_submodule

但是您需要使用Fortran编译器来支持此选项的Fortran 2008子模块功能。