gtool5 Fortran 90/95 ライブラリ 1.0.0-rc5
English
Loading...
Searching...
No Matches
Functions/Subroutines
gdncvarsearch.f90 File Reference

netCDF ファイル内の変数を検索 More...

Go to the source code of this file.

Functions/Subroutines

subroutine gdncvarsearchinit (iter, urlbase)
 
subroutine gdncvarsearchnext (iter, url, end)
 

Detailed Description

netCDF ファイル内の変数を検索

Author
GFD Dennou Club

Definition in file gdncvarsearch.f90.

Function/Subroutine Documentation

◆ gdncvarsearchinit()

subroutine gdncvarsearchinit ( type(gd_nc_variable_search), intent(out)  iter,
character(len = *), intent(in)  urlbase 
)

変数検索イテレータを初期化

Parameters
[out]iter検索イテレータ
[in]urlBaseファイルのベース URL

Definition at line 38 of file gdncvarsearch.f90.

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/))
デバッグ時の追跡用モジュール
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
種別型パラメタを提供します。
Definition dc_types.f90:55
integer, parameter, public string
文字列を保持する 文字型変数の種別型パラメタ
Definition dc_types.f90:137
変数 URL の文字列解析
Definition dc_url.f90:61

References dc_trace::beginsub(), dc_trace::dbgmessage(), dc_trace::endsub(), and dc_types::string.

Here is the call graph for this function:

◆ gdncvarsearchnext()

subroutine gdncvarsearchnext ( type(gd_nc_variable_search), intent(inout)  iter,
character(len = *), intent(out)  url,
logical, intent(out)  end 
)

検索の次の変数を取得

次の変数の URL を返します。次元のみの変数 (対応する座標変数がないもの) も含まれます。

Parameters
[in,out]iter検索イテレータ
[out]url変数 URL
[out]end

iline 78 全変数列挙完了時に真

Definition at line 80 of file gdncvarsearch.f90.

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
非公開なので gtdata_netcdf_generic には置かない

References dc_trace::beginsub(), dc_trace::dbgmessage(), dc_trace::endsub(), gdncfileclose(), and dc_types::string.

Here is the call graph for this function: