x********3 发帖数: 566 | 1 现在有一个比较大的Fortran程序,好几百个个common块被在不同组合后,被好几百个
子程序使用,现在需要改写这个程序,每次这些common块都比较麻烦,改变一个往往的
一个一个子程序找着挨个儿改。想用module封装一下,可是觉得这样做了之后觉得每个
module里就列出几十个全局变量,似乎也没有好很多。而且工作量似乎很大,因为每个
common块在不同子程序中的变量名可能不一样,比如
在子程序A: common /blk1/ v1,v2,v3
在子程序B: common /blk1/ u1,u2,u3
这样一来,觉得动作还是比较大的,不知道有没有好的办法,大家给指点一下。谢谢了
。 | O******e 发帖数: 734 | 2 module blk1
integer,parameter::n=. . .
real,dimension(1:n),public::w1,w2,w3
end module blk1
subroutine a(. . .)
use blk1,only:v1=>w1,v2=>w2,v3=>w3
. . .
return
end subroutine a
subroutine b(. . .)
use blk1,only:u1=>w1,u2=>w2,u3=>w3
. . .
return
end subroutine b
【在 x********3 的大作中提到】 : 现在有一个比较大的Fortran程序,好几百个个common块被在不同组合后,被好几百个 : 子程序使用,现在需要改写这个程序,每次这些common块都比较麻烦,改变一个往往的 : 一个一个子程序找着挨个儿改。想用module封装一下,可是觉得这样做了之后觉得每个 : module里就列出几十个全局变量,似乎也没有好很多。而且工作量似乎很大,因为每个 : common块在不同子程序中的变量名可能不一样,比如 : 在子程序A: common /blk1/ v1,v2,v3 : 在子程序B: common /blk1/ u1,u2,u3 : 这样一来,觉得动作还是比较大的,不知道有没有好的办法,大家给指点一下。谢谢了 : 。
|
|