use netcdftype(NC_FILE):: file, oldfile type(NC_ERROR):: status character(len = 任意):: filename logical:: overwrite, writable, fail
subroutine Create(file, filename, [overwrite,] [fail]) subroutine Open(file, filename, [writable,] [fail]) subroutine Open(file, oldfile)
! 定義モード操作 subroutine DefineMode(file, fail) subroutine DataMode(file, fail)
logical operator(.error. file)
netcdf モジュールを通じて提供される NC_FILE 構造型は netCDF ファイルの抽象的化です。
ファイル構造体の値を構成するには通常 NC_FILE 構造体を引数にとって Open または Create サブルーチンを呼び出します。 Create サブルーチンはファイルを作成します。 Create サブルーチンに overwrite=.FALSE. 引数があれば、作成しようとしている名前のファイルが既に存在する場合 エラーとなります。 省略時には overwrite=.TRUE. が想定されます。 Open サブルーチンは既存のファイルを開きます。 Open サブルーチンに writable=.TRUE. 引数があれば、書き込みを前提としてファイルを開こうとします。 省略時には writable=.FALSE. が想定されます。 Close サブルーチンは開かれたファイルを閉じます。
これらのサブルーチンのエラー処理は単純です。もし fail 引数が与えられていれば実引数は失敗したとき真、 成功したとき偽に確定します。 もし fail 引数が与えられていなければエラー時にはプログラムの実行が終了します。 ファイルの作成に失敗した場合、不正な値を持った type(NC_FILE) 構造体が作成されます。 不正な値の検出には .error. 演算子を用います。
エラー検出時の処理は netcdf_error(3f) を参照してください。 特に理由がなければ NetcdfAssert サブルーチンを呼び出すことが推奨されます。 (エラーの場合プログラムはメッセージを表示して停止する)
NetCDF ファイルには定義モードとそうでない状態があります。 定義モードではファイルのレイアウトを決定する作業、 たとえば次元・変数・属性の追加を行い、 変数・属性への書き込みは定義モードを終了したあとで行います。 ファイルを新規に作成した直後は定義モードです。 既存のファイルを開いた直後は定義モードではありません。 定義モードを終了するためには DataMode(file,fail) ファイルを定義モードにするためには DefineMode(file,fail) サブルーチンを呼び出します。
ファイルから情報を取り出す関数が以下のように用意されています。 ファイルの netCDF ID は Id(file) によって知られます。 ファイルの名前を含んだ VARYING_STRING 構造体は Filename(file) によって与えられます。
! ファイルの新規作成 call Create(file, filename, overwrite=.TRUE.) ! ファイルを開く call Open(file, filename, writable=.TRUE.)! ファイルを閉じる call Close(file)
NC_FILE 構造体は netcdf_file モジュールで定義されています。 しかし通常は netcdf モジュールを呼び出すべきです。
NetCDF ライブラリでは同じファイルを複数回書き込み可能で開くことは できませんでした。 netcdf_file モジュールの Open 手続は現在開かれているファイルのリストを管理しているため、 同じファイル名のファイルを複数回書き込み可能で開くことができます。
同じファイルかどうかの判定はファイル名を文字列として比較しています。 文字列として異なるファイル名を用いて複数回ファイルを開くと 問題が生じることがあります。 たとえば、同時に書き込み可能で開くことができません。