松本 敏郎(名古屋大学大学院工学研究科機械理工学専攻)
Fortranソースファイルの作成
複数のFortranのソースファイルからなるアプリケーションの作成の例を示す.
以下の3つのソースファイルを適当なエディタで作成し,それぞれmain.f90, data.f90, sub.f90と名前をつけて保存することにする.
main.f90
! メインプログラム
program main
use data
implicit none
real(kind=dp) :: a,b
call sub(pi,a,b)
write(*,'(a,e15.8,2x,a,e15.8)') 'a=',a,'b=',b
end program main
|
sub.f90
! サブルーチン
subroutine sub(x,y,z)
use data
implicit none
real(kind=dp), intent(in) :: x
real(kind=dp), intent(out) :: y,z
y=x*x
z=y+x
return
end subroutine sub
|
data.f90
! モジュールプログラム
module data
implicit none
integer, parameter :: dp = selected_real_kind(p=15, r=307)
real(dp), parameter :: pi=3.14159265358979_dp
end module data
|
これらのファイルは,MSYSのホームディレクトリ(C:¥msys¥1.0¥home¥(ユーザー名))の中にtestという名前のフォルダを作成し保存しておく.
さらに,次のMakefileを作成して,同じフォルダtestの中に保存する.
Makefile
FC = gfortran
LD = gfortran
.SUFFIXES : .f90
TARGET = test
SRC = data.f90 \
main.f90 \
sub.f90
OBJ = data.o \
main.o \
sub.o
all: $(TARGET)
$(TARGET): $(OBJ)
_______$(LD) -o $@ $(OBJ)
.f90.o:
_______$(FC) -c $<
clean:
_______rm -f *.o *~ *.mod core
|
ただし,
_______
の部分はタブ1文字である.
Makefileの作成においては,モジュールの依存関係を考慮してSRCとOBJのファイルリストの順番を書くようにする.
この例の場合は,まずモジュールをコンパイルしてdata.modを作成し,これがmain.f90とsub.f90のコンパイルの際に読み込まれるので,上のような順番にしておく必要がある.