gtool5 Fortran 90/95 Library 1.0.0-rc5
日本語
Loading...
Searching...
No Matches
gtdata_generic.f90
Go to the documentation of this file.
1! -*- coding: utf-8; mode: f90 -*-
2!-------------------------------------------------------------------------------------
3! Copyright (c) 2000-2026 Gtool Development Group. All rights reserved.
4!-------------------------------------------------------------------------------------
5! ** Important**
6!
7! This file is generated from ../../../../src/gtdata/gtdata_generic.erb by ERB included Ruby 3.3.8.
8! Please do not edit this file directly. @see "../../../../src/gtdata/gtdata_generic.erb"
9!-------------------------------------------------------------------------------------
10!> @file gtdata_generic.f90
11!>
12!> @author Yasuhiro MORIKAWA, Eizi TOYODA
13!> @copyright Copyright (C) GFD Dennou Club, 2000-2026. All rights reserved. <br/>
14!> License is BSD-2-Clause. See [COPYRIGHT](@ref COPYRIGHT) in detail
15!>
16!> @en
17!> @brief Generic procedure declarations for gtool variables
18!>
19!> All procedures for operations on GT_VARIABLE type variables
20!> (file format independent multi-dimensional data) are declared
21!> and exported here as generic interfaces.
22!> @enden
23!>
24!> @ja
25!> @brief gtool 変数の総称手続き宣言
26!>
27!> ファイルの形式に依存しない多次元データである GT_VARIABLE 型変数
28!> の操作に関する手続きの全てはここで総称宣言されて公開されます。
29!> @endja
30!>
31!>
32!> @en
33!> @brief GT_VARIABLE type variable generic procedure declarations
34!>
35!> All procedures for operations on GT_VARIABLE type variables
36!> (file format independent multi-dimensional data) are declared
37!> and exported here as generic interfaces.
38!>
39!> The procedures listed below are designed so that the first argument
40!> is the main target of operations. Since the first argument identifies
41!> these as gtool4 procedures, names are not prefixed with GT.
42!>
43!> ## Procedure List by Category
44!>
45!> ### Variable Creation/Initialization/Termination
46!> | Procedure | Description |
47!> |-----------|-------------|
48!> | Create | Create variable |
49!> | Open | Initialize variable |
50!> | Close | Finalize variable |
51!>
52!> ### Inquiry
53!> | Procedure | Description |
54!> |-----------|-------------|
55!> | Inquire | Query variable or attribute information |
56!>
57!> ### Data I/O
58!> | Procedure | Description |
59!> |-----------|-------------|
60!> | Get | File input |
61!> | Put, PutLine | File output |
62!>
63!> ### Dimension Order Query/Modification
64!> | Procedure | Description |
65!> |-----------|-------------|
66!> | Dimname_To_Dimord | Query dimension order from dimension relative name |
67!> | Exch_dim | Exchange dimension order numbers |
68!>
69!> ### Variable Composition Mapping (Limit, Dimension Add/Remove)
70!> | Procedure | Description |
71!> |-----------|-------------|
72!> | Limit | Constrain I/O range |
73!> | Add_Dim | Add dimension to variable |
74!> | Del_Dim | Hide dimension from variable |
75!> | Transform | Unify dimension arrangement of two variables |
76!>
77!> ### I/O Range Restriction (Slice)
78!> | Procedure | Description |
79!> |-----------|-------------|
80!> | Slice | Restrict I/O range |
81!> | Slice_Next | Move I/O range |
82!> | Get_Slice | Query variable I/O range restriction information |
83!>
84!> ### Attribute Operations
85!> | Procedure | Description |
86!> |-----------|-------------|
87!> | Attr_Rewind | Initialize variable attribute enumeration |
88!> | Attr_Next | Enumerate variable attributes |
89!> | Attr_True | Read variable attribute as logical |
90!> | Get_Attr | Read variable attribute |
91!> | Put_Attr | Write variable attribute |
92!> | Copy_Attr | Copy attribute |
93!> | Del_Attr | Delete variable attribute |
94!>
95!> ### Others
96!> | Procedure | Description |
97!> |-----------|-------------|
98!> | GTVarSearch | Enumerate variable names in file |
99!> | GTVarSync | Synchronize file I/O |
100!> | GTDataTmpNam | Auto-create variable name |
101!> | operator(.equivalent.) | Equivalence check |
102!> @enden
103!>
104!> @ja
105!> @brief GT_VARIABLE 型変数の手続総称宣言
106!>
107!> ファイルの形式に依存しない多次元データである GT_VARIABLE 型変数
108!> の操作に関する手続きの全てはここで総称宣言されて公開されます。
109!>
110!> 以降に一覧される手続は、第 1 引数が主な操作対象になるようなスタイルで
111!> 設計されています。 第 1 引数から gtool4 の手続であることがわかるので、
112!> 名前にわざわざ GT とはつけていません。
113!>
114!> ## 種類別手続き一覧
115!>
116!> ### 変数の作成・初期化・終了
117!> | 手続き | 説明 |
118!> |--------|------|
119!> | Create | 変数の作成 |
120!> | Open | 変数の初期化 |
121!> | Close | 変数の終了処理 |
122!>
123!> ### 問い合わせ
124!> | 手続き | 説明 |
125!> |--------|------|
126!> | Inquire | 変数または属性に関する問い合わせ |
127!>
128!> ### データの入出力
129!> | 手続き | 説明 |
130!> |--------|------|
131!> | Get | ファイル入力 |
132!> | Put, PutLine | ファイル出力 |
133!>
134!> ### 次元順序番号の問い合わせ・変更
135!> | 手続き | 説明 |
136!> |--------|------|
137!> | Dimname_To_Dimord | 次元相対名から次元順序番号の問い合わせ |
138!> | Exch_dim | 次元順序番号の交換 |
139!>
140!> ### 変数構成写像機能(リミット、次元の加除)
141!>
142!> 変数 (GT_VARIABLE 型) は順序の決まった次元集合をもちます。それぞれ
143!> の次元には決まった長さがあり、1から長さまでの番号で識別される格子から
144!> なっています。しかしながら、必要に応じて変数がもつ次元の順序を入れ替え
145!> たり、次元が存在しないようにみせかけたり、各々の次元の長さを変えたり格
146!> 子番号を付け替えたりできます。
147!>
148!> | 手続き | 説明 |
149!> |--------|------|
150!> | Limit | 入出力範囲を拘束 |
151!> | Add_Dim | 変数に次元を追加 |
152!> | Del_Dim | 変数から次元を隠蔽 |
153!> | Transform | 2 つの変数の次元配置の共通化 |
154!>
155!> ### 入出力範囲限定機能(スライス)
156!> | 手続き | 説明 |
157!> |--------|------|
158!> | Slice | 入出力範囲を限定 |
159!> | Slice_Next | 入出力範囲を移動 |
160!> | Get_Slice | 変数入出力範囲限定情報を問い合わせ |
161!>
162!> ### 属性関係
163!>
164!> 属性名は英字、数字、下線から構成されます。先頭の文字は英字または
165!> "+" でなければなりません。"+" から始まる属性名は内部的に使用されるもの
166!> で、netCDF 実装では大域変数に対応します。
167!>
168!> | 手続き | 説明 |
169!> |--------|------|
170!> | Attr_Rewind | 変数属性列挙の初期化 |
171!> | Attr_Next | 変数属性の列挙 |
172!> | Attr_True | 変数属性を論理型として読み取り |
173!> | Get_Attr | 変数属性の読み取り |
174!> | Put_Attr | 変数属性の書き出し |
175!> | Copy_Attr | 属性のコピー |
176!> | Del_Attr | 変数属性の削除 |
177!>
178!> ### その他
179!> | 手続き | 説明 |
180!> |--------|------|
181!> | GTVarSearch | ファイルの中の変数名の列挙 |
182!> | GTVarSync | ファイル入出力の同期 |
183!> | GTDataTmpNam | 変数名の自動作成 |
184!> | operator(.equivalent.) | 同値判定 |
185!> @endja
186!>
188 implicit none
189 !> @en
190 !> @brief Open variable interface
191 !> @enden
192 !> @ja
193 !> @brief 変数オープンインターフェース
194 !> @endja
195 interface open
196 subroutine gtvaropenbydimord(var, source_var, dimord, &
197 count_compact, inherit_slice, err)
198 use gtdata_types, only: gt_variable
199 type(gt_variable), intent(out):: var
200 type(gt_variable), intent(in):: source_var
201 integer, intent(in):: dimord
202 logical, intent(in), optional:: count_compact
203 logical, intent(in), optional:: inherit_slice
204 logical, intent(out), optional:: err
205 end subroutine gtvaropenbydimord
206 subroutine gtvaropen(var, url, writable, err)
207 use gtdata_types, only: gt_variable
208 type(gt_variable), intent(out):: var
209 character(*), intent(in):: url
210 logical, intent(in), optional:: writable
211 logical, intent(out), optional:: err
212 end subroutine gtvaropen
213 end interface
214 !> @en
215 !> @brief Create variable interface
216 !> @enden
217 !> @ja
218 !> @brief 変数作成インターフェース
219 !> @endja
220 interface create
221 subroutine gtvarcreate(var, url, dims, xtype, long_name, overwrite, err)
222 use gtdata_types, only: gt_variable
223 type(gt_variable), intent(out):: var
224 character(len = *), intent(in):: url
225 type(gt_variable), intent(in), optional:: dims(:)
226 character(len = *), intent(in), optional:: xtype
227 character(len = *), intent(in), optional:: long_name
228 logical, intent(in), optional:: overwrite
229 logical, intent(out), optional:: err
230 end subroutine gtvarcreate
231 subroutine gtvarcreated(var, url, length, xtype, long_name, overwrite, err)
232 use gtdata_types, only: gt_variable
233 type(gt_variable), intent(out):: var
234 character(len = *), intent(in):: url
235 integer, intent(in):: length
236 character(len = *), intent(in), optional:: xtype
237 character(len = *), intent(in), optional:: long_name
238 logical, intent(in), optional:: overwrite
239 logical, intent(out), optional:: err
240 end subroutine gtvarcreated
241 end interface create
242 !> @en
243 !> @brief Close variable interface
244 !> @enden
245 !> @ja
246 !> @brief 変数クローズインターフェース
247 !> @endja
248 interface close
249 subroutine gtvarclose(var, err)
250 use gtdata_types, only: gt_variable
251 type(gt_variable), intent(in):: var
252 logical, intent(out), optional:: err
253 end subroutine gtvarclose
254 end interface close
255 !> @en
256 !> @brief Rewind attribute enumeration interface
257 !> @enden
258 !> @ja
259 !> @brief 属性列挙巻き戻しインターフェース
260 !> @endja
261 interface attr_rewind
262 subroutine gtvarattrrewind(var)
263 use gtdata_types, only: gt_variable
264 type(gt_variable), intent(inout):: var
265 end subroutine gtvarattrrewind
266 end interface attr_rewind
267 !> @en
268 !> @brief Get next attribute interface
269 !> @enden
270 !> @ja
271 !> @brief 次の属性取得インターフェース
272 !> @endja
273 interface attr_next
274 subroutine gtvarattrnext(var, name, end)
275 use gtdata_types, only: gt_variable
276 type(gt_variable), intent(inout):: var
277 character(*), intent(out):: name
278 logical, intent(out), optional:: end
279 end subroutine gtvarattrnext
280 end interface attr_next
281 !> @en
282 !> @brief Read attribute as logical interface
283 !> @enden
284 !> @ja
285 !> @brief 属性を論理値として読み取りインターフェース
286 !> @endja
287 interface attr_true
288 logical function gtvarattrtrue(var, name, default)
289 use gtdata_types, only: gt_variable
290 type(gt_variable), intent(in):: var
291 character(len = *), intent(in):: name
292 logical, intent(in), optional:: default
293 end function gtvarattrtrue
294 end interface attr_true
295 !> @en
296 !> @brief Get attribute interface
297 !>
298 !> Multiple interfaces for scalar, array, and pointer reception.
299 !> - Scalar: simplest, takes interpretable value, rest discarded
300 !> - Pointer array: allocates as many entities as interpretable
301 !> - Array: truncates excess, fills with default if short
302 !> - Character: truncates/pads like normal character assignment
303 !> @enden
304 !> @ja
305 !> @brief 属性取得インターフェース
306 !>
307 !> スカラ、配列、ポインタでの受け取り用の複数インターフェース。
308 !> - スカラ: 最も簡単、解釈可能な値がとられ残りは捨てられる
309 !> - ポインタ配列: 解釈可能な数だけ実体が割り付けられる
310 !> - 配列: 余れば切り捨て、足りなければdefault値で埋める
311 !> - 文字: 通常の文字型代入と同様切り捨て・空白埋め
312 !> @endja
313 interface get_attr
314 subroutine gtvargetattri(var, name, value, default)
315 use gtdata_types, only: gt_variable
316 type(gt_variable), intent(in):: var
317 character(len = *), intent(in):: name
318 integer, intent(out):: value
319 integer, intent(in), optional:: default
320 end subroutine gtvargetattri
321 subroutine gtvargetattrr(var, name, value, default)
322 use gtdata_types, only: gt_variable
323 type(gt_variable), intent(in):: var
324 character(len = *), intent(in):: name
325 real, intent(out):: value
326 real, intent(in), optional:: default
327 end subroutine gtvargetattrr
328 subroutine gtvargetattrd(var, name, value, default)
329 use gtdata_types, only: gt_variable
330 use dc_types, only: dp
331 type(gt_variable), intent(in):: var
332 character(len = *), intent(in):: name
333 real(DP), intent(out):: value
334 real(DP), intent(in), optional:: default
335 end subroutine gtvargetattrd
336 ! ポインタ配列を使って受け取る場合は解釈可能な数だけ実体が割り付けられる。
337 subroutine gtvargetattrip(var, name, value)
338 use gtdata_types, only: gt_variable
339 type(gt_variable), intent(in):: var
340 character(len = *), intent(in):: name
341 integer, pointer:: value(:)
342 end subroutine gtvargetattrip
343 subroutine gtvargetattrrp(var, name, value)
344 use gtdata_types, only: gt_variable
345 type(gt_variable), intent(in):: var
346 character(len = *), intent(in):: name
347 real, pointer:: value(:)
348 end subroutine gtvargetattrrp
349 subroutine gtvargetattrdp(var, name, value)
350 use gtdata_types, only: gt_variable
351 use dc_types, only: dp
352 type(gt_variable), intent(in):: var
353 character(len = *), intent(in):: name
354 real(DP), pointer:: value(:)
355 end subroutine gtvargetattrdp
356 ! integer 配列, real 配列として受け取る
357 ! 場合は属性長があまっている場合には切り捨てられ、
358 ! 属性長が足りない場合は default 値 (ポインタと違い必須) を埋める。
359 subroutine gtvargetattria(var, name, value, default)
360 use gtdata_types, only: gt_variable
361 type(gt_variable), intent(in):: var
362 character(len = *), intent(in):: name
363 integer, intent(out):: value(:)
364 integer, intent(in):: default
365 end subroutine gtvargetattria
366 subroutine gtvargetattrra(var, name, value, default)
367 use gtdata_types, only: gt_variable
368 type(gt_variable), intent(in):: var
369 character(len = *), intent(in):: name
370 real, intent(out):: value(:)
371 real, intent(in):: default
372 end subroutine gtvargetattrra
373 subroutine gtvargetattrda(var, name, value, default)
374 use gtdata_types, only: gt_variable
375 use dc_types, only: dp
376 type(gt_variable), intent(in):: var
377 character(len = *), intent(in):: name
378 real(DP), intent(out):: value(:)
379 real(DP), intent(in):: default
380 end subroutine gtvargetattrda
381 ! character 型で受け取る場合は通常の文字型代入と同様、
382 ! 受け側変数の長さに合わせて切り捨て・空白埋めを行う。
383 ! 属性が存在しない場合 default 値を使う。
384 subroutine gtvargetattrcc(var, name, value, default)
385 use gtdata_types, only: gt_variable
386 type(gt_variable), intent(in):: var
387 character(len = *), intent(in):: name
388 character(len = *), intent(out):: value
389 character(len = *), intent(in), optional:: default
390 end subroutine gtvargetattrcc
391 ! 文字列として読み取る場合は元の長さは正確に受け取られる。
392 ! 属性が存在しない場合 default 値を使う。
393! subroutine GTVarGetAttrSC(var, name, value, default)
394! use dc_string, only: VSTRING
395! use gtdata_types, only: GT_VARIABLE
396! type(GT_VARIABLE), intent(in):: var
397! character(len = *), intent(in):: name
398! type(VSTRING), intent(out):: value
399! character(len = *), intent(in), optional:: default
400! end subroutine GTVarGetAttrSC
401 end interface get_attr
402 !> @en
403 !> @brief Put attribute interface
404 !> @enden
405 !> @ja
406 !> @brief 属性設定インターフェース
407 !> @endja
408 interface put_attr
409 subroutine gtvarputattrdouble(var, name, value, err)
410 use gtdata_types, only: gt_variable
411 use dc_types, only: dp
412 real(DP), intent(in) :: value(:)
413 real, intent(out), optional :: err
414 type(gt_variable), intent(inout):: var
415 character(len = *), intent(in):: name
416 end subroutine gtvarputattrdouble
417 subroutine gtvarputattrreal(var, name, value, err)
418 use gtdata_types, only: gt_variable
419 use dc_types, only: sp
420 real(SP), intent(in) :: value(:)
421 real(SP), intent(out), optional :: err
422 type(gt_variable), intent(inout):: var
423 character(len = *), intent(in):: name
424 end subroutine gtvarputattrreal
425 subroutine gtvarputattrint(var, name, value, err)
426 use gtdata_types, only: gt_variable
427 integer, intent(in) :: value(:)
428 real, intent(out), optional :: err
429 type(gt_variable), intent(inout):: var
430 character(len = *), intent(in):: name
431 end subroutine gtvarputattrint
432 subroutine gtvarputattrchar(var, name, value, xtype, err)
433 use gtdata_types, only: gt_variable
434 character(len = *), intent(in) :: value
435 logical, intent(out), optional :: err
436 character(len = *), intent(in), optional :: xtype
437 type(gt_variable), intent(inout):: var
438 character(len = *), intent(in):: name
439 end subroutine gtvarputattrchar
440 subroutine gtvarputattrlogical(var, name, value, err)
441 use gtdata_types, only: gt_variable
442 logical, intent(in) :: value
443 real, intent(out), optional :: err
444 type(gt_variable), intent(inout):: var
445 character(len = *), intent(in):: name
446 end subroutine gtvarputattrlogical
447 end interface put_attr
448 !> @en
449 !> @brief Delete attribute interface
450 !> @enden
451 !> @ja
452 !> @brief 属性削除インターフェース
453 !> @endja
454 interface del_attr
455 subroutine gtvardelattr(var, name, err)
456 use gtdata_types, only: gt_variable
457 type(gt_variable), intent(inout):: var
458 character(len = *), intent(in):: name
459 logical, intent(out), optional:: err
460 end subroutine gtvardelattr
461 end interface del_attr
462 !> @en
463 !> @brief Copy attribute interface
464 !> @enden
465 !> @ja
466 !> @brief 属性コピーインターフェース
467 !> @endja
468 interface copy_attr
469 subroutine gtvarcopyattr(to, attrname, from, err)
470 use gtdata_types, only: gt_variable
471 type(gt_variable), intent(inout):: to
472 character(len = *), intent(in):: attrname
473 type(gt_variable), intent(in):: from
474 logical, intent(out), optional:: err
475 end subroutine gtvarcopyattr
476 subroutine gtvarcopyattrall(to, from, err, global)
477 use gtdata_types, only: gt_variable
478 type(gt_variable), intent(inout):: to
479 type(gt_variable), intent(inout):: from
480 logical, intent(out), optional:: err
481 logical, intent(in), optional:: global
482 end subroutine gtvarcopyattrall
483 end interface copy_attr
484 !> @en
485 !> @brief Slice (I/O range restriction) interface
486 !>
487 !> Current I/O range size can be obtained with inquire(var, size=).
488 !> - Auto specification: specify compatible for identical settings
489 !> - Dimension-specified: specify dimension number
490 !> - String: specify by character string
491 !> @enden
492 !> @ja
493 !> @brief スライス (入出力範囲限定) インターフェース
494 !>
495 !> 現在の入出力範囲の大きさは inquire(var, size=) で取得できる。
496 !> - おまかせ指示: compatible を指定するとまったく同じに指定
497 !> - 次元指定: 次元番号を指定
498 !> - 文字列: 文字列による指示
499 !> @endja
500 interface slice
501 subroutine gtvarsliceauto(var, compatible)
502 use gtdata_types, only: gt_variable
503 type(gt_variable), intent(inout):: var
504 type(gt_variable), intent(in), optional:: compatible
505 end subroutine gtvarsliceauto
506 ! 次元を指定した指示
507 subroutine gtvarslice(var, dimord, start, count, stride)
508 use gtdata_types, only: gt_variable
509 type(gt_variable), intent(in):: var
510 integer, intent(in):: dimord
511 integer, intent(in), optional:: start
512 integer, intent(in), optional:: count
513 integer, intent(in), optional:: stride
514 end subroutine gtvarslice
515 ! 文字列による指示
516 subroutine gtvarslicec(var, string, err)
517 use gtdata_types, only: gt_variable
518 type(gt_variable), intent(inout):: var
519 character(len = *), intent(in):: string
520 logical, intent(out):: err
521 end subroutine gtvarslicec
522 end interface slice
523 !> @en
524 !> @brief Get slice information interface
525 !>
526 !> - Specify dimension order to get
527 !> - Bulk get for all dimensions (pre-allocate array with inquire(var, alldims))
528 !> @enden
529 !> @ja
530 !> @brief スライス情報取得インターフェース
531 !>
532 !> - 次元順番を指定して取得
533 !> - 全次元について一括取得 (あらかじめ inquire(var, alldims) して配列を確保)
534 !> @endja
535 interface get_slice
536 subroutine gtvargetslice(var, dimord, start, count, stride, count_compact)
537 use gtdata_types, only: gt_variable
538 type(gt_variable), intent(in):: var
539 integer, intent(in):: dimord
540 integer, intent(out), optional:: start
541 integer, intent(out), optional:: count
542 integer, intent(out), optional:: stride
543 logical, intent(in), optional:: count_compact
544 end subroutine gtvargetslice
545 ! 全次元について一括取得
546 ! あらかじめ inquire(var, alldims) して配列を確保する。
547 subroutine gtvargetsliceall(var, start, count, stride)
548 use gtdata_types, only: gt_variable
549 type(gt_variable), intent(in):: var
550 integer, intent(out), optional:: start(:), count(:), stride(:)
551 end subroutine gtvargetsliceall
552 end interface get_slice
553 !> @en
554 !> @brief Dimension name to dimension order interface
555 !> @enden
556 !> @ja
557 !> @brief 次元名から次元順序番号への変換インターフェース
558 !> @endja
560 integer function gtvardimname2ord(var, name)
561 use gtdata_types, only: gt_variable
562 type(gt_variable), intent(in):: var
563 character(len = *), intent(in):: name
564 end function gtvardimname2ord
565 end interface dimname_to_dimord
566 !> @en
567 !> @brief Limit (spatial transformer setup) interface
568 !> @enden
569 !> @ja
570 !> @brief リミット (空間変換器機能セットアップ) インターフェース
571 !> @endja
572 interface limit
573 subroutine gtvarlimit(var, string, err)
574 use gtdata_types, only: gt_variable
575 type(gt_variable), intent(inout) :: var
576 character(len = *), intent(in) :: string
577 logical, intent(out), optional :: err
578 end subroutine gtvarlimit
579 subroutine gtvarlimit_iiii(var, dimord, start, count, stride, err)
580 use gtdata_types, only: gt_variable
581 type(gt_variable), intent(inout):: var
582 integer, intent(in) :: dimord
583 integer, intent(in) , optional :: start, count, stride
584 logical, intent(out), optional :: err
585 end subroutine gtvarlimit_iiii
586 end interface limit
587 !> @en
588 !> @brief Transform (unify dimension arrangement) interface
589 !> @enden
590 !> @ja
591 !> @brief トランスフォーム (次元配置の共通化) インターフェース
592 !> @endja
593 interface transform
594 subroutine gtvarxformbinary(var1, var2, err)
595 use gtdata_types, only: gt_variable
596 type(gt_variable), intent(inout):: var1, var2
597 logical, intent(out), optional:: err
598 end subroutine gtvarxformbinary
599 end interface transform
600 !> @en
601 !> @brief Add dimension interface
602 !>
603 !> Adds dimension dimvar at position dimord in variable handle var.
604 !> Dimensions from dimord onwards shift one position back.
605 !> If dimord > number of valid dimensions, treated as (valid dims + 1).
606 !> @enden
607 !> @ja
608 !> @brief 次元追加インターフェース
609 !>
610 !> 変数ハンドル var の dimord 番目の位置に次元 dimvar を追加する。
611 !> dimord 番目以降の次元は一つ後ろにずれる。
612 !> もし dimord が var の有効次元数より大きければ (有効次元数 + 1)
613 !> が与えられたものとみなされる。
614 !> @endja
615 interface add_dim
616 subroutine gtvaradddim(var, dimord, dimvar, err)
617 use gtdata_types, only: gt_variable
618 type(gt_variable), intent(in):: var
619 type(gt_variable), intent(in):: dimvar
620 integer, intent(in):: dimord
621 logical, intent(out):: err
622 end subroutine gtvaradddim
623 end interface add_dim
624 !> @en
625 !> @brief Delete dimension interface
626 !>
627 !> "Removes" dimension from variable handle. Actually just lowers
628 !> the rank in dimension correspondence table and decrements valid
629 !> dimension count, so I/O is unaffected.
630 !> @enden
631 !> @ja
632 !> @brief 次元削除インターフェース
633 !>
634 !> 変数ハンドルから次元を「除去」する。実際には、
635 !> 次元対応表の順位を下げ有効次元数をデクリメントするだけなので、
636 !> 入出力に支障はない。
637 !> @endja
638 interface del_dim
639 subroutine gtvardeldim(var, dimord, err)
640 use gtdata_types, only: gt_variable
641 type(gt_variable), intent(in):: var
642 integer, intent(in):: dimord
643 logical, intent(out):: err
644 end subroutine gtvardeldim
645 end interface del_dim
646 !> @en
647 !> @brief Exchange dimension order interface
648 !> @enden
649 !> @ja
650 !> @brief 次元順序交換インターフェース
651 !> @endja
652 interface exch_dim
653 subroutine gtvarexchdim(var, dimord1, dimord2, count_compact, err)
654 use gtdata_types, only: gt_variable
655 type(gt_variable), intent(in):: var
656 integer, intent(in):: dimord1, dimord2
657 logical, intent(in), optional:: count_compact
658 logical, intent(out):: err
659 end subroutine gtvarexchdim
660 end interface exch_dim
661 !> @en
662 !> @brief Inquire variable information interface
663 !> @enden
664 !> @ja
665 !> @brief 変数情報問い合わせインターフェース
666 !> @endja
667 interface inquire
668 subroutine gtvarinquire(var, growable, &
669 & rank, alldims, allcount, size, &
670 & xtype, name, url, err)
671 use gtdata_types, only: gt_variable
672 type(gt_variable), intent(in):: var
673 character(len=*), intent(out), optional:: xtype
674 character(len=*), intent(out), optional:: name
675 character(len=*), intent(out), optional:: url
676 integer, intent(out), optional:: rank
677 integer, intent(out), optional:: alldims
678 integer, intent(out), optional:: allcount
679 integer, intent(out), optional:: size
680 logical, intent(out), optional:: growable
681 logical, intent(out), optional:: err
682 end subroutine gtvarinquire
683 subroutine gtvarinquire2(var, allcount)
684 use gtdata_types, only: gt_variable
685 type(gt_variable), intent(in):: var
686 integer, intent(out):: allcount(:)
687 end subroutine gtvarinquire2
688 subroutine gtvarinquired(var, dimord, url, allcount, err)
689 use gtdata_types, only: gt_variable
690 type(gt_variable), intent(in):: var
691 integer, intent(in):: dimord
692 character(len=*), intent(out), optional:: url
693 integer, intent(out), optional:: allcount
694 logical, intent(out), optional:: err
695 end subroutine gtvarinquired
696 subroutine gtvarinquirea(var, attrname, xtype)
697 use gtdata_types, only: gt_variable
698 type(gt_variable), intent(in):: var
699 character(len=*), intent(in):: attrname
700 character(len=*), intent(out), optional:: xtype
701 end subroutine gtvarinquirea
702 end interface inquire
703 !> @en
704 !> @brief Slice next (iterator for traversal) interface
705 !> @enden
706 !> @ja
707 !> @brief 次スライス (総なめ用イテレータ) インターフェース
708 !> @endja
709 interface slice_next
710 subroutine gtvarslicenext(var, dimord, err, stat)
711 use gtdata_types, only: gt_variable
712 type(gt_variable), intent(in out):: var
713 integer, intent(in), optional:: dimord
714 logical, intent(out), optional:: err
715 integer, intent(out), optional:: stat
716 end subroutine gtvarslicenext
717 end interface slice_next
718 !> @en
719 !> @brief Equivalence check operator interface
720 !> @enden
721 !> @ja
722 !> @brief 同値判定演算子インターフェース
723 !> @endja
724 interface operator(.equivalent.)
725 logical function gtvarequivalent(var1, var2)
726 use gtdata_types, only: gt_variable
727 type(gt_variable), intent(in):: var1, var2
728 end function gtvarequivalent
729 end interface operator(.equivalent.)
730 !> @en
731 !> @brief Get (file input) interface
732 !>
733 !> Get(var, value, nvalue, [err]):
734 !> Gets current I/O range to 1D array. nvalue must store array length.
735 !> Using specific name GTVarGetReal allows input to multi-dimensional
736 !> array, but note the relationship with I/O range.
737 !>
738 !> Get(var, value, [err]) takes 1-7 dimensional pointers.
739 !> Limits I/O range to pointer dimensions, allocates array,
740 !> fills values and returns.
741 !> @enden
742 !> @ja
743 !> @brief Get (ファイル入力) インターフェース
744 !>
745 !> Get(var, value, nvalue, [err]):
746 !> 1次元配列に現在の入出力範囲を取得する。
747 !> nvalue は利用者が配列長を格納しなければならない。
748 !> 個別名 GTVarGetReal を用いると多次元配列に入力
749 !> することもできるが、入出力範囲との関係に注意が必要。
750 !>
751 !> Get(var, value, [err]) は 1〜7 次元のポインタをとる。
752 !> 入出力範囲をポインタ次元数に限定し、配列を確保し、
753 !> 値を入れて返す。
754 !> @endja
755 interface get
756 subroutine gtvargetdouble(var, value, nvalue, err)
757 use gtdata_types, only: gt_variable
758 use dc_types, only: dp
759 real(DP), intent(out):: value(*)
760 type(gt_variable), intent(in):: var
761 integer, intent(in):: nvalue
762 logical, intent(out), optional:: err
763 end subroutine gtvargetdouble
764 subroutine gtvargetpointerdouble1(var, value, err)
765 use gtdata_types, only: gt_variable
766 use dc_types, only: dp
767 real(DP), pointer :: value(:)
768 type(gt_variable), intent(in) :: var
769 logical, intent(out), optional :: err
770 end subroutine gtvargetpointerdouble1
771 subroutine gtvargetpointerdouble2(var, value, err)
772 use gtdata_types, only: gt_variable
773 use dc_types, only: dp
774 real(DP), pointer :: value(:,:)
775 type(gt_variable), intent(in) :: var
776 logical, intent(out), optional :: err
777 end subroutine gtvargetpointerdouble2
778 subroutine gtvargetpointerdouble3(var, value, err)
779 use gtdata_types, only: gt_variable
780 use dc_types, only: dp
781 real(DP), pointer :: value(:,:,:)
782 type(gt_variable), intent(in) :: var
783 logical, intent(out), optional :: err
784 end subroutine gtvargetpointerdouble3
785 subroutine gtvargetpointerdouble4(var, value, err)
786 use gtdata_types, only: gt_variable
787 use dc_types, only: dp
788 real(DP), pointer :: value(:,:,:,:)
789 type(gt_variable), intent(in) :: var
790 logical, intent(out), optional :: err
791 end subroutine gtvargetpointerdouble4
792 subroutine gtvargetpointerdouble5(var, value, err)
793 use gtdata_types, only: gt_variable
794 use dc_types, only: dp
795 real(DP), pointer :: value(:,:,:,:,:)
796 type(gt_variable), intent(in) :: var
797 logical, intent(out), optional :: err
798 end subroutine gtvargetpointerdouble5
799 subroutine gtvargetpointerdouble6(var, value, err)
800 use gtdata_types, only: gt_variable
801 use dc_types, only: dp
802 real(DP), pointer :: value(:,:,:,:,:,:)
803 type(gt_variable), intent(in) :: var
804 logical, intent(out), optional :: err
805 end subroutine gtvargetpointerdouble6
806 subroutine gtvargetpointerdouble7(var, value, err)
807 use gtdata_types, only: gt_variable
808 use dc_types, only: dp
809 real(DP), pointer :: value(:,:,:,:,:,:,:)
810 type(gt_variable), intent(in) :: var
811 logical, intent(out), optional :: err
812 end subroutine gtvargetpointerdouble7
813 subroutine gtvargetreal(var, value, nvalue, err)
814 use gtdata_types, only: gt_variable
815 use dc_types, only: sp
816 real(SP), intent(out):: value(*)
817 type(gt_variable), intent(in):: var
818 integer, intent(in):: nvalue
819 logical, intent(out), optional:: err
820 end subroutine gtvargetreal
821 subroutine gtvargetpointerreal1(var, value, err)
822 use gtdata_types, only: gt_variable
823 use dc_types, only: sp
824 real(SP), pointer :: value(:)
825 type(gt_variable), intent(in) :: var
826 logical, intent(out), optional :: err
827 end subroutine gtvargetpointerreal1
828 subroutine gtvargetpointerreal2(var, value, err)
829 use gtdata_types, only: gt_variable
830 use dc_types, only: sp
831 real(SP), pointer :: value(:,:)
832 type(gt_variable), intent(in) :: var
833 logical, intent(out), optional :: err
834 end subroutine gtvargetpointerreal2
835 subroutine gtvargetpointerreal3(var, value, err)
836 use gtdata_types, only: gt_variable
837 use dc_types, only: sp
838 real(SP), pointer :: value(:,:,:)
839 type(gt_variable), intent(in) :: var
840 logical, intent(out), optional :: err
841 end subroutine gtvargetpointerreal3
842 subroutine gtvargetpointerreal4(var, value, err)
843 use gtdata_types, only: gt_variable
844 use dc_types, only: sp
845 real(SP), pointer :: value(:,:,:,:)
846 type(gt_variable), intent(in) :: var
847 logical, intent(out), optional :: err
848 end subroutine gtvargetpointerreal4
849 subroutine gtvargetpointerreal5(var, value, err)
850 use gtdata_types, only: gt_variable
851 use dc_types, only: sp
852 real(SP), pointer :: value(:,:,:,:,:)
853 type(gt_variable), intent(in) :: var
854 logical, intent(out), optional :: err
855 end subroutine gtvargetpointerreal5
856 subroutine gtvargetpointerreal6(var, value, err)
857 use gtdata_types, only: gt_variable
858 use dc_types, only: sp
859 real(SP), pointer :: value(:,:,:,:,:,:)
860 type(gt_variable), intent(in) :: var
861 logical, intent(out), optional :: err
862 end subroutine gtvargetpointerreal6
863 subroutine gtvargetpointerreal7(var, value, err)
864 use gtdata_types, only: gt_variable
865 use dc_types, only: sp
866 real(SP), pointer :: value(:,:,:,:,:,:,:)
867 type(gt_variable), intent(in) :: var
868 logical, intent(out), optional :: err
869 end subroutine gtvargetpointerreal7
870 subroutine gtvargetint(var, value, nvalue, err)
871 use gtdata_types, only: gt_variable
872 integer, intent(out):: value(*)
873 type(gt_variable), intent(in):: var
874 integer, intent(in):: nvalue
875 logical, intent(out), optional:: err
876 end subroutine gtvargetint
877 subroutine gtvargetpointerint1(var, value, err)
878 use gtdata_types, only: gt_variable
879 integer, pointer :: value(:)
880 type(gt_variable), intent(in) :: var
881 logical, intent(out), optional :: err
882 end subroutine gtvargetpointerint1
883 subroutine gtvargetpointerint2(var, value, err)
884 use gtdata_types, only: gt_variable
885 integer, pointer :: value(:,:)
886 type(gt_variable), intent(in) :: var
887 logical, intent(out), optional :: err
888 end subroutine gtvargetpointerint2
889 subroutine gtvargetpointerint3(var, value, err)
890 use gtdata_types, only: gt_variable
891 integer, pointer :: value(:,:,:)
892 type(gt_variable), intent(in) :: var
893 logical, intent(out), optional :: err
894 end subroutine gtvargetpointerint3
895 subroutine gtvargetpointerint4(var, value, err)
896 use gtdata_types, only: gt_variable
897 integer, pointer :: value(:,:,:,:)
898 type(gt_variable), intent(in) :: var
899 logical, intent(out), optional :: err
900 end subroutine gtvargetpointerint4
901 subroutine gtvargetpointerint5(var, value, err)
902 use gtdata_types, only: gt_variable
903 integer, pointer :: value(:,:,:,:,:)
904 type(gt_variable), intent(in) :: var
905 logical, intent(out), optional :: err
906 end subroutine gtvargetpointerint5
907 subroutine gtvargetpointerint6(var, value, err)
908 use gtdata_types, only: gt_variable
909 integer, pointer :: value(:,:,:,:,:,:)
910 type(gt_variable), intent(in) :: var
911 logical, intent(out), optional :: err
912 end subroutine gtvargetpointerint6
913 subroutine gtvargetpointerint7(var, value, err)
914 use gtdata_types, only: gt_variable
915 integer, pointer :: value(:,:,:,:,:,:,:)
916 type(gt_variable), intent(in) :: var
917 logical, intent(out), optional :: err
918 end subroutine gtvargetpointerint7
919 end interface get
920 !> @en
921 !> @brief PutLine (print) interface
922 !>
923 !> "Printing" is input from the variable's perspective and output
924 !> from the file's perspective. So it somewhat straddles put and get,
925 !> but we inherit the procedure name from dc_string as put_line.
926 !> @enden
927 !> @ja
928 !> @brief PutLine (印字) インターフェース
929 !>
930 !> 印字というのは変数にしてみれば入力だしファイルにしてみれば出力だ。
931 !> だから put と get を兼営しているようなものでまことにあやしいのだが、
932 !> いちおう dc_string の手続名を継承して put_line にしておく。
933 !> @endja
934 interface putline
935 subroutine gtvarputline( var, unit, indent, err )
936 use gtdata_types, only: gt_variable
937 type(gt_variable), intent(in):: var
938 integer, intent(in), optional:: unit
939 character(*), intent(in), optional:: indent
940 logical, intent(out), optional:: err
941 end subroutine gtvarputline
942 end interface
943 !> @en
944 !> @brief Put (file output) interface
945 !> @enden
946 !> @ja
947 !> @brief Put (ファイル出力) インターフェース
948 !> @endja
949 interface put
950 subroutine gtvarputdouble(var, value, nvalue, err)
951 use gtdata_types, only: gt_variable
952 use dc_types, only: dp
953 real(DP), intent(in):: value(nvalue)
954 type(gt_variable), intent(in):: var
955 integer, intent(in):: nvalue
956 logical, intent(out), optional:: err
957 end subroutine gtvarputdouble
958 subroutine gtvarputdouble1(var, value, err)
959 use gtdata_types, only: gt_variable
960 use dc_types, only: dp
961 real(DP), intent(in) :: value(:)
962 type(gt_variable),intent(in):: var
963 logical ,intent(out), optional:: err
964 end subroutine gtvarputdouble1
965 subroutine gtvarputdouble2(var, value, err)
966 use gtdata_types, only: gt_variable
967 use dc_types, only: dp
968 real(DP), intent(in) :: value(:,:)
969 type(gt_variable),intent(in):: var
970 logical ,intent(out), optional:: err
971 end subroutine gtvarputdouble2
972 subroutine gtvarputdouble3(var, value, err)
973 use gtdata_types, only: gt_variable
974 use dc_types, only: dp
975 real(DP), intent(in) :: value(:,:,:)
976 type(gt_variable),intent(in):: var
977 logical ,intent(out), optional:: err
978 end subroutine gtvarputdouble3
979 subroutine gtvarputdouble4(var, value, err)
980 use gtdata_types, only: gt_variable
981 use dc_types, only: dp
982 real(DP), intent(in) :: value(:,:,:,:)
983 type(gt_variable),intent(in):: var
984 logical ,intent(out), optional:: err
985 end subroutine gtvarputdouble4
986 subroutine gtvarputdouble5(var, value, err)
987 use gtdata_types, only: gt_variable
988 use dc_types, only: dp
989 real(DP), intent(in) :: value(:,:,:,:,:)
990 type(gt_variable),intent(in):: var
991 logical ,intent(out), optional:: err
992 end subroutine gtvarputdouble5
993 subroutine gtvarputdouble6(var, value, err)
994 use gtdata_types, only: gt_variable
995 use dc_types, only: dp
996 real(DP), intent(in) :: value(:,:,:,:,:,:)
997 type(gt_variable),intent(in):: var
998 logical ,intent(out), optional:: err
999 end subroutine gtvarputdouble6
1000 subroutine gtvarputdouble7(var, value, err)
1001 use gtdata_types, only: gt_variable
1002 use dc_types, only: dp
1003 real(DP), intent(in) :: value(:,:,:,:,:,:,:)
1004 type(gt_variable),intent(in):: var
1005 logical ,intent(out), optional:: err
1006 end subroutine gtvarputdouble7
1007 subroutine gtvarputreal(var, value, nvalue, err)
1008 use gtdata_types, only: gt_variable
1009 use dc_types, only: sp
1010 real(SP), intent(in):: value(nvalue)
1011 type(gt_variable), intent(in):: var
1012 integer, intent(in):: nvalue
1013 logical, intent(out), optional:: err
1014 end subroutine gtvarputreal
1015 subroutine gtvarputreal1(var, value, err)
1016 use gtdata_types, only: gt_variable
1017 use dc_types, only: sp
1018 real(SP), intent(in) :: value(:)
1019 type(gt_variable),intent(in):: var
1020 logical ,intent(out), optional:: err
1021 end subroutine gtvarputreal1
1022 subroutine gtvarputreal2(var, value, err)
1023 use gtdata_types, only: gt_variable
1024 use dc_types, only: sp
1025 real(SP), intent(in) :: value(:,:)
1026 type(gt_variable),intent(in):: var
1027 logical ,intent(out), optional:: err
1028 end subroutine gtvarputreal2
1029 subroutine gtvarputreal3(var, value, err)
1030 use gtdata_types, only: gt_variable
1031 use dc_types, only: sp
1032 real(SP), intent(in) :: value(:,:,:)
1033 type(gt_variable),intent(in):: var
1034 logical ,intent(out), optional:: err
1035 end subroutine gtvarputreal3
1036 subroutine gtvarputreal4(var, value, err)
1037 use gtdata_types, only: gt_variable
1038 use dc_types, only: sp
1039 real(SP), intent(in) :: value(:,:,:,:)
1040 type(gt_variable),intent(in):: var
1041 logical ,intent(out), optional:: err
1042 end subroutine gtvarputreal4
1043 subroutine gtvarputreal5(var, value, err)
1044 use gtdata_types, only: gt_variable
1045 use dc_types, only: sp
1046 real(SP), intent(in) :: value(:,:,:,:,:)
1047 type(gt_variable),intent(in):: var
1048 logical ,intent(out), optional:: err
1049 end subroutine gtvarputreal5
1050 subroutine gtvarputreal6(var, value, err)
1051 use gtdata_types, only: gt_variable
1052 use dc_types, only: sp
1053 real(SP), intent(in) :: value(:,:,:,:,:,:)
1054 type(gt_variable),intent(in):: var
1055 logical ,intent(out), optional:: err
1056 end subroutine gtvarputreal6
1057 subroutine gtvarputreal7(var, value, err)
1058 use gtdata_types, only: gt_variable
1059 use dc_types, only: sp
1060 real(SP), intent(in) :: value(:,:,:,:,:,:,:)
1061 type(gt_variable),intent(in):: var
1062 logical ,intent(out), optional:: err
1063 end subroutine gtvarputreal7
1064 subroutine gtvarputint(var, value, nvalue, err)
1065 use gtdata_types, only: gt_variable
1066 integer, intent(in):: value(nvalue)
1067 type(gt_variable), intent(in):: var
1068 integer, intent(in):: nvalue
1069 logical, intent(out), optional:: err
1070 end subroutine gtvarputint
1071 subroutine gtvarputint1(var, value, err)
1072 use gtdata_types, only: gt_variable
1073 integer, intent(in) :: value(:)
1074 type(gt_variable),intent(in):: var
1075 logical ,intent(out), optional:: err
1076 end subroutine gtvarputint1
1077 subroutine gtvarputint2(var, value, err)
1078 use gtdata_types, only: gt_variable
1079 integer, intent(in) :: value(:,:)
1080 type(gt_variable),intent(in):: var
1081 logical ,intent(out), optional:: err
1082 end subroutine gtvarputint2
1083 subroutine gtvarputint3(var, value, err)
1084 use gtdata_types, only: gt_variable
1085 integer, intent(in) :: value(:,:,:)
1086 type(gt_variable),intent(in):: var
1087 logical ,intent(out), optional:: err
1088 end subroutine gtvarputint3
1089 subroutine gtvarputint4(var, value, err)
1090 use gtdata_types, only: gt_variable
1091 integer, intent(in) :: value(:,:,:,:)
1092 type(gt_variable),intent(in):: var
1093 logical ,intent(out), optional:: err
1094 end subroutine gtvarputint4
1095 subroutine gtvarputint5(var, value, err)
1096 use gtdata_types, only: gt_variable
1097 integer, intent(in) :: value(:,:,:,:,:)
1098 type(gt_variable),intent(in):: var
1099 logical ,intent(out), optional:: err
1100 end subroutine gtvarputint5
1101 subroutine gtvarputint6(var, value, err)
1102 use gtdata_types, only: gt_variable
1103 integer, intent(in) :: value(:,:,:,:,:,:)
1104 type(gt_variable),intent(in):: var
1105 logical ,intent(out), optional:: err
1106 end subroutine gtvarputint6
1107 subroutine gtvarputint7(var, value, err)
1108 use gtdata_types, only: gt_variable
1109 integer, intent(in) :: value(:,:,:,:,:,:,:)
1110 type(gt_variable),intent(in):: var
1111 logical ,intent(out), optional:: err
1112 end subroutine gtvarputint7
1113 subroutine gtvarputchar(var, value, nvalue, err)
1114 use gtdata_types, only: gt_variable
1115 type(gt_variable), intent(in):: var
1116 integer, intent(in):: nvalue
1117 character(*), intent(in):: value(nvalue)
1118 logical, intent(out), optional:: err
1119 end subroutine gtvarputchar
1120 end interface put
1121 !> @en
1122 !> @brief Search variables in file interface
1123 !> @enden
1124 !> @ja
1125 !> @brief ファイル内変数検索インターフェース
1126 !> @endja
1127 interface gtvarsearch
1128 subroutine gtvarsearchnext(url, end)
1129 character(len = *), intent(out):: url
1130 logical, intent(out):: end
1131 end subroutine gtvarsearchnext
1132 subroutine gtvarsearchinit(urlBase)
1133 character(len = *), intent(in):: urlBase
1134 end subroutine gtvarsearchinit
1135 end interface gtvarsearch
1136 !> @en
1137 !> @brief Sync file I/O interface
1138 !>
1139 !> Safety exit point. Since SysDepAbort calls this, must not call StoreError.
1140 !> @enden
1141 !> @ja
1142 !> @brief ファイル入出力同期インターフェース
1143 !>
1144 !> 安全のための脱出口。SysDepAbort が呼び出すので、StoreError を呼んではならない。
1145 !> @endja
1146 interface
1147 subroutine gtvarsync(var, stat)
1148 use gtdata_types, only: gt_variable
1149 type(gt_variable), intent(inout), optional:: var
1150 integer, intent(out), optional:: stat
1151 end subroutine gtvarsync
1152 end interface
1153 !> @en
1154 !> @brief Create copy interface (utility)
1155 !>
1156 !> Library written using only gtdata layer.
1157 !> @enden
1158 !> @ja
1159 !> @brief コピー作成インターフェース (ユーティリティ)
1160 !>
1161 !> gtdata 層だけで書かれたライブラリ。
1162 !> @endja
1163 interface create
1164 subroutine gtvarcreatecopyc(var, url, copyfrom, copyvalue, &
1165 & overwrite, err)
1166 use gtdata_types, only: gt_variable
1167 implicit none
1168 type(gt_variable), intent(out):: var
1169 character(len = *), intent(in):: url
1170 type(gt_variable), intent(inout):: copyfrom
1171 logical, intent(in), optional:: copyvalue
1172 logical, intent(in), optional:: overwrite
1173 logical, intent(out), optional:: err
1174 end subroutine gtvarcreatecopyc
1175 end interface
1176 !> @en
1177 !> @brief Delete variable interface (work in progress)
1178 !> @enden
1179 !> @ja
1180 !> @brief 変数削除インターフェース (作成中)
1181 !> @endja
1182 interface gtvardel
1183 subroutine gtvardel1(varname, err)
1184 character(len = *), intent(in):: varname
1185 logical, intent(out):: err
1186 end subroutine gtvardel1
1187 end interface
1188 !> @en
1189 !> @brief Add member (structure related) interface
1190 !> @enden
1191 !> @ja
1192 !> @brief メンバ追加 (構造体関係) インターフェース
1193 !> @endja
1194 interface add_member
1195 subroutine gtvaraddmember(var, url, link_name)
1196 use gtdata_types, only: gt_variable
1197 type(gt_variable), intent(inout):: var
1198 character(len = *), intent(in):: url
1199 character(len = *), intent(in), optional:: link_name
1200 end subroutine gtvaraddmember
1201 end interface
1202 !> @en
1203 !> @brief Auto-create unique variable name interface
1204 !> @enden
1205 !> @ja
1206 !> @brief 一意な変数名の自動作成インターフェース
1207 !> @endja
1209 subroutine gtvartmpnam(file, base, result)
1210 character(len = *), intent(in):: file
1211 character(len = *), intent(in):: base
1212 character(len = *), intent(out):: result
1213 end subroutine gtvartmpnam
1214 end interface
1215end module gtdata_generic
subroutine gtvaradddim(var, dimord, dimvar, err)
subroutine gtvaraddmember(var, member_url, link_name)
subroutine gtvarattrrewind(var)
subroutine gtvarattrnext(var, name, end)
logical function gtvarattrtrue(var, name, default)
subroutine gtvarclose(var, err)
subroutine gtvarcopyattr(to, attrname, from, err)
subroutine gtvarcopyattrall(to, from, err, global)
subroutine gtvarcreate(var, url, dims, xtype, long_name, overwrite, err)
subroutine gtvarcreatecopyc(var, url, copyfrom, copyvalue, overwrite, err)
subroutine gtvarcreated(var, url, length, xtype, long_name, overwrite, err)
subroutine gtvardelattr(var, name, err)
subroutine gtvardeldim(var, dimord, err)
integer function gtvardimname2ord(var, name)
logical function gtvarequivalent(var1, var2)
subroutine gtvarexchdim(var, dimord1, dimord2, count_compact, err)
subroutine gtvargetattrra(var, name, value, default)
subroutine gtvargetattrip(var, name, value)
subroutine gtvargetattrd(var, attrname, value, default)
subroutine gtvargetattrrp(var, name, value)
subroutine gtvargetattria(var, name, value, default)
subroutine gtvargetattrda(var, name, value, default)
subroutine gtvargetattrdp(var, name, value)
subroutine gtvargetattrr(var, attrname, value, default)
subroutine gtvargetattri(var, attrname, value, default)
subroutine gtvargetattrcc(var, name, value, default)
subroutine gtvargetint(var, value, nvalue, err)
subroutine gtvargetdouble(var, value, nvalue, err)
subroutine gtvargetreal(var, value, nvalue, err)
subroutine gtvargetpointerreal6(var, value, err)
subroutine gtvargetpointerdouble3(var, value, err)
subroutine gtvargetpointerdouble5(var, value, err)
subroutine gtvargetpointerdouble2(var, value, err)
subroutine gtvargetpointerreal5(var, value, err)
subroutine gtvargetpointerint1(var, value, err)
subroutine gtvargetpointerdouble7(var, value, err)
subroutine gtvargetpointerint4(var, value, err)
subroutine gtvargetpointerreal3(var, value, err)
subroutine gtvargetpointerint3(var, value, err)
subroutine gtvargetpointerint6(var, value, err)
subroutine gtvargetpointerint2(var, value, err)
subroutine gtvargetpointerreal2(var, value, err)
subroutine gtvargetpointerdouble1(var, value, err)
subroutine gtvargetpointerint5(var, value, err)
subroutine gtvargetpointerint7(var, value, err)
subroutine gtvargetpointerdouble4(var, value, err)
subroutine gtvargetpointerreal4(var, value, err)
subroutine gtvargetpointerdouble6(var, value, err)
subroutine gtvargetpointerreal1(var, value, err)
subroutine gtvargetpointerreal7(var, value, err)
subroutine gtvargetslice(var, dimord, start, count, stride, count_compact)
subroutine gtvargetsliceall(var, start, count, stride)
subroutine gtvarinquire(var, growable, rank, alldims, allcount, size, xtype, name, url, err)
subroutine gtvarinquired(var, dimord, url, allcount, err)
subroutine gtvarinquire2(var, allcount)
subroutine gtvarinquirea(var, attrname, xtype)
subroutine gtvarlimit(var, string, err)
subroutine gtvarlimit_iiii(var, dimord, start, count, stride, err)
subroutine gtvarxformbinary(var1, var2, err)
subroutine gtvaropen(var, url, writable, err)
Definition gtvaropen.f90:65
subroutine gtvaropenbydimord(var, source_var, dimord, count_compact, inherit_slice, err)
subroutine gtvarputattrdouble(var, name, value, err)
subroutine gtvarputattrint(var, name, value, err)
subroutine gtvarputattrlogical(var, name, value, err)
subroutine gtvarputattrchar(var, name, value, xtype, err)
subroutine gtvarputattrreal(var, name, value, err)
subroutine gtvarputline(var, unit, indent, err)
subroutine gtvarputint2(var, value, err)
subroutine gtvarputint4(var, value, err)
subroutine gtvarputreal5(var, value, err)
subroutine gtvarputreal2(var, value, err)
subroutine gtvarputreal4(var, value, err)
subroutine gtvarputreal3(var, value, err)
subroutine gtvarputdouble1(var, value, err)
subroutine gtvarputdouble5(var, value, err)
subroutine gtvarputreal6(var, value, err)
subroutine gtvarputdouble6(var, value, err)
subroutine gtvarputint3(var, value, err)
subroutine gtvarputchar(var, value, nvalue, err)
subroutine gtvarputreal1(var, value, err)
subroutine gtvarputdouble7(var, value, err)
subroutine gtvarputdouble(var, value, nvalue, err)
subroutine gtvarputint6(var, value, err)
subroutine gtvarputreal7(var, value, err)
subroutine gtvarputreal(var, value, nvalue, err)
subroutine gtvarputint1(var, value, err)
subroutine gtvarputdouble3(var, value, err)
subroutine gtvarputdouble4(var, value, err)
subroutine gtvarputdouble2(var, value, err)
subroutine gtvarputint5(var, value, err)
subroutine gtvarputint7(var, value, err)
subroutine gtvarputint(var, value, nvalue, err)
subroutine gtvarsearchinit(urlbase)
subroutine gtvarsearchnext(url, end)
subroutine gtvarslicec(var, string, err)
subroutine gtvarslice(var, dimord, start, count, stride)
subroutine gtvarsliceauto(var, compatible)
subroutine gtvarslicenext(var, dimord, err, stat)
subroutine gtvartmpnam(file, base, result)
Provides kind type parameter values.
Definition dc_types.f90:55
integer, parameter, public dp
Double Precision Real number
Definition dc_types.f90:92
integer, parameter, public sp
Single Precision Real number.
Definition dc_types.f90:82