| Path: | gtdata/gtdata_netcdf/gdncvarputattrreal.f90 |
| Last Update: | Mon May 25 18:51:59 +0900 2009 |
Copyright (C) GFD Dennou Club, 2000. All rights reserved
| Subroutine : | |
| var : | type(GD_NC_VARIABLE), intent(in) |
| name : | character(len = *), intent(in) |
| value(:) : | double precision, intent(in) |
| err : | logical, intent(out), optional |
subroutine GDNcVarPutAttrDouble(var, name, value, err)
use gtdata_netcdf_types, only: GD_NC_VARIABLE, GD_NC_VARIABLE_ENTRY
use gtdata_netcdf_internal, only: vtable_lookup
use gtdata_netcdf_file_generic, only: GDNcFileDefineMode
use netcdf_f77, only: NF_PUT_ATT_DOUBLE, NF_NOERR, NF_DEL_ATT, NF_ENOTINDEFINE, NF_DOUBLE, NF_GLOBAL
use dc_url, only: GT_PLUS
use dc_error
implicit none
type(GD_NC_VARIABLE), intent(in):: var
character(len = *), intent(in):: name
double precision, intent(in):: value(:)
logical, intent(out), optional:: err
type(GD_NC_VARIABLE_ENTRY):: ent
integer:: stat
continue
stat = vtable_lookup(var, ent)
if (stat /= 0) goto 999
if (size(value) == 0) then
if (name(1:1) == GT_PLUS) then
stat = nf_del_att(ent%fileid, NF_GLOBAL, name=name(2:))
else
stat = nf_del_att(ent%fileid, ent%varid, name=name)
endif
goto 999
endif
stat = GDNcFileDefineMode(ent%fileid)
if (stat /= NF_NOERR) goto 999
if (name(1:1) == GT_PLUS) then
stat = nf_put_att_double(ent%fileid, NF_GLOBAL, name=name(2:), xtype=NF_DOUBLE, len=size(value), dvals=value)
else
stat = nf_put_att_double(ent%fileid, ent%varid, name=name, xtype=NF_DOUBLE, len=size(value), dvals=value)
endif
999 continue
call StoreError(stat, 'GDNcVarPutAttrDouble', err)
end subroutine
| Subroutine : | |
| var : | type(GD_NC_VARIABLE), intent(in) |
| name : | character(len = *), intent(in) |
| value(:) : | real, intent(in) |
| err : | logical, intent(out), optional |
subroutine GDNcVarPutAttrReal(var, name, value, err)
use gtdata_netcdf_types, only: GD_NC_VARIABLE, GD_NC_VARIABLE_ENTRY
use gtdata_netcdf_file_generic, only: GDNcFileDefineMode
use gtdata_netcdf_internal, only: vtable_lookup
use netcdf_f77, only: NF_PUT_ATT_REAL, NF_NOERR, NF_DEL_ATT, NF_ENOTINDEFINE, NF_FLOAT, NF_GLOBAL
use dc_url, only: GT_PLUS
use dc_error
implicit none
type(GD_NC_VARIABLE), intent(in):: var
character(len = *), intent(in):: name
real, intent(in):: value(:)
logical, intent(out), optional:: err
type(GD_NC_VARIABLE_ENTRY):: ent
integer:: stat
continue
stat = vtable_lookup(var, ent)
if (stat /= NF_NOERR) goto 999
if (size(value) == 0) then
if (name(1:1) == GT_PLUS) then
stat = nf_del_att(ent%fileid, NF_GLOBAL, name=name(2:))
else
stat = nf_del_att(ent%fileid, ent%varid, name=name)
endif
goto 999
endif
stat = GDNcFileDefineMode(ent%fileid)
if (stat /= NF_NOERR) goto 999
if (name(1:1) == GT_PLUS) then
stat = nf_put_att_real(ent%fileid, NF_GLOBAL, name=name(2:), xtype=NF_FLOAT, len=size(value), rvals=value)
else
stat = nf_put_att_real(ent%fileid, ent%varid, name=name, xtype=NF_FLOAT, len=size(value), rvals=value)
endif
999 continue
call StoreError(stat, 'GDNcVarPutAttrReal', err)
end subroutine