関数 nc_copy_att は開かれたNetCDFファイルから他のファイルへ属性をコピーします。また同じNetCDF内で、ある変数の属性を別の変数にコピーするときにも使えます。
int nc_copy_att (int ncid_in, int varid_in, const char *name,
この例では、 nc_copy_att を使って 、既存の foo.nc というNetCDFファイルにおける変数 rh から変数属性 units をコピーして、他の既存の bar.nc というNetCDFファイルの変数 avgrh に貼り付ける。変数 avgrh は既に存在するが、属性 units はまだ持っていないと仮定する。
#include <netcdf.h>
...
int status; /* エラーステータス */
int ncid1, ncid2; /* NetCDF ID */
int rh_id, avgrh_id; /* 変数IDs */
...
status = nc_open("foo.nc", NC_NOWRITE, ncid1);
if (status != NC_NOERR) handle_error(status);
status = nc_open("bar.nc", NC_WRITE, ncid2);
if (status != NC_NOERR) handle_error(status);
...
status = nc_inq_varid (ncid1, "rh", &rh_id);
if (status != NC_NOERR) handle_error(status);
status = nc_inq_varid (ncid2, "avgrh", &avgrh_id);
if (status != NC_NOERR) handle_error(status);
...
status = nc_redef(ncid2); /* 定義モードに入る */
if (status != NC_NOERR) handle_error(status);
/* 変数属性を "rh" からコピーして "avgrh"に貼り付ける */
status = nc_copy_att(ncid1, rh_id, "units", ncid2, avgrh_id);
if (status != NC_NOERR) handle_error(status);
...
status = nc_enddef(ncid2); /* 定義モードを抜ける */
if (status != NC_NOERR) handle_error(status);