gtvaropen.f90 File Reference

Go to the source code of this file.

Functions/Subroutines

subroutine gtvaropen (var, url, writable, err)
 

Function/Subroutine Documentation

◆ gtvaropen()

subroutine gtvaropen ( type(gt_variable), intent(out)  var,
character(*), intent(in)  url,
logical, intent(in), optional  writable,
logical, intent(out), optional  err 
)

Definition at line 13 of file gtvaropen.f90.

References dc_trace::beginsub(), dc_error::dc_noerr, dc_trace::endsub(), dc_error::gt_efake, dc_error::gt_enotvar, gtdata_internal_map::gtvar_dump(), gtdata_internal_map::map_create(), dc_present::present_and_true(), dc_error::storeerror(), dc_types::string, and dc_url::url_chop_iorange().

13  !
14  !== gtool4 データのオープン
15  !
16  ! *url* で識別される gtool 変数を開き、*var* に格納します。
17  ! *writable* を <tt>.true.</tt> に指定すると書き込み可で開こうとします。
18  ! デフォルトは書き込み不可で開きます。
19  ! (まだ *writable* の動作は保障されていません)。
20  !
21  ! Open された変数は必ず Close されなければなりません。
22  !
23  ! エラーが発生した場合、引数 *err* が与えられる場合は *err* が
24  ! <tt>.true.</tt> となって返ります。
25  ! 引数 *err* を与えなければプログラムは停止します。
26  !
27  ! *Open* は 2 つのサブルーチンの総称名であり、
28  ! ある変数の次元を指定することで開くことも可能です。
29  ! 上記のサブルーチンを参照ください。
30  !
31  !=== 補足
32  !
33  ! 上記の Open を参照してください。
34  !
35  use dc_string, only: strhead
36  use dc_types, only: string
37  use gtdata_types, only: gt_variable
38  use gtdata_generic, only: limit
39  use gtdata_internal_map, only: map_create, vtb_class_netcdf, vtb_class_memory, gtvar_dump
42  use dc_url, only: url_chop_iorange
44  use dc_trace, only: beginsub, endsub
45  use dc_present, only: present_and_true
46  implicit none
47  type(gt_variable), intent(out):: var
48  character(*), intent(in):: url
49  logical, intent(in), optional:: writable
50  logical, intent(out), optional:: err
51  integer:: ndims, stat, cause_i
52  character(STRING):: cause_c
53  integer, allocatable:: dimlen(:)
54  type(gd_nc_variable):: gdnc
55  character(STRING):: filevar, iorange
56  character(*), parameter:: subname = "GTVarOpen"
57  character(*), parameter:: version = &
58  & '$Name: $' // &
59  & '$Id: gtvaropen.f90,v 1.4 2009-05-25 09:55:57 morikawa Exp $'
60 continue
61  call beginsub(subname, fmt='<%c>', c1=trim(url), version=version)
62  stat = dc_noerr
63  cause_i = 0
64  cause_c = ''
65  var = gt_variable(-1)
66  call url_chop_iorange(url, iorange=iorange, remainder=filevar)
67  if (strhead(filevar, "memory:")) then
68  stat = gt_efake
69  cause_c = 'GTVarOpen(memory:)'
70  goto 999
71  else
72  call open(gdnc, filevar, writable, err)
73  if ( present_and_true(err) ) then
74  stat = gt_enotvar
75  goto 999
76  end if
77  call inquire(gdnc, ndims=ndims)
78  allocate(dimlen(max(1, ndims)))
79  call inquire(gdnc, dimlen=dimlen)
80  call map_create(var, vtb_class_netcdf, gdnc%id, ndims, dimlen, stat)
81  if (stat /= dc_noerr) then
82  cause_i = ndims
83  goto 999
84  end if
85  deallocate(dimlen)
86  endif
87  call limit(var, trim(iorange))
88  call gtvar_dump(var)
89 999 continue
90  call storeerror(stat, subname, err, cause_c = cause_c, cause_i = cause_i)
91  call endsub(subname, 'mapid=%d', i=(/var%mapid/))
integer, parameter, public gt_enotvar
Definition: dc_error.f90:533
logical function, public present_and_true(arg)
Definition: dc_present.f90:80
integer, parameter, public gt_efake
Definition: dc_error.f90:523
subroutine, public map_create(var, class, cid, ndims, allcount, stat)
subroutine, public storeerror(number, where, err, cause_c, cause_i)
Definition: dc_error.f90:830
integer, parameter, public dc_noerr
Definition: dc_error.f90:509
subroutine, public url_chop_iorange(fullname, iorange, remainder)
Definition: dc_url.f90:201
subroutine, public beginsub(name, fmt, i, r, d, L, n, c1, c2, c3, ca, version)
Definition: dc_trace.f90:351
文字型変数の操作.
Definition: dc_string.f90:24
種別型パラメタを提供します。
Definition: dc_types.f90:49
subroutine, public endsub(name, fmt, i, r, d, L, n, c1, c2, c3, ca)
Definition: dc_trace.f90:446
integer, parameter, public string
文字列を保持する 文字型変数の種別型パラメタ
Definition: dc_types.f90:118
Here is the call graph for this function: