その他の変更

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

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

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

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

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

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

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

 

NCABOR

NF_ABORT

NCACPY

NF_COPY_ATT

NCADEL

NF_DEL_ATT

NCAGT

NF_GET_ATT_DOUBLE, NF_GET_ATT_REAL, NF_GET_ATT_INT, NF_GET_ATT_INT1, NF_GET_ATT_INT2

NCAGTC

NF_GET_ATT_TEXT

NCAINQ

NF_INQ_ATT, NF_INQ_ATTID, NF_INQ_ATTLEN, NF_INQ_ATTTYPE

NCANAM

NF_INQ_ATTNAME

NCAPT

NF_PUT_ATT_DOUBLE, NF_PUT_ATT_REAL, NF_PUT_ATT_INT, NF_PUT_ATT_INT1, NF_PUT_ATT_INT2

NCAPTC

NF_PUT_ATT_TEXT

NCAREN

NF_RENAME_ATT

NCCLOS

NF_CLOSE

NCCRE

NF_CREATE

NCDDEF

NF_DEF_DIM

NCDID

NF_INQ_DIMID

NCDINQ

NF_INQ_DIM, NF_INQ_DIMLEN, NF_INQ_DIMNAME

NCDREN

NF_RENAME_DIM

NCENDF

NF_ENDDEF

NCGOPT

(none)

NCINQ

NF_INQ, NF_INQ_NATTS, NF_INQ_NDIMS, NF_INQ_NVARS, NF_INQ_UNLIMDIM

NCOPN

NF_OPEN

NCPOPT

(none)

NCREDF

NF_REDEF

NCSFIL

NF_SET_FILL

NCSNC

NF_SYNC

NCTLEN

(none)

NCVDEF

NF_DEF_VAR

NCVG1C

NF_GET_VAR1_TEXT

NCVGGC

NF_GET_VARM_TEXT, NF_GET_VARS_TEXT

NCVGT

NF_GET_VARA_DOUBLE, NF_GET_VARA_REAL, NF_GET_VARA_INT, NF_GET_VARA_INT1, NF_GET_VARA_INT2

NCVGT1

NF_GET_VAR1_DOUBLE, NF_GET_VAR1_REAL, NF_GET_VAR1_INT, NF_GET_VAR1_INT1, NF_GET_VAR1_INT2

NCVGTC

NF_GET_VARA_TEXT

NCVGTG

NF_GET_VARM_DOUBLE, NF_GET_VARM_REAL, NF_GET_VARM_INT, NF_GET_VARM_INT1, NF_GET_VARM_INT2, NF_GET_VARS_DOUBLE, NF_GET_VARS_REAL, NF_GET_VARS_INT, NF_GET_VARS_INT1, NF_GET_VARS_INT2

NCVID

NF_INQ_VARID

NCVINQ

NF_INQ_VAR, NF_INQ_VARDIMID, NF_INQ_VARNAME, NF_INQ_VARNATTS, NF_INQ_VARNDIMS, NF_INQ_VARTYPE

NCVP1C

NF_PUT_VAR1_TEXT

NCVPGC

NF_PUT_VARM_TEXT, NF_PUT_VARS_TEXT

NCVPT

NF_PUT_VARA_DOUBLE, NF_PUT_VARA_REAL, NF_PUT_VARA_INT, NF_PUT_VARA_INT1, NF_PUT_VARA_INT2

NCVPT1

NF_PUT_VAR1_DOUBLE, NF_PUT_VAR1_REAL, NF_PUT_VAR1_INT, NF_PUT_VAR1_INT1, NF_PUT_VAR1_INT2

NCVPTC

NF_PUT_VARA_TEXT

NCVPTG

NF_PUT_VARM_DOUBLE, NF_PUT_VARM_REAL, NF_PUT_VARM_INT, NF_PUT_VARM_INT1, NF_PUT_VARM_INT2, NF_PUT_VARS_DOUBLE, NF_PUT_VARS_REAL, NF_PUT_VARS_INT, NF_PUT_VARS_INT1, NF_PUT_VARS_INT2

NCVREN

NF_RENAME_VAR

(none)

NF_INQ_LIBVERS

(none)

NF_STRERROR