64 & nf90_noerr, nf90_float, nf90_double, nf90_int, nf90_char, nf90_ebaddim, nf90_def_var
69 character(len = *),
intent(in):: url
70 character(len = *),
intent(in):: xtype
72 logical,
intent(in),
optional:: overwrite
73 logical,
intent(out),
optional:: err
76 character(len = string):: filename, varname
77 integer,
allocatable:: dimids(:)
78 integer:: stat, nvdims, i
82 character(len = *),
parameter:: subnam =
"GDNcVarCreate"
85 if (
present(overwrite)) clobber = overwrite
89 call dbgmessage(
'dims=(/%*d/)', i=(/dims(:)%id/), n=(/
size(dims)/))
93 call urlsplit(url, filename, varname)
94 call gdncfileopen(ent%fileid, filename, stat=stat, writable=.true., &
96 if (stat /= nf90_noerr)
goto 999
100 allocate(dimids(max(1, nvdims)), stat=stat)
107 if (stat /= nf90_noerr)
then
111 if (ent%fileid /= ent_dim%fileid)
then
115 if (ent_dim%dimid <= 0)
then
119 dimids(i) = ent_dim%dimid
124 nc_xtype = nf90_float
125 if (
strieq(xtype,
"double"))
then
126 nc_xtype = nf90_double
127 else if (
strieq(xtype,
"DOUBLEPRECISION"))
then
128 nc_xtype = nf90_double
130 if (
strieq(xtype,
"int"))
then
132 else if (
strieq(xtype,
"INTEGER"))
then
135 if (
strieq(xtype,
"char"))
then
137 else if (
strieq(xtype,
"CHARACTER"))
then
143 if (stat /= nf90_noerr)
goto 999
144 if ( nvdims == 0 )
then
145 stat = nf90_def_var(ent%fileid, name = trim(varname), &
146 & xtype = nc_xtype, varid=ent%varid)
148 stat = nf90_def_var(ent%fileid, name = trim(varname), &
149 & xtype = nc_xtype, dimids = dimids, varid=ent%varid)
151 if (stat /= nf90_noerr)
goto 999
157 if (
allocated(dimids))
deallocate(dimids)
158 if (stat /= nf90_noerr) var % id = -1
159 call storeerror(stat, subnam, err, cause_c=url)
160 call endsub(subnam,
'stat=%d, var.id=%d', i=(/stat, var % id/))
subroutine gdncvarcreate(var, url, xtype, dims, overwrite, err)
subroutine, public storeerror(number, where, err, cause_c, cause_i)
integer, parameter, public gt_eotherfile
integer, parameter, public gt_enomem
integer, parameter, public gt_edimmultidim
Handling character types.
subroutine, public dbgmessage(fmt, i, r, d, l, n, c1, c2, c3, ca)
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)
Provides kind type parameter values.
integer, parameter, public string
Character length for string
Variable URL string parser.
integer function, public vtable_add(var, entry)
integer function, public vtable_lookup(var, entry)