The function NF_PUT_ATT_ type adds or changes a variable attribute or global attribute of an open netCDF dataset. If this attribute is new, or if the space required to store the attribute is greater than before, the netCDF dataset must be in define mode.
Although it's possible to create attributes of all types, text and double attributes are adequate for most purposes.
INTEGER FUNCTION NF_PUT_ATT_TEXT (INTEGER NCID, INTEGER VARID, CHARACTER*(*) NAME, INTEGER LEN, CHARACTER*(*) TEXT) INTEGER FUNCTION NF_PUT_ATT_INT1 (INTEGER NCID, INTEGER VARID, CHARACTER*(*) NAME, INTEGER XTYPE, LEN, INTEGER*1 I1VALS(*)) INTEGER FUNCTION NF_PUT_ATT_INT2 (INTEGER NCID, INTEGER VARID, CHARACTER*(*) NAME, INTEGER XTYPE, LEN, INTEGER*2 I2VALS(*)) INTEGER FUNCTION NF_PUT_ATT_INT (INTEGER NCID, INTEGER VARID, CHARACTER*(*) NAME, INTEGER XTYPE, LEN, INTEGER IVALS(*)) INTEGER FUNCTION NF_PUT_ATT_REAL (INTEGER NCID, INTEGER VARID, CHARACTER*(*) NAME, INTEGER XTYPE, LEN, REAL RVALS(*)) INTEGER FUNCTION NF_PUT_ATT_DOUBLE(INTEGER NCID, INTEGER VARID, CHARACTER*(*) NAME, INTEGER XTYPE, LEN, DOUBLE DVALS(*))
NCID
VARID
NAME
XTYPE
LEN
TEXT
I1VALS
I2VALS
IVALS
RVALS
DVALS
NF_PUT_ATT_ type 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_PUT_ATT_DOUBLE to add a variable attribute named valid_range for a netCDF variable named rh and a global attribute named title to an existing netCDF dataset named foo.nc:
INCLUDE 'netcdf.inc' ... INTEGER STATUS, NCID INTEGER RHID ! variable ID DOUBLE RHRNGE(2) DATA RHRNGE /0.0D0, 100.0D0/ ... STATUS = NF_OPEN ('foo.nc', NF_WRITE, NCID) IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS) ... STATUS = NF_REDEF (NCID) ! enter define mode IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS) STATUS = NF_INQ_VARID (NCID, 'rh', RHID) IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS) ... STATUS = NF_PUT_ATT_DOUBLE (NCID, RHID, 'valid_range', NF_DOUBLE, & 2, RHRNGE) IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS) STATUS = NF_PUT_ATT_TEXT (NCID, NF_GLOBAL, 'title', 19, 'example netCDF dataset') IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS) ... STATUS = NF_ENDDEF (NCID) ! leave define mode IF (STATUS .NE. NF_NOERR) CALL HANDLE_ERR(STATUS)