gdmemvarattrget.f90
Go to the documentation of this file.
1 subroutine gdmemvarattrget(var, name, value, err)
4  use dc_error, only: storeerror
5  use netcdf, only: nf90_enotatt, nf90_noerr
6  type(gd_mem_variable), intent(in):: var
7  character(len = *), intent(in):: name
8  character(len = *), intent(out):: value
9  logical, intent(out), optional:: err
10  type(gd_mem_variable_entry), pointer:: ent
11  type(gd_mem_attr_chain), pointer:: p
12  integer:: i, stat
13  stat = memtab_lookup(var, ent)
14  if (stat == nf90_noerr) then
15  if (associated(ent%current)) then
16  p => ent%current
17  if (p%name == name) goto 100
18  endif
19  p => ent%attr
20  do
21  if (.not. associated(p)) exit
22  if (p%name == name) goto 100
23  p => p%next
24  enddo
25  stat = nf90_enotatt
26  endif
27  call storeerror(stat, "GDMemVarAttrGet", err, cause_c=name)
28  return
29 
30 100 continue
31  if (associated(p%cbuf)) then
32  do, i = 1, len(value)
33  value(i:i) = p%cbuf(i)
34  enddo
35  else
36  value = ""
37  endif
38 
39 end subroutine gdmemvarattrget
subroutine, public storeerror(number, where, err, cause_c, cause_i)
Definition: dc_error.f90:830
subroutine gdmemvarattrget(var, name, value, err)