現在、私のプログラムには、いくつかのサブプログラムと関数にまたがるいくつかの共通ブロックがあります。変数を追加するときに、共通ブロックのすべてのインスタンスを変更するのを忘れることがあります。これらの共通ブロックをモジュールにして、サブプログラム全体でモジュールのすべてのインスタンスを更新することを心配することなく、変数を 1 か所でモジュールに追加および削除できるようにしたいと考えています。
モジュール内の変数を初期化するプログラムに「use」ステートメントを含める必要がありますか?それとも、モジュールにプログラムを含める必要がありますか? 通常、これには共通ブロックを使用しますが、複雑さが増してもコードが読みやすくなるようにモジュールを実装しようとしています。
注: モジュール内の変数の一部の値は、あるプログラムから別のプログラムに渡されるときに変更できる必要があります。
モジュールに慣れるために簡単なテスト プログラムを作成しようとしましたが、うまく動作しませんでした。私は Fortran 77 に精通していますが、これまでモジュールを使用したことがありません。助けやアドバイスをいただければ幸いです。
gfortran 4.6.1 を使用しています
Main.f
program main
use Words
use Vals
double precision x,y,z
character*5 Greet
integer i
Greet = 'Hello'
x = 4.1
y = 5.2
z = 10.0
i = 3
call foo ()
end program main
subroutine foo ()
use Words
use Vals
print *, Greet
z = x + y
print *, z
print *, i
end subroutine
module Words
character*5 Greet
save
end module
module Vals
double precision x,y
integer int
save
end module