Fortran モジュール副プログラム(3),外部副プログラム
3.6 文字列を引数とするモジュール副プログラム
仮引数で
character(*)
と型宣言することで,任意の長さの文字列実引数に対応できる.
文字列変数 title の文字列長さの数値を知るには,組み込み関数lenを用い,len(title)とすればよい.
具体的な文字列を表すには,’name’ または “name” のようにアポストロフィまたは引用符を用いる.
リスト3.19に取り組む
3.7 副プログラム内の自動割付配列と局所変数
リスト3.22を参照.配列の各次元の寸法(インデックスの下限が1でないときは下限値も)も引数で引き渡す.
副プログラム内の局所配列は副プログラムの演算終了後メモリが解放される.これを保持するにはsave属性を付ける.
3.9 モジュールによる変数の共有
定数や変数が宣言されたモジュールをグローバル変数モジュール,その定数や変数をグローバル変数という.
グローバル変数モジュールの使用宣言を行えば(use文),異なるプログラム単位間でグローバル変数を共通に使用できる.
グローバル変数には必ずsave属性を付けるようにするとよい.モジュールを使用するプログラム単位の処理が終了すると,変数のメモリが解放され不定となることがある.
リスト3.29に取り組む
3.11 モジュールの依存関係とコンパイル
これまでのプログラムは単一のファイル内に記述されたが,プログラム単位はそれぞれ別のファイルに記述することもできる.その際,あるモジュールを含むファイルのコンパイルはそのモジュールを使用するプログラム単位を含むファイルのコンパイルより先にコンパイルする必要がある.
演習3.41に取り組む
4.1 外部副プログラムの概要
これまで見てきたモジュールサブルーチンや副プログラムをモジュールの外に出したもので,独立したプログラム単位として扱われる.ただし,引数のチェック(個数,順番,型)がコンパイラによってなされない(ここでは説明しないが,インターフェースモジュールを用意すれば解決できるが)といった欠点がある.モジュール副プログラムはこれらのチェックをコンパイラがしてくれるため,少なくとも小さなプログラムではモジュール副プログラムとするのがお勧めである.