The function NF_COPY_ATT copies an attribute from one open netCDF dataset to another. It can also be used to copy an attribute from one variable to another within the same netCDF.
INTEGER FUNCTION NF_COPY_ATT (INTEGER NCID_IN, INTEGER VARID_IN, CHARACTER*(*) NAME, INTEGER NCID_OUT, INTEGER VARID_OUT)
NCID_IN
VARID_IN
NAME
NCID_OUT
VARID_OUT
NF_COPY_ATT returns the value NF_NOERR if no errors occurred. Otherwise, the returned status indicates an error. Possible causes of errors include:
Here is an example using NF_COPY_ATT to copy the variable attribute units from the variable rh in an existing netCDF dataset named foo.nc to the variable avgrh in another existing netCDF dataset named bar.nc, assuming that the variable avgrh already exists, but does not yet have a units attribute:
INCLUDE 'netcdf.inc' ... INTEGER STATUS ! error status INTEGER NCID1, NCID2 ! netCDF IDs INTEGER RHID, AVRHID ! variable IDs ... 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) ! enter define mode IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS) ! copy variable attribute from "rh" to "avgrh" STATUS = NF_COPY_ATT (NCID1, RHID, 'units', NCID2, AVRHID) IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS) ... STATUS = NF_ENDDEF (NCID2) ! leave define mode IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)