gtool5 Fortran 90/95 Library 1.0.0-rc5
日本語
Loading...
Searching...
No Matches
gdncvarsearch.f90
Go to the documentation of this file.
1
25
38subroutine gdncvarsearchinit(iter, urlBase)
39 use dc_types, only: string
41 use dc_url, only: urlsplit
44 implicit none
45 type(gd_nc_variable_search), intent(out):: iter
46 character(len = *), intent(in):: urlBase
47 character(len = string):: file
48 logical:: err
49 character(len = *), parameter:: subname = 'GDNcVarSearchInit'
50
51 call beginsub(subname, 'urlbase=<%c>', c1=trim(urlbase))
52 call urlsplit(trim(urlbase), file=file)
53 call gdncfileopen(iter%fileid, filename=file, writable=.false., err=err)
54 if (err) iter%fileid = -1
55 iter%varid = 0
56 iter%dimid = 0
57 call endsub(subname, 'file=%d', i=(/iter%fileid/))
58end subroutine gdncvarsearchinit
59
80subroutine gdncvarsearchnext(iter, url, end)
82 use dc_types, only: string
83 use netcdf, only: nf90_max_name, nf90_noerr, &
84 & nf90_inquire_variable, nf90_inquire_dimension, nf90_inq_varid
85 use dc_url, only: urlmerge
88 implicit none
89 type(gd_nc_variable_search), intent(inout):: iter
90 character(len = *), intent(out):: url
91 logical, intent(out):: end
92 character(len = string):: filename
93 character(len = NF90_MAX_NAME):: varname
94 integer:: stat, varid_tmp
95 character(len = *), parameter:: subname = 'GDNcVarSearchNext'
96continue
97 call beginsub(subname)
98 if (iter%fileid <= 0) then
99 end = .TRUE.
100 url = ''
101 call endsub(subname, "bad file %d", i=(/iter%fileid/))
102 return
103 endif
104 if (iter%varid >= 0) then
105 iter%varid = iter%varid + 1
106 stat = nf90_inquire_variable(iter%fileid, iter%varid, name = varname)
107 if (stat == nf90_noerr) goto 900
108 iter%varid = -1
109 endif
110 do while (iter%dimid >= 0)
111 iter%dimid = iter%dimid + 1
112 ! --- 指定番号の次元がなければエラー ---
113 stat = nf90_inquire_dimension(iter%fileid, iter%dimid, name = varname)
114 if (stat /= nf90_noerr) exit
115 ! --- 指定番号の次元と同名の変数があれば却下、次番号へ ---
116 stat = nf90_inq_varid(iter%fileid, varname, varid_tmp)
117 if (stat /= nf90_noerr) goto 900
118 enddo
119 end = .TRUE.
120 url = ""
121 call gdncfileclose(iter%fileid)
122 iter%dimid = -1
123 call endsub(subname, "end file %d", i=(/iter%fileid/))
124 return
125
126900 continue
127 call gdncfileinquire(iter%fileid, name=filename)
128 url = urlmerge(file=trim(filename), var=trim(varname))
129 end = .FALSE.
130 call endsub(subname, "file=%d url=<%c>", &
131 & i=(/iter%fileid/), c1=trim(url))
132 return
133end subroutine gdncvarsearchnext
subroutine gdncfileclose(fileid, err)
subroutine gdncvarsearchnext(iter, url, end)
subroutine gdncvarsearchinit(iter, urlbase)
Not public, so not placed in gtdata_netcdf_generic
Debug tracing module.
Definition dc_trace.f90:150
subroutine, public dbgmessage(fmt, i, r, d, l, n, c1, c2, c3, ca)
Definition dc_trace.f90:661
subroutine, public beginsub(name, fmt, i, r, d, l, n, c1, c2, c3, ca, version)
Definition dc_trace.f90:457
subroutine, public endsub(name, fmt, i, r, d, l, n, c1, c2, c3, ca)
Definition dc_trace.f90:580
Provides kind type parameter values.
Definition dc_types.f90:55
integer, parameter, public string
Character length for string
Definition dc_types.f90:137
Variable URL string parser.
Definition dc_url.f90:61