Module nmlfile_mod

Overview

This module support to input NAMELIST.

NAMELIST を取得するための支援モジュールである。 ファイルから NAMELIST を取得する場合に便利な サブルーチンを用意している。 NAMELIST を取得するモジュールおよびプログラムは、 原則的に全てこのモジュールを呼ぶ。

Error Handling

Known Bugs

Note

Future Plans

現在、あるプログラムで読み込む事が可能な NAMELIST ファイルは、 メインプログラムで nmlfile_init(nml) と呼んだ際の nml という ファイル名に固定されてしまう。実行プログラムで引数としてファイル名を 取得したり、標準入力からファイル名を取得するなどして、 再コンパイル無しに NAMELIST ファイルを変更できると良いかもしれない。

Dependency

use type_mod,   only : TOKEN, INTKIND, STRING

Public Interface

private
public :: nmlfile_init, nmlfile_end    ! subroutines
public :: nmlfile_open, nmlfile_close  ! subroutines
public :: nmlfile                      ! functions

Procedure Interface

Initialize module and acquire NAMELIST

nmlfile_mod モジュールの初期化ルーチン。 引数 nml に渡された文字列を NAMELIST ファイル名として格納し、 そのファイルを nmlfile_open で open、 nmlfile_close で close する。

メインプログラムにおいて、他のモジュールの初期化ルーチンよりも先に 呼ばれる事が想定されており、その際に引数 nml に渡された NAMELIST ファイル名を以降 (正確には nmlfile_end が呼ばれるまで)、 他のモジュールでも利用する事となる。

もしも、メインプログラムにおいて呼ばなかった場合や 引数無しで呼ばれた場合、または引数に空白を与えた場合は、 デフォルトの NAMELIST ファイル nmlfile.nml が読み込まれる。

subroutine nmlfile_init(nml)

Dependency

use type_mod,  only: STRING, TOKEN, INTKIND
use dc_trace,  only: BeginSub, EndSub, DbgMessage
use dc_message,only: MessageNotify

Input

character(*), intent(in), optional :: nml  ! NAMELIST file name

Open NAMELIST file, and Return Device Number

nmlfile_mod に格納している NAMELIST ファイルを「適当な」装置番号で Open し、その装置番号を nmlunit として返し、readable に .true. を 返す。もしも Open が失敗した、またはファイルが読み取り不可能な 場合には nmlunit に -1 を、readable に .false. を返す。

なお、以前にこのプログラムにて NAMELIST ファイルが Open されている場合、 既に Open されている装置番号を自動的に閉じる。

subroutine nmlfile_open(nmlunit, readable)

Dependency

use type_mod,  only: STRING, TOKEN, INTKIND
use dc_trace,  only: BeginSub, EndSub, DbgMessage
use dc_string, only: CPrintf
use dc_message,only: MessageNotify

Output

integer(INTKIND), intent(out):: nmlunit  ! Device Number for nml file
logical         , intent(out):: readable ! Readable Flag

Close NAMELIST file

nmlfile_open で開いたファイルを Close する。 nmlfile_open が呼ばれていない場合には何もせずに終了する。

subroutine nmlfile_close()

Dependency

use type_mod,  only: STRING, TOKEN, INTKIND
use dc_trace,  only: BeginSub, EndSub, DbgMessage
use dc_string, only: CPrintf
use dc_message,only: MessageNotify

Return NAMELIST file name

character(TOKEN) function nmlfile() result(result)

Dependency

use type_mod,  only: STRING, TOKEN, INTKIND
use dc_trace,  only: BeginSub, EndSub, DbgMessage
use dc_string, only: CPrintf
use dc_message,only: MessageNotify

Terminate module

nmlfile_init で設定された値を破棄し、 読み込む NAMELIST ファイルの名前を nmlfile.nml に戻す。

subroutine nmlfile_end()

Dependency

use type_mod,  only: STRING
use dc_trace,  only: BeginSub, EndSub, DbgMessage