Attributes
This page describles procedures handling NetCDF attributes.
See the improvements page for an explanation of the mnemonics “basic change”, “interface change”, “functionality change”, “additional procedure”.
nf95_copy_att
(basic change)
subroutine nf95_copy_att(ncid_in, varid_in, name, ncid_out, varid_out, ncerr)
integer, intent( in):: ncid_in, varid_in
character(len=*), intent( in):: name
integer, intent( in):: ncid_out, varid_out
integer, intent(out), optional:: ncerr
Reference:
nf90_copy_att
nf95_get_att
(functionality change)
subroutine nf95_get_att(ncid, varid, name, values, ncerr)
integer, intent( in) :: ncid, varid
character(len = *), intent( in) :: name
character(len = *), integer(any kind) or real(any kind), intent(out) :: values
integer, intent(out), optional:: ncerr
nf95_get_att
is more secure than nf90_get_att
. For an argument
values
of type character
, nf95_get_att
checks that the values
argument is long enough and removes the null terminator, if any. For a
numeric scalar values
argument, nf95_get_att
checks that the
attribute contains a single value.
Reference:
nf90_get_att
nf95_get_missing
(additional procedure)
subroutine nf95_get_missing(ncid, varid, missing)
integer, intent(in):: ncid, varid
real or double precision or integer of any kind, or character, intent(out):: missing
! missing or fill value
The procedure first checks that the type of argument missing
is the
same as the type of the NetCDF variable. The procedure returns the
missing_value
or _FillValue
attribute if one of them is present,
else the nf95_fill_type
constant corresponding to the type of
argument missing
. If both missing_value
and _FillValue
are
present then the procedure checks that they are equal.
nf95_inq_attname
(interface change)
subroutine nf95_inq_attname(ncid, varid, attnum, name, ncerr)
integer, intent(in):: ncid, varid, attnum
character(len = :), allocatable, intent(out):: name
integer, intent(out), optional:: ncerr
The argument name has dynamic (deferred) length in nf95_inq_attname
instead of assumed length in nf90_inq_attname
. So you do not have to
worry about a maximum length for the corresponding actual argument:
just declare it also as character(len = :), allocatable
.
nf95_inquire_attribute
(interface change)
subroutine nf95_inquire_attribute(ncid, varid, name, xtype, nclen, attnum, &
ncerr)
integer, intent( in) :: ncid, varid
character (len = *), intent( in) :: name
integer, intent(out), optional :: xtype, nclen, attnum
integer, intent(out), optional:: ncerr
The argument for the number of values or characters of the attribute is
called nclen
in nf95_inquire_attribute
, instead of len
in
nf90_inquire_attribute
. len
is not a good choice for a variable name
because it is the name of a Fortran intrinsic procedure.
Reference:
nf90_inquire_attribute
nf95_put_att
(basic change)
subroutine nf95_put_att(ncid, varid, name, values, ncerr)
integer, intent(in) :: ncid, varid
character(len = *), intent(in) :: name
character(len = *) or integer(any kind) or real(any kind), intent(in) :: values
integer, intent(out), optional:: ncerr
Reference:
nf90_put_att