関数 NF_COPY_ATT は開かれたNetCDFファイルから他のファイルへ属性をコピーします。また同じNetCDF内で、ある変数の属性を別の変数にコピーするときにも使えます。
INTEGER FUNCTION NF_COPY_ATT (INTEGER NCID_IN, INTEGER VARID_IN,
CHARACTER*(*) NAME, INTEGER NCID_OUT,
エラーが発生していなければ、 NF_COPY_ATT は NF_NOERR の値を返します。 それ以外の場合には、返されたステータスがエラーを示します。エラーの原因として次のようなものが考えられます。
この例では、 NF_COPY_ATT を使って 、既存の foo.nc というNetCDFファイルにおける変数 rh から変数属性 units をコピーして、他の既存の bar.nc というNetCDFファイルの変数 avgrh に貼り付ける。変数 avgrh は既に存在するが、属性 units はまだ持っていないと仮定する。
INCLUDE 'netcdf.inc'
...
INTEGER STATUS ! エラーステータス
INTEGER NCID1, NCID2 ! NetCDF ID
INTEGER RHID, AVRHID !変数ID
...
STATUS = NF_OPEN ('foo.nc', NF_NOWRITE, NCID1)
IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
STATUS = NF_OPEN ('bar.nc', NF_WRITE, NCID2)
IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
...
STATUS = NF_INQ_VARID (NCID1, 'rh', RHID)
IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
STATUS = NF_INQ_VARID (NCID2, 'avgrh', AVRHID)
IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
...
STATUS = NF_REDEF (NCID2) ! 定義モードに入る
IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
! 変数属性を "rh" からコピーして "avgrh"に貼り付ける
STATUS = NF_COPY_ATT (NCID1, RHID, 'units', NCID2, AVRHID)
IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)
...
STATUS = NF_ENDDEF (NCID2) ! 定義モードを抜ける
IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)