35 & nf90_noerr, nf90_float, nf90_double, nf90_int, nf90_char, nf90_ebaddim, nf90_def_var
40 character(len = *),
intent(in):: url
41 character(len = *),
intent(in):: xtype
43 logical,
intent(in),
optional:: overwrite
44 logical,
intent(out),
optional:: err
47 character(len = string):: filename, varname
48 integer,
allocatable:: dimids(:)
49 integer:: stat, nvdims, i
53 character(len = *),
parameter:: subnam =
"GDNcVarCreate" 56 if (
present(overwrite)) clobber = overwrite
60 call dbgmessage(
'dims=(/%*d/)', i=(/dims(:)%id/), n=(/
size(dims)/))
64 call urlsplit(url, filename, varname)
65 call gdncfileopen(ent%fileid, filename, stat=stat, writable=.true., &
67 if (stat /= nf90_noerr)
goto 999
71 allocate(dimids(
max(1, nvdims)), stat=stat)
78 if (stat /= nf90_noerr)
then 82 if (ent%fileid /= ent_dim%fileid)
then 86 if (ent_dim%dimid <= 0)
then 90 dimids(i) = ent_dim%dimid
96 if (
strieq(xtype,
"double") .or.
strieq(xtype,
"DOUBLEPRECISION"))
then 97 nc_xtype = nf90_double
99 if (
strieq(xtype,
"int") .or.
strieq(xtype,
"INTEGER"))
then 102 if (
strieq(xtype,
"char") .or.
strieq(xtype,
"CHARACTER"))
then 108 if (stat /= nf90_noerr)
goto 999
109 if ( nvdims == 0 )
then 110 stat = nf90_def_var(ent%fileid, name = trim(varname), &
111 & xtype = nc_xtype, varid=ent%varid)
113 stat = nf90_def_var(ent%fileid, name = trim(varname), &
114 & xtype = nc_xtype, dimids = dimids, varid=ent%varid)
116 if (stat /= nf90_noerr)
goto 999
122 if (
allocated(dimids))
deallocate(dimids)
123 if (stat /= nf90_noerr) var % id = -1
124 call storeerror(stat, subnam, err, cause_c=url)
125 call endsub(subnam,
'stat=%d, var.id=%d', i=(/stat, var % id/))
integer function, public vtable_lookup(var, entry)
integer function gdncfiledefinemode(fileid)
integer, parameter, public gt_edimnodim
integer, parameter, public gt_enomem
subroutine, public storeerror(number, where, err, cause_c, cause_i)
integer, parameter, public gt_eotherfile
integer function, public vtable_add(var, entry)
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 gdncfileopen(fileid, filename, writable, overwrite, stat, err)
integer, parameter, public gt_edimmultidim
subroutine, public endsub(name, fmt, i, r, d, L, n, c1, c2, c3, ca)
integer, parameter, public string
文字列を保持する 文字型変数の種別型パラメタ