gdncvarputattrreal.f90
Go to the documentation of this file.
1 ! Copyright (C) GFD Dennou Club, 2000. All rights reserved
2 
3 subroutine gdncvarputattrreal(var, name, value, err)
7  use netcdf, only: &
8  & nf90_global, &
9  & nf90_noerr, &
10  & nf90_put_att, &
11  & nf90_del_att
12  use dc_url, only: gt_plus
13  use dc_error
14  implicit none
15  type(gd_nc_variable), intent(in):: var
16  character(len = *), intent(in):: name
17  real, intent(in):: value(:)
18  logical, intent(out), optional:: err
19  type(gd_nc_variable_entry):: ent
20  integer:: stat
21  continue
22  stat = vtable_lookup(var, ent)
23  if (stat /= nf90_noerr) goto 999
24  if (size(value) == 0) then
25  if (name(1:1) == gt_plus) then
26  stat = nf90_del_att(ent%fileid, nf90_global, name(2:))
27  else
28  stat = nf90_del_att(ent%fileid, ent%varid, name)
29  endif
30  goto 999
31  endif
32  stat = gdncfiledefinemode(ent%fileid)
33  if (stat /= nf90_noerr) goto 999
34  if (name(1:1) == gt_plus) then
35  stat = nf90_put_att(ent%fileid, nf90_global, name(2:), value)
36  else
37  stat = nf90_put_att(ent%fileid, ent%varid, name, value)
38  endif
39 999 continue
40  call storeerror(stat, 'GDNcVarPutAttrReal', err)
41 end subroutine gdncvarputattrreal
42 
43 subroutine gdncvarputattrdouble(var, name, value, err)
47  use netcdf, only: &
48  & nf90_global, &
49  & nf90_noerr, &
50  & nf90_put_att, &
51  & nf90_del_att
52  use dc_url, only: gt_plus
53  use dc_error
54  implicit none
55  type(gd_nc_variable), intent(in):: var
56  character(len = *), intent(in):: name
57  double precision, intent(in):: value(:)
58  logical, intent(out), optional:: err
59  type(gd_nc_variable_entry):: ent
60  integer:: stat
61  continue
62  stat = vtable_lookup(var, ent)
63  if (stat /= 0) goto 999
64  if (size(value) == 0) then
65  if (name(1:1) == gt_plus) then
66  stat = nf90_del_att(ent%fileid, nf90_global, name(2:))
67  else
68  stat = nf90_del_att(ent%fileid, ent%varid, name)
69  endif
70  goto 999
71  endif
72  stat = gdncfiledefinemode(ent%fileid)
73  if (stat /= nf90_noerr) goto 999
74  if (name(1:1) == gt_plus) then
75  stat = nf90_put_att(ent%fileid, nf90_global, name(2:), value)
76  else
77  stat = nf90_put_att(ent%fileid, ent%varid, name, value)
78  endif
79 999 continue
80  call storeerror(stat, 'GDNcVarPutAttrDouble', err)
81 end subroutine
subroutine gdncvarputattrreal(var, name, value, err)
integer function, public vtable_lookup(var, entry)
integer function gdncfiledefinemode(fileid)
subroutine gdncvarputattrdouble(var, name, value, err)
character, parameter, public gt_plus
Definition: dc_url.f90:92
subroutine, public storeerror(number, where, err, cause_c, cause_i)
Definition: dc_error.f90:830