モジュールとなったライブラリ集の利用法
以下、長文ですみません。
サブルーチンとか関数に関するプログラム集というものがあり、自分でメインを適当に作ってそれらを呼び出して使うというライブラリ集のようなものがあります。昔からあるもので各言語に応じた本なども多数出版されています。
Fortranなのですが、F77の頃は以下のパターンが1つのファイルで延々と1万行ぐらい続くものです。ファイル名:A.f
----------------
以下の形式のサブルーチン群の羅列
subroutine abc()
いろいろ
return
end
----------------
このようなものは、例えば、
gfortran -c A.f
としてリンクなしでコンパイルし、オブジェクトA.oが出力され、
メインプログラム(B.f)から呼び出す場合、
gfortran B.f -o A.o
とすると、実行形式が出力されます(ここまで前置きが長くてすみません)。
さて、Fortran95だと状況が一変します。
A.f95だと以下のように変更されています(A.fの後継としてのA.f95)。
-------------
module A
interface....
public...
private...
そしてサブルーチン群
subroutine abc()
いろいろ
return
end subroutine abc
end module A
------------
これを
gfortran -c A.f95
とリンクなしでコンパイルすると、A.mod, A.oという2つのファイルが出力されます。
その後、メイン(B.f95)の作成ですが、モジュールA.modを読み込むため、
USE A
を先頭にし,中身をF95のフォーマットにしています。その後、
gfortran B.f95 -o A.o あるいは gfortran B.f95
とするのですが、B.f95からcallしているA.f95の中のサブルーチンが発見できないというエラーになります。これら(A.f95, B.f95, A.o, A.mod)はすべて同一フォルダ内部のファイルです。
ここで万事休すなのですが、何かFortran95の処理で間違っているところがあるでしょうか。私がFortran95の処方を間違っているからではないかと思いますが、対処方法についてもしご存じでしたら、よろしくお願いします。
※カテゴリ違いかもですが、ここしか聞く当てがないと思っています。
お礼
>use や require は、指定されたファイルが既に読み込まれていれば新たに読み込もうとはしませんので、そのような心配は無用です。 それを聞いて安心いたしました。 はっきりとそのように書いてあるものを見たことがなかった(&見つからなかった)ので、助かりました。 どうもありがとうございました。