Loading...
Searching...
No Matches
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 12 of file gtvaropen.f90.

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, 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 $'
60continue
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 call open(gdnc, filevar, writable, err)
68 if ( present_and_true(err) ) then
69 stat = gt_enotvar
70 goto 999
71 end if
72 call inquire(gdnc, ndims=ndims)
73 allocate(dimlen(max(1, ndims)))
74 call inquire(gdnc, dimlen=dimlen)
75 call map_create(var, vtb_class_netcdf, gdnc%id, ndims, dimlen, stat)
76 if (stat /= dc_noerr) then
77 cause_i = ndims
78 goto 999
79 end if
80 deallocate(dimlen)
81 call limit(var, trim(iorange))
82 call gtvar_dump(var)
83999 continue
84 call storeerror(stat, subname, err, cause_c = cause_c, cause_i = cause_i)
85 call endsub(subname, 'mapid=%d', i=(/var%mapid/))
subroutine, public storeerror(number, where, err, cause_c, cause_i)
Definition dc_error.f90:830
integer, parameter, public gt_efake
Definition dc_error.f90:523
integer, parameter, public dc_noerr
Definition dc_error.f90:509
integer, parameter, public gt_enotvar
Definition dc_error.f90:533
Provides kind type parameter values.
Definition dc_types.f90:49
integer, parameter, public string
Character length for string
Definition dc_types.f90:118
subroutine, public url_chop_iorange(fullname, iorange, remainder)
Definition dc_url.f90:201
subroutine, public map_create(var, class, cid, ndims, allcount, stat)

References dc_error::dc_noerr, dc_error::gt_efake, dc_error::gt_enotvar, gtdata_internal_map::gtvar_dump(), gtdata_internal_map::map_create(), dc_error::storeerror(), dc_types::string, and dc_url::url_chop_iorange().

Here is the call graph for this function: