====== 基本事項 ======
モジュール副プログラムの使い方をマスターすれば、再利用可能な汎用性の高いプログラムを作成することができる。
===== 複数のプログラム単位から構成されるプログラム =====
参考例としてファイルの入出力を行うためのプログラムを示す。
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
;#;
|
;#;
主プログラム
* **内部副プログラム**
主プログラムの内部および外副プログラムの内部にかかれたもの。