use netcdftype(NC_FILE):: file type(NC_ERROR):: status character(len = 任意):: filename logical:: overwrite, writable, fail
subroutine Create(file, filename, [overwrite,] [fail]) subroutine Open(file, filename, [writable,] [fail]) type(NC_FILE) function NetcdfCreateFile(file, filename, [overwrite]) type(NC_FILE) function NetcdfOpenFile(file, filename, [writable])
! 定義モード操作 subroutine DefineMode(file, fail) subroutine DataMode(file, fail)
netcdf モジュールを通じて提供される NC_FILE 構造型は netCDF ファイルの抽象的化です。
ファイル構造体の値を構成するには通常 NC_FILE 構造体を引数にとって Open または Create サブルーチンを呼び出します。 Create サブルーチンはファイルを作成します。 Create サブルーチンに overwrite=.FALSE. 引数があれば、作成しようとしている名前のファイルが既に存在する場合 エラーとなります。 省略時には overwrite=.TRUE. が想定されます。 Open サブルーチンは既存のファイルを開きます。 Open サブルーチンに writable=.TRUE. 引数があれば、書き込みを前提としてファイルを開こうとします。 省略時には writable=.FALSE. が想定されます。 Close サブルーチンは開かれたファイルを閉じます。
これらのサブルーチンのエラー処理は単純です。もし fail 引数が与えられていれば実引数は失敗したとき真、 成功したとき偽に確定します。 もし fail 引数が与えられていなければエラー時にはプログラムの実行が終了します。 上記の例で掲げたエラーの処理法については netcdf_error(3f) を参照してください。 特に理由がなければ Assert(status) サブルーチンを呼び出すことが推奨されます。 (エラーの場合プログラムはメッセージを表示して停止する)
NetCDF ファイルには定義モードとそうでない状態があります。 定義モードではファイルのレイアウトを決定する作業、 たとえば次元・変数・属性の追加を行い、 変数・属性への書き込みは定義モードを終了したあとで行います。 ファイルを新規に作成した直後は定義モードです。 既存のファイルを開いた直後は定義モードではありません。 定義モードを終了するためには DataMode(file,fail) ファイルを定義モードにするためには DefineMode(file,fail) サブルーチンを呼び出します。
ファイルから情報を取り出す関数が以下のように用意されています。 ファイルの 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))