Up|<<Prev|Next>>


3.1 NetCDF 外部データ型

NetCDFインターフェースによってサポートされている外部データ型は以下の通りです。

 

char

テキストを表現するための8ビット文字

byte

符号付、又は符号無しの8ビット整数(下記参照)

short

符号付16ビット整数

int

符号付32ビット整数

float or real

32ビットの不動小数点数

double

64ビットの不動小数点数

これらはデータの精度と個々の値に必要なビット数の駆け引きの幅を広げるために設定されました。これらの外部データ型は任意のマシンや言語の組み合わせによってサポートされている内部データ型から完全に独立しています。

これらのデータ型が「外部」と呼ばれるのはNetCDFデータのポータブル外部表記に対応するからです。あるプログラムがデータを内部変数として読み込む際に、必要であれば指定された内部変数型に変換されます。同様に、内部データ型がNetCDF変数の外部データ型と異なる場合には、内部データをNetCDF変数として書き込む際に、異なる外部データ型に変換されてしまう可能性があります。

外部型と内部型を分離し、自動的に外部-内部タイプ変換をすることにはいくつかの利点があります。数値変数の外部データ型を知らなくても自動的にどのような数値型にも変換できるからです。 この特性を利用して、十分に幅広い範囲の内部データ型を使用することによって外部データ型から独立した 形にコードを単純化したりすることも可能です。即ち、数種類の異なる外部データ型を持つ数値NetCDFデータに関しては2倍精度になります。ある変数の外部データ型が変更されてもプログラムを書き換える必要は無いのです。

外部数値型から、もしくは外部数値型へ変換をする場合にはライブラリに任せます。このように外部データ表記と内部データ型間の変換を自動化し、両者を切り離すことはNetCDFの将来のバージョンにとってはより一層重要な意味を持ちます。圧縮データに新たな外部データ型が加えられ、それに自然に対応する内部データが存在しないケースも出てくるかもしれません。(例えば11ビット値の圧縮配列等)

ある数値型から別の型に変換する場合に、変換された値を表現しきれない型に変換するとエラーが生じます。例えば、内部の短い整数型では外部で整数として格納されているデータを表しきれないでしょう。数値配列にアクセスする際に、表現可能な領域から一つ以上の値がはみ出してしまった場合にはレンジエラーが返されてきます。領域内に収まる他の数値については正常な変換が行われます。

ここで注意して頂きたいのはデータ型の変換に伴う単なる精度の悪化ではエラーが返されないということです。つまり、2倍精度の数値を1倍精度の不動小数点数に変換した場合には、2倍精度の値が変換先のプラットフォームで表現可能な1倍精度の不動小数点数の範囲から逸脱しない限り、エラーは返されません。 同様に、不動小数点数の仮数の有効桁数では表しきれない程の大きな整数値を読み込んだ場合にも、この操作によって失われた精度に対するエラーは返されません。 このような精度のロスを避けるにはアクセスする前に外部データの変数型をチェックし、十分な精度を持つ内部データ型に変換するようにしてください。

基本外部データ型の名前( byte , char , short , int , float 又は real , 及び double)はCDLにおいては予約語です。ですから、変数・次元・属性の名前はこれらを使用してはいけません。

IB yte データは符号付整数値(-128〜127)としても符号無し整数値(0〜255)としても扱うことができます。しかし、 バイトデータ型を他の数値表現型に変換する場合には符号付数値として認識されます。

NetCDF外部データ型と任意の言語のデータタイプとの互換性については変数を参照してください。


Up|<<Prev|Next>>