我正在使用广泛使用 COMMON BLOCKS 来处理这个 F77 代码,并且这些 COMMON BLOCKS 也用于 C 程序(在名称修改之后)。如果 foo(a, b, ...) 是 fortran 代码的主要例程,那么无论如何都要使 COMMON BLOCKS 成为 foo() 的本地程序,以便我可以执行以下操作?
program new_control_routine()
...
call foo(a1,b1,...)
...
call foo(a2,b2,...)
...
end
关键是要多次调用“foo”,每个调用都有独立的公共块,即使这些块具有相同的名称。我知道的唯一方法是在“foo”的第二次调用中重命名 COMMON BLOCKS 和相关子例程,使其成为另一个例程“foo1”,所以我可以这样做:
programe new_control_routine()
...
call foo(a1,b1,...)
...
call foo1(a2,b2,...)
但这肯定是平凡且容易出错的。