Up|<<Prev|Next>>


型変換

新しいインターフェースにおいては、どのような数値型へ、又は数値型からの自動変換も提供されているので、ユーザーは数値変数の外部データ型を知っている必要はありません。この特徴を使って、コードを外部データ型に依存しないようにして簡単にすることができます。 type punning の排除することによって、 以前のインターフェースでは起こりえた幾つかの種類の型エラーを防げるようになりました。変数の外部データ型を扱うに際にプログラムを変更する必要が無いために、新しいインターフェースはプログラムをより強固にすることが出来ます。

外部数値型からの変換が必要な場合はライブラリによって扱われます。この自動変換機能と外部データ表記の内部データ型からの分離はNetCDF4版においてより重要になります。4版では、自然に対応する内部データ型が存在しない圧縮データ(例えば11ビット値の配列) 用の新しい外部データ型が用意される予定です。

ある数値型から他の型に変換する操作は、ターゲットの型が変換された値を表現できない場合にエラーがを引き起こします。(NetCDF-2においては、そのようなオーバーフローはXDR階層でのみ起こり得ました。)例えば、 REAL は外部では NF_DOUBLE (IEEE浮動小数点数)として格納されているデータをもつことが出来ないかもしれません。値の配列をアクセスする際には、表現し得る範囲を超えた値が一つ又はそれ以上ある場合には、 NF_ERANGE エラーが返されますが、他の値は正しく変換されます。

型変換において、単に精度のロスが生じただけではエラーが返されないことに注意してください。そのため、例えばINTEGERに 二倍精度の値を読み込んだ場合には、その二倍精度の値の大きさがプラットフォーム上の INTEGERsで表現できる範囲を超えない限りエラーは生じません。 同様に、仮数部分に整数のビットを全て収めることの出来ない REAL に大きな整数を読み込み、精度が失われてもエラーは生じません。このような精度のロスを防ぐためには、アクセスする変数の外部データ型を確認し、それと互換性のある内部データ型を使用しましょう。

新しいインターフェースはテキスト列を表現する文字配列と小さい整数を表わす8ビットバイトの配列とを区別します。このインターフェースはテキスト列のための CHARACTER and INT1、そして 1バイト整数の内部データ型をサポートします。


Up|<<Prev|Next>>