将程序输入保存到模块以供"全局"使用

fro*_*yte 1 fortran fortran90 fortran95

我在Fortran 90中编写了一个程序,它从文本文件中读取数百个输入,并对它们执行许多不同的顺序操作.

我不想继续将这些数百个值传递给每个子程序(有很多!).有没有办法可以将我从此文件中读取的数据保存到任何子程序都可以访问的全局变量中?我想,不知何故,我可以将这些值保存到每个子程序可以调用的模块中,但我不确定如何这样做.

M. *_* B. 5

您只需将变量放入模块中,然后使用每个子例程中的该模块.或者将子程序放在同一个模块中.这是现代Fortran中全局变量的首选方法; 优于普通块.常见块增加了存储序列的不必要的复杂性.原则上,您应该在每个声明中包含SAVE,因为如果模块超出范围,则允许丢失值,也就是说,如果在程序执行期间主程序或任何子程序都没有使用该模块.可能没有编译器实际上这样做.

module my_mod

  real, dimension (100) :: array
  integer :: OneInt

contains

subroutine X

end subroutine X

end module my_mod

program my_prog


use my_mod

read ()  array

call subroutine X

end program my_prog
Run Code Online (Sandbox Code Playgroud)