use netcdftype(NC_FILE):: file type(NC_ERROR):: status character(len = 任意):: filename logical:: overwrite, writable
type(NC_ERROR) function Create(file, filename, [overwrite]) type(NC_ERROR) function Open(file, filename, [writable]) type(NC_FILE) function NetcdfCreateFile(file, filename, [overwrite]) type(NC_FILE) function NetcdfOpenFile(file, filename, [writable])
! 定義モード操作 type(NC_ERROR) function EndDefine(file) type(NC_ERROR) function Redefine(file)
netcdf モジュールを通じて提供される NC_FILE 構造型は netCDF ファイルの抽象的化です。
ファイル構造体の値を構成するには通常 NC_FILE 構造体を引数にとって Open または Create 関数を呼び出します。 ここでは例外的に file 引数は intent(out) になっています。 Create 関数はファイルを作成します。 Create 関数に overwrite=.FALSE. 引数があれば、作成しようとしている名前のファイルが既に存在する場合 エラーとなります。 省略時には overwrite=.TRUE. が想定されます。 Open 関数は既存のファイルを開きます。 Open 関数に writable=.TRUE. 引数があれば、書き込みを前提としてファイルを開こうとします。 省略時には writable=.FALSE. が想定されます。 Close 関数は開かれたファイルを閉じます。
これらの関数の返却値は NC_ERROR 型で、正しくファイルを開くことができれば .error. 演算子を適用させると偽を返します。 上記の例で掲げたエラーの処理法については netcdf_error(3f) を参照してください。 特に理由がなければ Assert(status) サブルーチンを呼び出すことが推奨されます。 (エラーの場合プログラムはメッセージを表示して停止する)
NetCDF ファイルには定義モードとそうでない状態があります。 ファイルを新規に作成した直後は定義モードです。 既存のファイルを開いた直後は定義モードではありません。 ファイルを定義モードではなくするためには EndDefine(file) ファイルを定義モードにするためには Redefine(file) 関数を呼び出します。
ファイルから情報を取り出す関数が以下のように用意されています。 ファイルの netCDF ID は Id(file) によって知られます。 ファイルの名前を含んだ VARYING_STRING 構造体は Filename(file) によって与えられます。
! ファイルの新規作成 status = Create(file, filename, overwrite=.TRUE.) if (.error. status) call put_line(Message(status))! ファイルを開く status = Open(file, filename, writable=.TRUE.) call Assert(status)
! NC_ERROR 型を使わない方法 (作成) file = NetcdfCreateFile(filename) if (.error. file) print *, char(Message(NetcdfLastError()))
! NC_ERROR 型を使わない方法 (開く) file = NetcdfOpenFile(filename) if (.error. file) call Assert(NetcdfLastError()))
! ファイルを閉じる call Assert(Close(file))