\documentclass[titlepage]{jarticle}
\title{DCPAM Reference Manual}
\author{GFD Dennou Club}
\begin{document}
\maketitle
\tableofcontents
\clearpage
\section{\label{label:0} Module nmlfile\_mod}

\begin{itemize}
\item Developers: Morikawa Yasuhiro
\item Version: \$Id: nmlfile.f90,v 1.9 2005/01/19 08:52:37 morikawa Exp \$
\item Tag Name: \$Name:  \$
\item Change History: 
\end{itemize}
\subsection{\label{label:1} Overview}

This module support to input NAMELIST.

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

\subsection{\label{label:2} Error Handling}

\subsection{\label{label:3} Known Bugs}

\subsection{\label{label:4} Note}

\subsection{\label{label:5} Future Plans}

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

\subsection{\label{label:6} Dependency}

\begin{verbatim}
use type_mod,   only : TOKEN, INTKIND, STRING
\end{verbatim}
\subsection{\label{label:7} Public Interface}

\begin{verbatim}
private
public :: nmlfile_init, nmlfile_end    ! subroutines
public :: nmlfile_open, nmlfile_close  ! subroutines
public :: nmlfile                      ! functions
\end{verbatim}
\subsection{\label{label:8} Procedure Interface}

\subsubsection{\label{label:9} Initialize module and acquire NAMELIST}

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

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

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

\begin{verbatim}
subroutine nmlfile_init(nml)
\end{verbatim}
\paragraph{\label{label:10} Dependency} \

\begin{verbatim}
use type_mod,  only: STRING, TOKEN, INTKIND
use dc_trace,  only: BeginSub, EndSub, DbgMessage
use dc_message,only: MessageNotify
\end{verbatim}
\paragraph{\label{label:11} Input} \

\begin{verbatim}
character(*), intent(in), optional :: nml  ! NAMELIST file name
\end{verbatim}
\subsubsection{\label{label:12} Open NAMELIST file, and Return Device Number}

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

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

\begin{verbatim}
subroutine nmlfile_open(nmlunit, readable)
\end{verbatim}
\paragraph{\label{label:13} Dependency} \

\begin{verbatim}
use type_mod,  only: STRING, TOKEN, INTKIND
use dc_trace,  only: BeginSub, EndSub, DbgMessage
use dc_string, only: CPrintf
use dc_message,only: MessageNotify
\end{verbatim}
\paragraph{\label{label:14} Output} \

\begin{verbatim}
integer(INTKIND), intent(out):: nmlunit  ! Device Number for nml file
logical         , intent(out):: readable ! Readable Flag
\end{verbatim}
\subsubsection{\label{label:15} Close NAMELIST file}

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

\begin{verbatim}
subroutine nmlfile_close()
\end{verbatim}
\paragraph{\label{label:16} Dependency} \

\begin{verbatim}
use type_mod,  only: STRING, TOKEN, INTKIND
use dc_trace,  only: BeginSub, EndSub, DbgMessage
use dc_string, only: CPrintf
use dc_message,only: MessageNotify
\end{verbatim}
\subsubsection{\label{label:17} Return NAMELIST file name}

\begin{verbatim}
character(TOKEN) function nmlfile() result(result)
\end{verbatim}
\paragraph{\label{label:18} Dependency} \

\begin{verbatim}
use type_mod,  only: STRING, TOKEN, INTKIND
use dc_trace,  only: BeginSub, EndSub, DbgMessage
use dc_string, only: CPrintf
use dc_message,only: MessageNotify
\end{verbatim}
\subsubsection{\label{label:19} Terminate module}

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

\begin{verbatim}
subroutine nmlfile_end()
\end{verbatim}
\paragraph{\label{label:20} Dependency} \

\begin{verbatim}
use type_mod,  only: STRING
use dc_trace,  only: BeginSub, EndSub, DbgMessage
\end{verbatim}

\end{document}
