Up|<<Prev|Next>>


新しい C インターフェース

まず最初にNetCDF-2インターフェースを使った C コードの例です。

void *bufferp;
nc_type xtype;
ncvarinq(ncid, varid, ..., &xtype, ...
...
/* 次元と型に応じて bufferp を配置 */
...
if (ncvarget(ncid, varid, start, count, bufferp) == -1) {
    fprintf(stderr, "Can't get data, error code = %d\n",ncerr);
    /* 対応する */
    ...
}
switch(xtype) {
    /* 型別にデータを扱う */
...
case  NC_FLOAT:
    fanalyze((float *)bufferp);
    break;
case NC_DOUBLE:
    danalyze((double *)bufferp);
    break;
}

同じことを新しいNetCDF-3の C インターフェースを使って扱うとこのようになります。

/*
 * 解析にダブルを使用したい
 */
double dbuf[NDOUBLES];
int status;
 
/* よって、データをダブルとして取得する関数を使用する。 */
status = nc_get_vara_double(ncid, varid, start, count, dbuf)
if (status != NC_NOERR) {
   fprintf(stderr, "Can't get data: %s\n", nc_strerror(status));
    /* 対応する */
    ...
}
danalyze(dbuf);

上の例は関数の名前、データ型の変換、エラーの取り扱い等における変更を表わしています。詳細については後述してあります。


Up|<<Prev|Next>>