48 use netcdf,
only: nf90_noerr, nf90_max_name, nf90_enotvar, nf90_ebaddim, &
49 & nf90_inq_varid, nf90_inq_dimid, nf90_inquire_variable, nf90_inquire
52 character(len = *),
intent(in):: url
53 logical,
intent(in),
optional:: writable
54 logical,
intent(out),
optional:: err
55 character(len = STRING):: filename, varname
56 character(len = NF90_MAX_NAME):: dimname
57 integer:: stat, nvars, i
59 character(len = *),
parameter:: subname =
'GDNcVarOpen'
62 call urlsplit(url, file=filename, var=varname)
63 if (filename ==
"") filename =
"gtool.nc"
64 call gdncfileopen(e%fileid, trim(filename), stat=stat, writable=writable, err=err )
65 if (stat /= 0)
goto 999
69 if (varname /=
'')
then
71 stat = nf90_inq_varid(e%fileid, trim(varname), e%varid)
72 if (stat == nf90_enotvar)
then
78 stat = nf90_inquire(e%fileid, nvariables = nvars)
79 if (stat /= 0)
goto 999
82 stat = nf90_inquire_variable(e%fileid, i, name = dimname)
83 if (stat /= nf90_noerr)
goto 999
84 stat = nf90_inq_dimid(e%fileid, dimname, e%dimid)
85 if (stat == nf90_noerr) cycle
86 if (stat /= nf90_ebaddim)
goto 999
92 if (stat /= nf90_noerr)
goto 999
96 stat = nf90_inq_dimid(e%fileid, trim(varname), e%dimid)
97 if (stat /= nf90_noerr)
then
98 if (e%varid <= 0)
goto 999
103 if (stat /= nf90_noerr)
goto 999
104 call endsub(subname,
'an=%d file=%d var=%d', i=(/var%id, e%fileid, e%varid/))
112 call endsub(subname,
'an=%d err', i=(/var%id/))
113 call storeerror(stat, subname, err, cause_c=url)
subroutine, public beginsub(name, fmt, i, r, d, l, n, c1, c2, c3, ca, version)
subroutine, public endsub(name, fmt, i, r, d, l, n, c1, c2, c3, ca)