関数 nc_def_var は定義モードにある開かれたNetCDFファイルに新たに変数を追加します。NetCDFID・変数名・変数方・次元数・次元IDのリストを与えると、(引数として)変数IDを返します。
int nc_def_var (int ncid, const char *name, nc_type xtype,
int ndims, const int dimids[], int *varidp);
この例では nc_def_var を使用して、新しい foo.nc という名前のNetCDFファイル中に、 time , lat , and lon の3つの次元を持つ、変数名 rh のダブル型の変数を生成します:
#include <netcdf.h>
...
int status; /* エラーステータス */
int ncid; /* NetCDF ID */
int lat_dim, lon_dim, time_dim; /* 次元 ID */
int rh_id; /* 変数 ID */
int rh_dimids[3]; /* 変数の形 */
...
status = nc_create("foo.nc", NC_NOCLOBBER, &ncid);
if (status != NC_NOERR) handle_error(status);
...
/* 次元の定義 */
status = nc_def_dim(ncid, "lat", 5L, &lat_dim);
if (status != NC_NOERR) handle_error(status);
status = nc_def_dim(ncid, "lon", 10L, &lon_dim);
if (status != NC_NOERR) handle_error(status);
status = nc_def_dim(ncid, "time", NC_UNLIMITED, &time_dim);
if (status != NC_NOERR) handle_error(status);
...
/* 変数の定義 */
rh_dimids[0] = time_dim;
rh_dimids[1] = lat_dim;
rh_dimids[2] = lon_dim;
status = nc_def_var (ncid, "rh", NC_DOUBLE, 3, rh_dimids, &rh_id);
if (status != NC_NOERR) handle_error(status);