====== 基本事項 ====== モジュール副プログラムの使い方をマスターすれば、再利用可能な汎用性の高いプログラムを作成することができる。 ===== 複数のプログラム単位から構成されるプログラム ===== 参考例としてファイルの入出力を行うためのプログラムを示す。 program main !主プログラム implicit none integer :: f1=11, f2=12, i, j, k open(f1, file = 'data1.dat') open(f2, file = 'data2.dat') call read_file(f1, i) !外部サブルーチンの呼び出し call read_file(f1, j) !同上 call read_file(f1, k) !同上 ! ... 処理演算 end program main subroutine read_file(fno,n) !外部サブルーチン implicit none integer fno, n read(fno, *) n write(*,*) n if ( n< 0 ) then write(*,*) 'error negative value' stop endif end subroutine read_file 何度も同じ処理を繰り返す場合には、subroutineとして定義し利用する。 ===== 副プログラムの種類 ===== * **モジュール副プログラム** モジュールの中に書かれたサブルーチンと関数 モジュールと主プログラムは独立したプログラム単位である。このモジュールの中に含まれるサブルーチンや関数を、**モジュール副プログラム**という。 モジュール * 副プログラム1 * 副プログラム2 * ;#; | ;#; 主プログラム * **外部副プログラム** list3_1.f90の例のように主プログラムとは別に書かれた副プログラム 簡単に言えば、モジュール副プログラムをモジュールの外に出したものです。このサブルーチンや関数は、それぞれが独立したプログラム単位となる。 外部副プログラム1 外部副プログラム2 ;#; | ;#; 主プログラム * **内部副プログラム** 主プログラムの内部および外副プログラムの内部にかかれたもの。