gtdata_generic.f90
Go to the documentation of this file.
1 ! -*- coding: utf-8; mode: f90 -*-
2 !-------------------------------------------------------------------------------------
3 ! Copyright (c) 2000-2016 Gtool Development Group. All rights reserved.
4 !-------------------------------------------------------------------------------------
5 ! ** Important**
6 !
7 ! This file is generated from gtdata_generic.erb by ERB included Ruby 2.3.3.
8 ! Please do not edit this file directly. @see "gtdata_generic.erb"
9 !-------------------------------------------------------------------------------------
10 
11 !--
12 ! *** Caution!! ***
13 !
14 ! This file is generated from "gtdata_generic.rb2f90" by Ruby 2.3.1.
15 ! Please do not edit this file directly.
16 !
17 ! [JAPANESE]
18 !
19 ! ※※※ 注意!!! ※※※
20 !
21 ! このファイルは "gtdata_generic.rb2f90" から Ruby 2.3.1
22 ! によって自動生成されたファイルです.
23 ! このファイルを直接編集しませんようお願い致します.
24 !
25 !
26 !++
27 !
28 != gtdata_variable.f90 - gtool 変数の手続総称宣言
29 !
30 ! Authors:: Yasuhiro MORIKAWA, Eizi TOYODA
31 ! Version:: $Id: gtdata_generic.rb2f90,v 1.5 2009-10-11 07:36:37 morikawa Exp $
32 ! Tag Name:: $Name: $
33 ! Copyright:: Copyright (C) GFD Dennou Club, 2000-2005. All rights reserved.
34 ! License:: See COPYRIGHT[link:../../COPYRIGHT]
35 !
36 
38  !
39  !== GT_VARIABLE 型変数の手続総称宣言
40  !
41  ! ファイルの形式に依存しない多次元データである GT_VARIABLE 型変数
42  ! の操作に関する手続きの全てはここで総称宣言されて公開されます。
43  !
44  ! 以降に一覧される手続は、第 1 引数が主な操作対象になるようなスタイルで
45  ! 設計されています。 第 1 引数から gtool4 の手続であることがわかるので、
46  ! 名前にわざわざ GT とはつけていません。
47  !
48  !== 種類別手続き一覧
49  !
50  ! ASCII 順の手続き一覧は下記の "Methods" を参照してください。
51  !
52  !=== 変数の作成・初期化・終了
53  !
54  ! Create :: 変数の作成
55  ! Open :: 変数の初期化
56  ! Close :: 変数の終了処理
57  !
58  !=== 問い合わせ
59  !
60  ! Inquire :: 変数または属性に関する問い合わせ
61  !
62  !=== データの入出力
63  !
64  ! Get :: ファイル入力
65  ! Put, PutLine :: ファイル出力
66  !
67  !=== 次元順序番号の問い合わせ・変更
68  !
69  ! Dimname_To_Dimord :: 次元相対名から次元順序番号の問い合わせ
70  ! Exch_dim :: 次元順序番号の交換
71  !
72  !=== 変数構成写像機能(リミット、次元の加除)
73  !
74  ! 変数 (GT_VARIABLE 型) は順序の決まった次元集合をもちます。それぞれ
75  ! の次元には決まった長さがあり、1から長さまでの番号で識別される格子から
76  ! なっています。しかしながら、必要に応じて変数がもつ次元の順序を入れ替え
77  ! たり、次元が存在しないようにみせかけたり、各々の次元の長さを変えたり格
78  ! 子番号を付け替えたりできます。
79  !
80  ! Limit :: 入出力範囲を拘束
81  ! Add_Dim :: 変数に次元を追加
82  ! Del_Dim :: 変数から次元を隠蔽
83  ! Transform :: 2 つの変数の次元配置の共通化
84  !
85  !=== 入出力範囲限定機能(スライス)
86  !
87  ! Slice :: 入出力範囲を限定
88  ! Slice_Next :: 入出力範囲を移動
89  ! Get_Slice :: 変数入出力範囲限定情報を問い合わせ
90  !
91  !=== 属性関係
92  !
93  ! 属性名は英字、数字、下線から構成されます。先頭の文字は英字または
94  ! "<b><tt>+</tt></b>" でなければなりません。
95  ! "<b><tt>+</tt></b>" から始まる属性名は内部的に使用されるもの
96  ! で、netCDF 実装では大域変数に対応します。
97  !
98  ! Attr_Rewind :: 変数属性列挙の初期化
99  ! Attr_Next :: 変数属性の列挙
100  ! Attr_True :: 変数属性を論理型として読み取り
101  ! Get_Attr :: 変数属性の読み取り
102  ! Put_Attr :: 変数属性の書き出し
103  ! Copy_Attr :: 属性のコピー
104  ! Del_Attr :: 変数属性の削除
105  !
106  !=== その他
107  !
108  ! GTVarSearch :: ファイルの中の変数名の列挙
109  ! GTVarSync :: ファイル入出力の同期
110  ! GTDataTmpNam :: 変数名の自動作成
111  ! GTVarDel :: ファイルの中の変数の削除 (作成中)
112  ! operator(.equivalent.) [link:#M000133] :: 同値判定
113 
114  implicit none
115  !
116  ! 基本開閉動作
117  !
118 
119  interface open
120  subroutine gtvaropenbydimord(var, source_var, dimord, &
121  count_compact, err)
123  type(gt_variable), intent(out):: var
124  type(gt_variable), intent(in):: source_var
125  integer, intent(in):: dimord
126  logical, intent(in), optional:: count_compact
127  logical, intent(out), optional:: err
128  end subroutine gtvaropenbydimord
129  subroutine gtvaropen(var, url, writable, err)
131  type(gt_variable), intent(out):: var
132  character(*), intent(in):: url
133  logical, intent(in), optional:: writable
134  logical, intent(out), optional:: err
135  end subroutine gtvaropen
136  end interface
137 
138  interface create
139  subroutine gtvarcreate(var, url, dims, xtype, long_name, overwrite, err)
141  type(gt_variable), intent(out):: var
142  character(len = *), intent(in):: url
143  type(gt_variable), intent(in), optional:: dims(:)
144  character(len = *), intent(in), optional:: xtype
145  character(len = *), intent(in), optional:: long_name
146  logical, intent(in), optional:: overwrite
147  logical, intent(out), optional:: err
148  end subroutine gtvarcreate
149  subroutine gtvarcreated(var, url, length, xtype, long_name, overwrite, err)
151  type(gt_variable), intent(out):: var
152  character(len = *), intent(in):: url
153  integer, intent(in):: length
154  character(len = *), intent(in), optional:: xtype
155  character(len = *), intent(in), optional:: long_name
156  logical, intent(in), optional:: overwrite
157  logical, intent(out), optional:: err
158  end subroutine gtvarcreated
159  end interface create
160 
161  interface close
162  subroutine gtvarclose(var, err)
164  type(gt_variable), intent(in):: var
165  logical, intent(out), optional:: err
166  end subroutine gtvarclose
167  end interface close
168 
169  !
170  ! --- 属性関係 ---
171  !
172 
173  interface attr_rewind
174  subroutine gtvarattrrewind(var)
176  type(gt_variable), intent(inout):: var
177  end subroutine gtvarattrrewind
178  end interface attr_rewind
179 
180  interface attr_next
181  subroutine gtvarattrnext(var, name, end)
183  type(gt_variable), intent(inout):: var
184  character(*), intent(out):: name
185  logical, intent(out), optional:: end
186  end subroutine gtvarattrnext
187  end interface attr_next
188 
189  ! 論理型読み取りは関数インターフェイスも提供
190  interface attr_true
191  logical function gtvarattrtrue(var, name, default)
193  type(gt_variable), intent(in):: var
194  character(len = *), intent(in):: name
195  logical, intent(in), optional:: default
196  end function gtvarattrtrue
197  end interface attr_true
198 
199  interface get_attr
200  ! スカラで受け取るのが一番簡単。解釈可能な値がとられ、残りは捨てられる。
201  subroutine gtvargetattri(var, name, value, default)
203  type(gt_variable), intent(in):: var
204  character(len = *), intent(in):: name
205  integer, intent(out):: value
206  integer, intent(in), optional:: default
207  end subroutine gtvargetattri
208  subroutine gtvargetattrr(var, name, value, default)
210  type(gt_variable), intent(in):: var
211  character(len = *), intent(in):: name
212  real, intent(out):: value
213  real, intent(in), optional:: default
214  end subroutine gtvargetattrr
215 
216  subroutine gtvargetattrd(var, name, value, default)
218  use dc_types, only: dp
219  type(gt_variable), intent(in):: var
220  character(len = *), intent(in):: name
221  real(DP), intent(out):: value
222  real(DP), intent(in), optional:: default
223  end subroutine gtvargetattrd
224 
225  ! ポインタ配列を使って受け取る場合は解釈可能な数だけ実体が割り付けられる。
226  subroutine gtvargetattrip(var, name, value)
228  type(gt_variable), intent(in):: var
229  character(len = *), intent(in):: name
230  integer, pointer:: value(:)
231  end subroutine gtvargetattrip
232 
233  subroutine gtvargetattrrp(var, name, value)
235  type(gt_variable), intent(in):: var
236  character(len = *), intent(in):: name
237  real, pointer:: value(:)
238  end subroutine gtvargetattrrp
239 
240  subroutine gtvargetattrdp(var, name, value)
242  use dc_types, only: dp
243  type(gt_variable), intent(in):: var
244  character(len = *), intent(in):: name
245  real(DP), pointer:: value(:)
246  end subroutine gtvargetattrdp
247 
248  ! integer 配列, real 配列として受け取る
249  ! 場合は属性長があまっている場合には切り捨てられ、
250  ! 属性長が足りない場合は default 値 (ポインタと違い必須) を埋める。
251 
252  subroutine gtvargetattria(var, name, value, default)
254  type(gt_variable), intent(in):: var
255  character(len = *), intent(in):: name
256  integer, intent(out):: value(:)
257  integer, intent(in):: default
258  end subroutine gtvargetattria
259 
260  subroutine gtvargetattrra(var, name, value, default)
262  type(gt_variable), intent(in):: var
263  character(len = *), intent(in):: name
264  real, intent(out):: value(:)
265  real, intent(in):: default
266  end subroutine gtvargetattrra
267 
268  subroutine gtvargetattrda(var, name, value, default)
270  use dc_types, only: dp
271  type(gt_variable), intent(in):: var
272  character(len = *), intent(in):: name
273  real(DP), intent(out):: value(:)
274  real(DP), intent(in):: default
275  end subroutine gtvargetattrda
276 
277  ! character 型で受け取る場合は通常の文字型代入と同様、
278  ! 受け側変数の長さに合わせて切り捨て・空白埋めを行う。
279  ! 属性が存在しない場合 default 値を使う。
280 
281  subroutine gtvargetattrcc(var, name, value, default)
283  type(gt_variable), intent(in):: var
284  character(len = *), intent(in):: name
285  character(len = *), intent(out):: value
286  character(len = *), intent(in), optional:: default
287  end subroutine gtvargetattrcc
288 
289  ! 文字列として読み取る場合は元の長さは正確に受け取られる。
290  ! 属性が存在しない場合 default 値を使う。
291 
292 ! subroutine GTVarGetAttrSC(var, name, value, default)
293 ! use dc_string, only: VSTRING
294 ! use gtdata_types, only: GT_VARIABLE
295 ! type(GT_VARIABLE), intent(in):: var
296 ! character(len = *), intent(in):: name
297 ! type(VSTRING), intent(out):: value
298 ! character(len = *), intent(in), optional:: default
299 ! end subroutine GTVarGetAttrSC
300 
301  end interface get_attr
302 
303  interface put_attr
304  subroutine gtvarputattrdouble(var, name, value, err)
306  use dc_types, only: dp
307  real(DP), intent(in) :: value(:)
308  real, intent(out), optional :: err
309  type(gt_variable), intent(inout):: var
310  character(len = *), intent(in):: name
311  end subroutine gtvarputattrdouble
312  subroutine gtvarputattrreal(var, name, value, err)
314  use dc_types, only: sp
315  real(SP), intent(in) :: value(:)
316  real(SP), intent(out), optional :: err
317  type(gt_variable), intent(inout):: var
318  character(len = *), intent(in):: name
319  end subroutine gtvarputattrreal
320  subroutine gtvarputattrint(var, name, value, err)
322  integer, intent(in) :: value(:)
323  real, intent(out), optional :: err
324  type(gt_variable), intent(inout):: var
325  character(len = *), intent(in):: name
326  end subroutine gtvarputattrint
327  subroutine gtvarputattrchar(var, name, value, xtype, err)
329  character(len = *), intent(in) :: value
330  logical, intent(out), optional :: err
331  character(len = *), intent(in), optional :: xtype
332  type(gt_variable), intent(inout):: var
333  character(len = *), intent(in):: name
334  end subroutine gtvarputattrchar
335  subroutine gtvarputattrlogical(var, name, value, err)
337  logical, intent(in) :: value
338  real, intent(out), optional :: err
339  type(gt_variable), intent(inout):: var
340  character(len = *), intent(in):: name
341  end subroutine gtvarputattrlogical
342  end interface put_attr
343 
344  interface del_attr
345  subroutine gtvardelattr(var, name, err)
347  type(gt_variable), intent(inout):: var
348  character(len = *), intent(in):: name
349  logical, intent(out), optional:: err
350  end subroutine gtvardelattr
351  end interface del_attr
352 
353  interface copy_attr
354  subroutine gtvarcopyattr(to, attrname, from, err)
356  type(gt_variable), intent(inout):: to
357  character(len = *), intent(in):: attrname
358  type(gt_variable), intent(in):: from
359  logical, intent(out), optional:: err
360  end subroutine gtvarcopyattr
361  subroutine gtvarcopyattrall(to, from, err, global)
363  type(gt_variable), intent(inout):: to
364  type(gt_variable), intent(inout):: from
365  logical, intent(out), optional:: err
366  logical, intent(in), optional:: global
367  end subroutine gtvarcopyattrall
368  end interface copy_attr
369 
370  !
371  ! --- 次元関係 ---
372  !
373 
374  ! 現在の入出力範囲の大きさは inquire(var, size=) で取得できる
375 
376  interface slice
377  ! おまかせ指示
378  ! compatible を指定するとまったく同じに指定
379  subroutine gtvarsliceauto(var, compatible)
381  type(gt_variable), intent(inout):: var
382  type(gt_variable), intent(in), optional:: compatible
383  end subroutine gtvarsliceauto
384  ! 次元を指定した指示
385  subroutine gtvarslice(var, dimord, start, count, stride)
387  type(gt_variable), intent(in):: var
388  integer, intent(in):: dimord
389  integer, intent(in), optional:: start
390  integer, intent(in), optional:: count
391  integer, intent(in), optional:: stride
392  end subroutine gtvarslice
393  ! 文字列による指示
394  subroutine gtvarslicec(var, string, err)
396  type(gt_variable), intent(inout):: var
397  character(len = *), intent(in):: string
398  logical, intent(out):: err
399  end subroutine gtvarslicec
400  end interface slice
401 
402  interface get_slice
403  ! 次元順番を指定して取得
404  subroutine gtvargetslice(var, dimord, start, count, stride, count_compact)
406  type(gt_variable), intent(in):: var
407  integer, intent(in):: dimord
408  integer, intent(out), optional:: start
409  integer, intent(out), optional:: count
410  integer, intent(out), optional:: stride
411  logical, intent(in), optional:: count_compact
412  end subroutine gtvargetslice
413  ! 全次元について一括取得
414  ! あらかじめ inquire(var, alldims) して配列を確保する。
415  subroutine gtvargetsliceall(var, start, count, stride)
417  type(gt_variable), intent(in):: var
418  integer, intent(out), optional:: start(:), count(:), stride(:)
419  end subroutine gtvargetsliceall
420  end interface get_slice
421 
423  integer function gtvardimname2ord(var, name)
425  type(gt_variable), intent(in):: var
426  character(len = *), intent(in):: name
427  end function gtvardimname2ord
428  end interface dimname_to_dimord
429 
430  ! limit: 空間変換器機能のセットアップ
431  !
432  interface limit
433  subroutine gtvarlimit(var, string, err)
435  type(gt_variable), intent(inout) :: var
436  character(len = *), intent(in) :: string
437  logical, intent(out), optional :: err
438  end subroutine gtvarlimit
439  subroutine gtvarlimit_iiii(var, dimord, start, count, stride, err)
441  type(gt_variable), intent(inout):: var
442  integer, intent(in) :: dimord
443  integer, intent(in) , optional :: start, count, stride
444  logical, intent(out), optional :: err
445  end subroutine gtvarlimit_iiii
446  end interface limit
447 
448  interface transform
449  subroutine gtvarxformbinary(var1, var2, err)
451  type(gt_variable), intent(inout):: var1, var2
452  logical, intent(out), optional:: err
453  end subroutine gtvarxformbinary
454  end interface transform
455 
456  ! 明示的空間変換機能
457 
458  ! 変数ハンドル var の dimord 番目の位置に次元
459  ! dimvar を追加する。dimord 番目以降の次元は一つ後ろにずれる。
460  ! もし dimord が var の有効次元数より大きければ (有効次元数 + 1)
461  ! が与えられたものとみなされる。
462  interface add_dim
463  subroutine gtvaradddim(var, dimord, dimvar, err)
465  type(gt_variable), intent(in):: var
466  type(gt_variable), intent(in):: dimvar
467  integer, intent(in):: dimord
468  logical, intent(out):: err
469  end subroutine gtvaradddim
470  end interface add_dim
471 
472  ! 変数ハンドルから次元を「除去」する。実際には、
473  ! 次元対応表の順位を下げ有効次元数をデクリメントするだけなので、
474  ! 入出力に支障はない。
475  interface del_dim
476  subroutine gtvardeldim(var, dimord, err)
478  type(gt_variable), intent(in):: var
479  integer, intent(in):: dimord
480  logical, intent(out):: err
481  end subroutine gtvardeldim
482  end interface del_dim
483 
484  ! 次元対応表の順位の交換
485  interface exch_dim
486  subroutine gtvarexchdim(var, dimord1, dimord2, count_compact, err)
488  type(gt_variable), intent(in):: var
489  integer, intent(in):: dimord1, dimord2
490  logical, intent(in), optional:: count_compact
491  logical, intent(out):: err
492  end subroutine gtvarexchdim
493  end interface exch_dim
494 
495  !
496  ! --- 問い合わせ ---
497  !
498 
499  interface inquire
500  subroutine gtvarinquire(var, growable, &
501  & rank, alldims, allcount, size, &
502  & xtype, name, url, err)
504  type(gt_variable), intent(in):: var
505  character(len=*), intent(out), optional:: xtype
506  character(len=*), intent(out), optional:: name
507  character(len=*), intent(out), optional:: url
508  integer, intent(out), optional:: rank
509  integer, intent(out), optional:: alldims
510  integer, intent(out), optional:: allcount
511  integer, intent(out), optional:: size
512  logical, intent(out), optional:: growable
513  logical, intent(out), optional:: err
514  end subroutine gtvarinquire
515  subroutine gtvarinquire2(var, allcount)
517  type(gt_variable), intent(in):: var
518  integer, intent(out):: allcount(:)
519  end subroutine gtvarinquire2
520  subroutine gtvarinquired(var, dimord, url, allcount, err)
522  type(gt_variable), intent(in):: var
523  integer, intent(in):: dimord
524  character(len=*), intent(out), optional:: url
525  integer, intent(out), optional:: allcount
526  logical, intent(out), optional:: err
527  end subroutine gtvarinquired
528  subroutine gtvarinquirea(var, attrname, xtype)
530  type(gt_variable), intent(in):: var
531  character(len=*), intent(in):: attrname
532  character(len=*), intent(out), optional:: xtype
533  end subroutine gtvarinquirea
534  end interface inquire
535 
536  ! 総なめ用イテレータ
537  interface slice_next
538  subroutine gtvarslicenext(var, dimord, err, stat)
540  type(gt_variable), intent(in out):: var
541  integer, intent(in), optional:: dimord
542  logical, intent(out), optional:: err
543  integer, intent(out), optional:: stat
544  end subroutine gtvarslicenext
545  end interface slice_next
546 
547  ! 同値判定
548  interface operator(.equivalent.)
549  logical function gtvarequivalent(var1, var2)
551  type(gt_variable), intent(in):: var1, var2
552  end function gtvarequivalent
553  end interface operator(.equivalent.)
554 
555  !
556  !== 入出力
557  !
558  !=== 入力
559  !
560  ! Get(var, value, nvalue, [err])
561  ! 1次元配列に現在の入出力範囲を取得する。
562  ! nvalue は利用者が配列長を格納しなければならない。
563  ! 個別名 GTVarGetReal を用いると多次元配列に入力
564  ! することもできるが、入出力範囲との関係に注意が必要。
565  !
566  ! Get(var, value, [err]) は 1〜 7 次元のポインタをとる。
567  ! 入出力範囲をポインタ次元数に限定し、配列を確保し、
568  ! 値を入れて返す。
569  !
570 
571  interface get
572  subroutine gtvargetdouble(var, value, nvalue, err)
574  use dc_types, only: dp
575  real(DP), intent(out):: value(*)
576  type(gt_variable), intent(in):: var
577  integer, intent(in):: nvalue
578  logical, intent(out), optional:: err
579  end subroutine gtvargetdouble
580  subroutine gtvargetpointerdouble1(var, value, err)
582  use dc_types, only: dp
583  real(DP), pointer :: value(:)
584  type(gt_variable), intent(in) :: var
585  logical, intent(out), optional :: err
586  end subroutine gtvargetpointerdouble1
587  subroutine gtvargetpointerdouble2(var, value, err)
589  use dc_types, only: dp
590  real(DP), pointer :: value(:,:)
591  type(gt_variable), intent(in) :: var
592  logical, intent(out), optional :: err
593  end subroutine gtvargetpointerdouble2
594  subroutine gtvargetpointerdouble3(var, value, err)
596  use dc_types, only: dp
597  real(DP), pointer :: value(:,:,:)
598  type(gt_variable), intent(in) :: var
599  logical, intent(out), optional :: err
600  end subroutine gtvargetpointerdouble3
601  subroutine gtvargetpointerdouble4(var, value, err)
603  use dc_types, only: dp
604  real(DP), pointer :: value(:,:,:,:)
605  type(gt_variable), intent(in) :: var
606  logical, intent(out), optional :: err
607  end subroutine gtvargetpointerdouble4
608  subroutine gtvargetpointerdouble5(var, value, err)
610  use dc_types, only: dp
611  real(DP), pointer :: value(:,:,:,:,:)
612  type(gt_variable), intent(in) :: var
613  logical, intent(out), optional :: err
614  end subroutine gtvargetpointerdouble5
615  subroutine gtvargetpointerdouble6(var, value, err)
617  use dc_types, only: dp
618  real(DP), pointer :: value(:,:,:,:,:,:)
619  type(gt_variable), intent(in) :: var
620  logical, intent(out), optional :: err
621  end subroutine gtvargetpointerdouble6
622  subroutine gtvargetpointerdouble7(var, value, err)
624  use dc_types, only: dp
625  real(DP), pointer :: value(:,:,:,:,:,:,:)
626  type(gt_variable), intent(in) :: var
627  logical, intent(out), optional :: err
628  end subroutine gtvargetpointerdouble7
629  subroutine gtvargetreal(var, value, nvalue, err)
631  use dc_types, only: sp
632  real(SP), intent(out):: value(*)
633  type(gt_variable), intent(in):: var
634  integer, intent(in):: nvalue
635  logical, intent(out), optional:: err
636  end subroutine gtvargetreal
637  subroutine gtvargetpointerreal1(var, value, err)
639  use dc_types, only: sp
640  real(SP), pointer :: value(:)
641  type(gt_variable), intent(in) :: var
642  logical, intent(out), optional :: err
643  end subroutine gtvargetpointerreal1
644  subroutine gtvargetpointerreal2(var, value, err)
646  use dc_types, only: sp
647  real(SP), pointer :: value(:,:)
648  type(gt_variable), intent(in) :: var
649  logical, intent(out), optional :: err
650  end subroutine gtvargetpointerreal2
651  subroutine gtvargetpointerreal3(var, value, err)
653  use dc_types, only: sp
654  real(SP), pointer :: value(:,:,:)
655  type(gt_variable), intent(in) :: var
656  logical, intent(out), optional :: err
657  end subroutine gtvargetpointerreal3
658  subroutine gtvargetpointerreal4(var, value, err)
660  use dc_types, only: sp
661  real(SP), pointer :: value(:,:,:,:)
662  type(gt_variable), intent(in) :: var
663  logical, intent(out), optional :: err
664  end subroutine gtvargetpointerreal4
665  subroutine gtvargetpointerreal5(var, value, err)
667  use dc_types, only: sp
668  real(SP), pointer :: value(:,:,:,:,:)
669  type(gt_variable), intent(in) :: var
670  logical, intent(out), optional :: err
671  end subroutine gtvargetpointerreal5
672  subroutine gtvargetpointerreal6(var, value, err)
674  use dc_types, only: sp
675  real(SP), pointer :: value(:,:,:,:,:,:)
676  type(gt_variable), intent(in) :: var
677  logical, intent(out), optional :: err
678  end subroutine gtvargetpointerreal6
679  subroutine gtvargetpointerreal7(var, value, err)
681  use dc_types, only: sp
682  real(SP), pointer :: value(:,:,:,:,:,:,:)
683  type(gt_variable), intent(in) :: var
684  logical, intent(out), optional :: err
685  end subroutine gtvargetpointerreal7
686  subroutine gtvargetint(var, value, nvalue, err)
688  integer, intent(out):: value(*)
689  type(gt_variable), intent(in):: var
690  integer, intent(in):: nvalue
691  logical, intent(out), optional:: err
692  end subroutine gtvargetint
693  subroutine gtvargetpointerint1(var, value, err)
695  integer, pointer :: value(:)
696  type(gt_variable), intent(in) :: var
697  logical, intent(out), optional :: err
698  end subroutine gtvargetpointerint1
699  subroutine gtvargetpointerint2(var, value, err)
701  integer, pointer :: value(:,:)
702  type(gt_variable), intent(in) :: var
703  logical, intent(out), optional :: err
704  end subroutine gtvargetpointerint2
705  subroutine gtvargetpointerint3(var, value, err)
707  integer, pointer :: value(:,:,:)
708  type(gt_variable), intent(in) :: var
709  logical, intent(out), optional :: err
710  end subroutine gtvargetpointerint3
711  subroutine gtvargetpointerint4(var, value, err)
713  integer, pointer :: value(:,:,:,:)
714  type(gt_variable), intent(in) :: var
715  logical, intent(out), optional :: err
716  end subroutine gtvargetpointerint4
717  subroutine gtvargetpointerint5(var, value, err)
719  integer, pointer :: value(:,:,:,:,:)
720  type(gt_variable), intent(in) :: var
721  logical, intent(out), optional :: err
722  end subroutine gtvargetpointerint5
723  subroutine gtvargetpointerint6(var, value, err)
725  integer, pointer :: value(:,:,:,:,:,:)
726  type(gt_variable), intent(in) :: var
727  logical, intent(out), optional :: err
728  end subroutine gtvargetpointerint6
729  subroutine gtvargetpointerint7(var, value, err)
731  integer, pointer :: value(:,:,:,:,:,:,:)
732  type(gt_variable), intent(in) :: var
733  logical, intent(out), optional :: err
734  end subroutine gtvargetpointerint7
735  end interface get
736 
737  !
738  ! --- 印字 ---
739  !
740  ! 印字というのは変数にしてみれば入力だしファイルにしてみれば出力だ。
741  ! だから put と get を兼営しているようなものでまことにあやしいのだが、
742  ! いちおう dc_string の手続名を継承して put_line にしておく。
743 
744  interface putline
745  subroutine gtvarputline( var, unit, indent, err )
747  type(gt_variable), intent(in):: var
748  integer, intent(in), optional:: unit
749  character(*), intent(in), optional:: indent
750  logical, intent(out), optional:: err
751  end subroutine gtvarputline
752  end interface
753 
754  !
755  ! --- 出力 ---
756  !
757  interface put
758  subroutine gtvarputdouble(var, value, nvalue, err)
760  use dc_types, only: dp
761  real(DP), intent(in):: value(nvalue)
762  type(gt_variable), intent(in):: var
763  integer, intent(in):: nvalue
764  logical, intent(out), optional:: err
765  end subroutine gtvarputdouble
766  subroutine gtvarputdouble1(var, value, err)
768  use dc_types, only: dp
769  real(DP), intent(in) :: value(:)
770  type(gt_variable),intent(in):: var
771  logical ,intent(out), optional:: err
772  end subroutine gtvarputdouble1
773  subroutine gtvarputdouble2(var, value, err)
775  use dc_types, only: dp
776  real(DP), intent(in) :: value(:,:)
777  type(gt_variable),intent(in):: var
778  logical ,intent(out), optional:: err
779  end subroutine gtvarputdouble2
780  subroutine gtvarputdouble3(var, value, err)
782  use dc_types, only: dp
783  real(DP), intent(in) :: value(:,:,:)
784  type(gt_variable),intent(in):: var
785  logical ,intent(out), optional:: err
786  end subroutine gtvarputdouble3
787  subroutine gtvarputdouble4(var, value, err)
789  use dc_types, only: dp
790  real(DP), intent(in) :: value(:,:,:,:)
791  type(gt_variable),intent(in):: var
792  logical ,intent(out), optional:: err
793  end subroutine gtvarputdouble4
794  subroutine gtvarputdouble5(var, value, err)
796  use dc_types, only: dp
797  real(DP), intent(in) :: value(:,:,:,:,:)
798  type(gt_variable),intent(in):: var
799  logical ,intent(out), optional:: err
800  end subroutine gtvarputdouble5
801  subroutine gtvarputdouble6(var, value, err)
803  use dc_types, only: dp
804  real(DP), intent(in) :: value(:,:,:,:,:,:)
805  type(gt_variable),intent(in):: var
806  logical ,intent(out), optional:: err
807  end subroutine gtvarputdouble6
808  subroutine gtvarputdouble7(var, value, err)
810  use dc_types, only: dp
811  real(DP), intent(in) :: value(:,:,:,:,:,:,:)
812  type(gt_variable),intent(in):: var
813  logical ,intent(out), optional:: err
814  end subroutine gtvarputdouble7
815  subroutine gtvarputreal(var, value, nvalue, err)
817  use dc_types, only: sp
818  real(SP), intent(in):: value(nvalue)
819  type(gt_variable), intent(in):: var
820  integer, intent(in):: nvalue
821  logical, intent(out), optional:: err
822  end subroutine gtvarputreal
823  subroutine gtvarputreal1(var, value, err)
825  use dc_types, only: sp
826  real(SP), intent(in) :: value(:)
827  type(gt_variable),intent(in):: var
828  logical ,intent(out), optional:: err
829  end subroutine gtvarputreal1
830  subroutine gtvarputreal2(var, value, err)
832  use dc_types, only: sp
833  real(SP), intent(in) :: value(:,:)
834  type(gt_variable),intent(in):: var
835  logical ,intent(out), optional:: err
836  end subroutine gtvarputreal2
837  subroutine gtvarputreal3(var, value, err)
839  use dc_types, only: sp
840  real(SP), intent(in) :: value(:,:,:)
841  type(gt_variable),intent(in):: var
842  logical ,intent(out), optional:: err
843  end subroutine gtvarputreal3
844  subroutine gtvarputreal4(var, value, err)
846  use dc_types, only: sp
847  real(SP), intent(in) :: value(:,:,:,:)
848  type(gt_variable),intent(in):: var
849  logical ,intent(out), optional:: err
850  end subroutine gtvarputreal4
851  subroutine gtvarputreal5(var, value, err)
853  use dc_types, only: sp
854  real(SP), intent(in) :: value(:,:,:,:,:)
855  type(gt_variable),intent(in):: var
856  logical ,intent(out), optional:: err
857  end subroutine gtvarputreal5
858  subroutine gtvarputreal6(var, value, err)
860  use dc_types, only: sp
861  real(SP), intent(in) :: value(:,:,:,:,:,:)
862  type(gt_variable),intent(in):: var
863  logical ,intent(out), optional:: err
864  end subroutine gtvarputreal6
865  subroutine gtvarputreal7(var, value, err)
867  use dc_types, only: sp
868  real(SP), intent(in) :: value(:,:,:,:,:,:,:)
869  type(gt_variable),intent(in):: var
870  logical ,intent(out), optional:: err
871  end subroutine gtvarputreal7
872  subroutine gtvarputint(var, value, nvalue, err)
874  integer, intent(in):: value(nvalue)
875  type(gt_variable), intent(in):: var
876  integer, intent(in):: nvalue
877  logical, intent(out), optional:: err
878  end subroutine gtvarputint
879  subroutine gtvarputint1(var, value, err)
881  integer, intent(in) :: value(:)
882  type(gt_variable),intent(in):: var
883  logical ,intent(out), optional:: err
884  end subroutine gtvarputint1
885  subroutine gtvarputint2(var, value, err)
887  integer, intent(in) :: value(:,:)
888  type(gt_variable),intent(in):: var
889  logical ,intent(out), optional:: err
890  end subroutine gtvarputint2
891  subroutine gtvarputint3(var, value, err)
893  integer, intent(in) :: value(:,:,:)
894  type(gt_variable),intent(in):: var
895  logical ,intent(out), optional:: err
896  end subroutine gtvarputint3
897  subroutine gtvarputint4(var, value, err)
899  integer, intent(in) :: value(:,:,:,:)
900  type(gt_variable),intent(in):: var
901  logical ,intent(out), optional:: err
902  end subroutine gtvarputint4
903  subroutine gtvarputint5(var, value, err)
905  integer, intent(in) :: value(:,:,:,:,:)
906  type(gt_variable),intent(in):: var
907  logical ,intent(out), optional:: err
908  end subroutine gtvarputint5
909  subroutine gtvarputint6(var, value, err)
911  integer, intent(in) :: value(:,:,:,:,:,:)
912  type(gt_variable),intent(in):: var
913  logical ,intent(out), optional:: err
914  end subroutine gtvarputint6
915  subroutine gtvarputint7(var, value, err)
917  integer, intent(in) :: value(:,:,:,:,:,:,:)
918  type(gt_variable),intent(in):: var
919  logical ,intent(out), optional:: err
920  end subroutine gtvarputint7
921  subroutine gtvarputchar(var, value, nvalue, err)
923  type(gt_variable), intent(in):: var
924  integer, intent(in):: nvalue
925  character(*), intent(in):: value(nvalue)
926  logical, intent(out), optional:: err
927  end subroutine gtvarputchar
928  end interface put
929 
930  !
931  ! === 変数とファイルの関係 ===
932  !
933 
934  interface gtvarsearch
935  subroutine gtvarsearchnext(url, end)
936  character(len = *), intent(out):: url
937  logical, intent(out):: end
938  end subroutine gtvarsearchnext
939  subroutine gtvarsearchinit(urlBase)
940  character(len = *), intent(in):: urlBase
941  end subroutine gtvarsearchinit
942  end interface gtvarsearch
943 
944  !
945  ! === 安全のための脱出口 ===
946  !
947  ! SysDepAbort が呼び出すので、StoreError を呼んではならない
948  !
949 
950  interface
951  subroutine gtvarsync(var, stat)
953  type(gt_variable), intent(inout), optional:: var
954  integer, intent(out), optional:: stat
955  end subroutine gtvarsync
956  end interface
957 
958  !
959  ! === ユーティリティ ===
960  !
961  ! gtdata 層だけで書かれたライブラリ。
962 
963  interface create
964  subroutine gtvarcreatecopyc(var, url, copyfrom, copyvalue, &
965  & overwrite, err)
967  implicit none
968  type(gt_variable), intent(out):: var
969  character(len = *), intent(in):: url
970  type(gt_variable), intent(inout):: copyfrom
971  logical, intent(in), optional:: copyvalue
972  logical, intent(in), optional:: overwrite
973  logical, intent(out), optional:: err
974  end subroutine gtvarcreatecopyc
975  end interface
976 
977  !
978  ! 変数の削除 (作成中)
979  !
980  interface gtvardel
981  subroutine gtvardel1(varname, err)
982  character(len = *), intent(in):: varname
983  logical, intent(out):: err
984  end subroutine gtvardel1
985  end interface
986 
987  !
988  ! --- 構造体関係 ---
989  !
990 
991  interface add_member
992  subroutine gtvaraddmember(var, url, link_name)
994  type(gt_variable), intent(inout):: var
995  character(len = *), intent(in):: url
996  character(len = *), intent(in), optional:: link_name
997  end subroutine gtvaraddmember
998  end interface
999 
1000  ! 一意な変数名の自動作成
1001  interface gtdatatmpnam
1002  subroutine gtvartmpnam(file, base, result)
1003  character(len = *), intent(in):: file
1004  character(len = *), intent(in):: base
1005  character(len = *), intent(out):: result
1006  end subroutine gtvartmpnam
1007  end interface
1008 
1009 end module gtdata_generic
subroutine gtvargetpointerdouble1(var, value, err)
subroutine gtvargetpointerdouble3(var, value, err)
subroutine gtvarinquire2(var, allcount)
subroutine gtvardelattr(var, name, err)
subroutine gtvarputchar(var, value, nvalue, err)
subroutine gtvarputattrdouble(var, name, value, err)
subroutine gtvarinquire(var, growable, rank, alldims, allcount, size, xtype, name, url, err)
subroutine gtvargetsliceall(var, start, count, stride)
subroutine gtvargetpointerdouble7(var, value, err)
subroutine gtvargetslice(var, dimord, start, count, stride, count_compact)
subroutine gtvargetattrcc(var, name, value, default)
subroutine gtvarputreal5(var, value, err)
subroutine gtvarlimit_iiii(var, dimord, start, count, stride, err)
Definition: gtvarlimit.f90:14
subroutine gtvarputattrreal(var, name, value, err)
subroutine gtvartmpnam(file, base, result)
Definition: gtvartmpnam.f90:15
subroutine gtvargetattrip(var, name, value)
subroutine gtvarputint1(var, value, err)
subroutine gtvarputint6(var, value, err)
subroutine gtvarputint2(var, value, err)
subroutine gtvarputdouble5(var, value, err)
subroutine gtvarclose(var, err)
Definition: gtvarclose.f90:14
subroutine gtvarsliceauto(var, compatible)
subroutine gtvargetpointerint2(var, value, err)
subroutine gtvargetattrda(var, name, value, default)
subroutine gtvarputdouble2(var, value, err)
subroutine gtvargetpointerreal7(var, value, err)
subroutine gtvarputreal7(var, value, err)
subroutine gtvarputint5(var, value, err)
subroutine gtvarputint7(var, value, err)
subroutine gtvarcreated(var, url, length, xtype, long_name, overwrite, err)
subroutine gtvarputreal6(var, value, err)
subroutine gtvarattrrewind(var)
subroutine gtvarslicec(var, string, err)
Definition: gtvarslice.f90:114
subroutine gtvarputreal(var, value, nvalue, err)
Definition: gtvarputnum.f90:64
subroutine gtvargetattrr(var, attrname, value, default)
subroutine gtvarcreatecopyc(var, url, copyfrom, copyvalue, overwrite, err)
subroutine gtvarputint(var, value, nvalue, err)
Definition: gtvarputnum.f90:98
subroutine gtvarputint4(var, value, err)
subroutine gtvargetdouble(var, value, nvalue, err)
Definition: gtvargetnum.f90:42
subroutine gtvarslice(var, dimord, start, count, stride)
Definition: gtvarslice.f90:14
integer function gtvardimname2ord(var, name)
subroutine gtvargetpointerreal5(var, value, err)
subroutine gtvargetattrra(var, name, value, default)
subroutine gtvarcopyattr(to, attrname, from, err)
subroutine gtvarputline(var, unit, indent, err)
subroutine gtvarputreal2(var, value, err)
subroutine gtvarputdouble4(var, value, err)
subroutine gtvargetattrd(var, attrname, value, default)
subroutine gtvarsync(var, stat)
Definition: gtvarsync.f90:15
subroutine gtvargetpointerint3(var, value, err)
subroutine gtvarputreal3(var, value, err)
subroutine gtvargetpointerreal1(var, value, err)
subroutine gtvarputdouble7(var, value, err)
subroutine gtvarputdouble6(var, value, err)
integer, parameter, public dp
倍精度実数型変数
Definition: dc_types.f90:83
subroutine gtvargetpointerreal3(var, value, err)
subroutine gtvargetint(var, value, nvalue, err)
subroutine gtvarlimit(var, string, err)
Definition: gtvarlimit.f90:147
subroutine gtvargetattrdp(var, name, value)
subroutine gtvarputdouble1(var, value, err)
subroutine gtvargetpointerint6(var, value, err)
subroutine gtvarattrnext(var, name, end)
subroutine gtvargetpointerreal2(var, value, err)
subroutine gtvargetattria(var, name, value, default)
subroutine gtvardeldim(var, dimord, err)
Definition: gtvardeldim.f90:14
subroutine gtvargetpointerint5(var, value, err)
subroutine gtvarexchdim(var, dimord1, dimord2, count_compact, err)
subroutine gtvarslicenext(var, dimord, err, stat)
種別型パラメタを提供します。
Definition: dc_types.f90:49
subroutine gtvarputdouble(var, value, nvalue, err)
Definition: gtvarputnum.f90:30
subroutine gtvarcopyattrall(to, from, err, global)
subroutine gtvarputattrint(var, name, value, err)
subroutine gtvargetpointerint7(var, value, err)
subroutine gtvarsearchnext(url, end)
Definition: gtvarsearch.f90:15
subroutine gtvargetpointerdouble5(var, value, err)
subroutine gtvarputattrchar(var, name, value, xtype, err)
integer, parameter, public sp
単精度実数型変数
Definition: dc_types.f90:73
subroutine gtvargetpointerdouble2(var, value, err)
subroutine gtvaropenbydimord(var, source_var, dimord, count_compact, err)
subroutine gtvarxformbinary(var1, var2, err)
subroutine gtvarsearchinit(urlBase)
Definition: gtvarsearch.f90:54
subroutine gtvarcreate(var, url, dims, xtype, long_name, overwrite, err)
Definition: gtvarcreate.f90:14
subroutine gtvaropen(var, url, writable, err)
Definition: gtvaropen.f90:13
subroutine gtvargetpointerdouble6(var, value, err)
logical function gtvarattrtrue(var, name, default)
subroutine gtvargetpointerreal6(var, value, err)
subroutine gtvarputdouble3(var, value, err)
subroutine gtvarputreal4(var, value, err)
subroutine gtvargetpointerdouble4(var, value, err)
subroutine gtvargetattri(var, attrname, value, default)
subroutine gtvarputint3(var, value, err)
subroutine gtvargetpointerint1(var, value, err)
logical function gtvarequivalent(var1, var2)
subroutine gtvargetpointerreal4(var, value, err)
subroutine gtvarinquirea(var, attrname, xtype)
subroutine gtvarputreal1(var, value, err)
subroutine gtvaraddmember(var, member_url, link_name)
subroutine gtvargetreal(var, value, nvalue, err)
Definition: gtvargetnum.f90:85
subroutine gtvargetpointerint4(var, value, err)
subroutine gtvaradddim(var, dimord, dimvar, err)
Definition: gtvaradddim.f90:14
subroutine gtvarputattrlogical(var, name, value, err)
subroutine gtvarinquired(var, dimord, url, allcount, err)
subroutine gtvargetattrrp(var, name, value)