その他の変更

NetCDF-2に対応する関数が存在しない、新しい関数がNetCDF-3には2つある。 nc_inq_libvers nc_strerror である。現行のNetCDFライブラリは nc_inq_libvers の文字列として返される。NetCDF関数の呼び出しによって返された状態に対応するエラーメッセージは関数 nc_strerror によって記号列として返される。

新しい NC_SHARE フラグはアクセスのデフォルトバッファを防ぐために、 nc_open 又は nc_create 呼び出しで使用できる。 NC_SHARE を使用することによってNetCDFファイルに同時にアクセスすれば、ディスクのアップデートが同期であることを確認するために、アクセスが終了するたび毎に nc_sync を呼び出す必要が無い。従属的なデータ(例えば属性値)への変更にも注意しなければならない。 なぜならば、これらは NC_SHARE フラグを使用しても自動的に伝達されないからである。 このためには、まだ nc_sync 関数が必要である。

2版のインターフェースの問い合わせ関数は一つしかなく、 ncvarinq によって名前、型、変数の形を得ていた。同様に、 次元・属性・NetCDFファイルに関する情報を得る関数も一つしか無かった。 この情報の部分集合が得る場合には、不必要な情報を押さえる為にNULL 引数を与えなければならなかった。新しいインターフェースでは、新たな問い合わせ関数ができ、これらの項目を個別に返す。それによって引数の数え損ねによるエラーが起こりにくくなった。

以前の実装では ncvarput ncvarget 呼び出し中で 0値のカウント要素が 指定されているとエラーが返された。 この制約がはずされたことによって、 nc_put_var nc_get_var の一族の関数が0 値のカウント要素を使って呼び出せることになった。これはデータがアクセスされないことを意味し、一見、無意味のように思われるが、0値のカウントを特殊なケースとして扱わなくて良いので、プログラムによっては単純になります。

以前の実装ではncvardef中の変数の形を指定するのに同じ次元を2回以上使用するとエラーが返されました。 自己相関マトリクスなど同じ次元を2度使用することに意味のある良い例があるので、この制約はNetCF-3実装では緩められた。

新しいインターフェースでは、 nc_put_varm nc_get_varm 族の関数に対する imap 引数の単位は 、望まれる内部データ型のデータ要素の数によって表わされ、NetCDF2版のマップされたアクセスインターフェースのようにバイトでは表わされない。

下記はNetCD-2の関数名と対応するNetCDF-3関数の対応表です。 NetCDF-2関数の引数のリストはNetCDF-2 User's Guideに載っています。

 

ncabort

nc_abort

ncattcopy

nc_copy_att

ncattdel

nc_del_att

ncattget

nc_get_att_double, nc_get_att_float, nc_get_att_int, nc_get_att_long, nc_get_att_schar, nc_get_att_short, nc_get_att_text, nc_get_att_uchar

ncattinq

nc_inq_att, nc_inq_attid, nc_inq_attlen, nc_inq_atttype

ncattname

nc_inq_attname

ncattput

nc_put_att_double, nc_put_att_float, nc_put_att_int, nc_put_att_long, nc_put_att_schar, nc_put_att_short, nc_put_att_text, nc_put_att_uchar

ncattrename

nc_rename_att

ncclose

nc_close

nccreate

nc_create

ncdimdef

nc_def_dim

ncdimid

nc_inq_dimid

ncdiminq

nc_inq_dim, nc_inq_dimlen, nc_inq_dimname

ncdimrename

nc_rename_dim

ncendef

nc_enddef

ncinquire

nc_inq, nc_inq_natts, nc_inq_ndims, nc_inq_nvars, nc_inq_unlimdim

ncopen

nc_open

ncrecget

(none)

ncrecinq

(none)

ncrecput

(none)

ncredef

nc_redef

ncsetfill

nc_set_fill

ncsync

nc_sync

nctypelen

(none)

ncvardef

nc_def_var

ncvarget

nc_get_vara_double, nc_get_vara_float, nc_get_vara_int, nc_get_vara_long, nc_get_vara_schar, nc_get_vara_short, nc_get_vara_text, nc_get_vara_uchar

ncvarget1

nc_get_var1_double, nc_get_var1_float, nc_get_var1_int, nc_get_var1_long, nc_get_var1_schar, nc_get_var1_short, nc_get_var1_text, nc_get_var1_uchar

ncvargetg

nc_get_varm_double, nc_get_varm_float, nc_get_varm_int, nc_get_varm_long, nc_get_varm_schar, nc_get_varm_short, nc_get_varm_text, nc_get_varm_uchar,

nc_get_vars_double, nc_get_vars_float, nc_get_vars_int, nc_get_vars_long, nc_get_vars_schar, nc_get_vars_short, nc_get_vars_text, nc_get_vars_uchar

ncvarid

nc_inq_varid

ncvarinq

nc_inq_var, nc_inq_vardimid, nc_inq_varname, nc_inq_varnatts, nc_inq_varndims, nc_inq_vartype

ncvarput

nc_put_vara_double, nc_put_vara_float, nc_put_vara_int, nc_put_vara_long, nc_put_vara_schar, nc_put_vara_short, nc_put_vara_text, nc_put_vara_uchar

ncvarput1

nc_put_var1_double, nc_put_var1_float, nc_put_var1_int, nc_put_var1_long, nc_put_var1_schar, nc_put_var1_short, nc_put_var1_text, nc_put_var1_uchar

ncvarputg

nc_put_varm_double, nc_put_varm_float, nc_put_varm_int, nc_put_varm_long, nc_put_varm_schar, nc_put_varm_short, nc_put_varm_text, nc_put_varm_uchar,

nc_put_vars_double, nc_put_vars_float, nc_put_vars_int, nc_put_vars_long, nc_put_vars_schar, nc_put_vars_short, nc_put_vars_text, nc_put_vars_uchar

ncvarrename

nc_rename_var

(none)

nc_inq_libvers

(none)

nc_strerror