目次

モジュールサブローチンの基本形

モジュールサブルーチンの記述方法

モジュール副プログラムは、モジュールの中に書かれたサブルーチンと関数であり、これらのモジュールサブルーチン、モジュール関数と呼ぶ。list3_2.f90に例を示す。

| list3_2.f90
module subprog                          !モジュールの宣言
  implicit none                         !この宣言は必ず行う
  contains                              !この後にサブルーチンや関数を記述する 
  subroutine swap(a, b)                 !サブルーチンの開始行
    !implicit none                      !上記のimplicit文でモジュール内を設定
    integer a,b
    integer tmp                         !主プログラムのtmpとは実態違う
    tmp = a
    a = b
    b = tmp
  end subtoutine swap                   !サブルーチンの終了行
end module subprog                      !モジュールの終了行
 
program exchange                        !主プログラム
  use subprog                           !モジュールsubprogの使用宣言
  implicit none                         !この宣言は必ず行う
  integer :: x=77, y=9095, tmp=0        !初期値設定と整数型変数を宣言
  write(*,*) 'x, y, tmp = ',x, y, tmp   !確認のための出力
  call swap(x, y)                       !モジュールサブルーチンを呼ぶ(x,yは実引数)
  write(*,*) 'x, y, tmp = ',x, y, tmp   !確認のための出力
end program exchange                    !主プログラムの終了行
list3_2.f90のようにモジュールは主プログラムよりも上位に記述すること

モジュールの記述形式は、以下のようになる。

module モジュールの名前
  ... (モジュールの内容)
end module



サブルーチンの記述形式は、以下のようになる。

subroutine サブルーチン名(仮引数, 仮引数, 仮引数 ...)
  ... (サブルーチンの内容)
end subroutine サブルーチン名



モジュールサブルーチンを記述する場合には、モジュール内にcontains文を書き、その後にサブルーチンを書く。contains文は、対になるend文を持たない単独の文である。

contains文の後には、複数のサブルーチンや関数を書くことができる。

contain文よりも前に書かれたimplicit none漸減は、contains文以下でもm有効であるので、サブルーチン内におけるimplicit none宣言は省略可能である。

サブルーチンを含むモジュールの基本的な構造は次のようになる。

モジュールサブルーチンの記述形式

module モジュールの名称
  implicit none
  contains
    subroutine サブルーチン名(仮引数, 仮引数, 仮引数 ...)
      !... (サブルーチンの内容)
    end subroutine サブルーチン名
 
      !... (他のサブルーチンを同様に記述)
 
end module モジュールの名称

モジュールサブルーチンの利用方法

return文

実引数と仮引数