====== モジュールサブローチンの基本形 ====== ===== モジュールサブルーチンの記述方法 ===== **モジュール副プログラム**は、モジュールの中に書かれたサブルーチンと関数であり、これらのモジュールサブルーチン、モジュール関数と呼ぶ。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文 ===== ===== 実引数と仮引数 =====