gtvaropen.f90
Go to the documentation of this file.
1 != gtvaropen.f90 - gtool4 データのオープン
2 !
3 ! Authors:: Yasuhiro MORIKAWA, Eizi TOYODA
4 ! Version:: $Id: gtvaropen.f90,v 1.4 2009-05-25 09:55:57 morikawa Exp $
5 ! Tag Name:: $Name: $
6 ! Copyright:: Copyright (C) GFD Dennou Club, 2000-2005. All rights reserved.
7 ! License:: See COPYRIGHT[link:../../COPYRIGHT]
8 !
9 ! 以下のサブルーチン, 関数は gtdata_generic から提供されます。
10 !
11 
12 subroutine gtvaropen(var, url, writable, err)
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 $'
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  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)
83 999 continue
84  call storeerror(stat, subname, err, cause_c = cause_c, cause_i = cause_i)
85  call endsub(subname, 'mapid=%d', i=(/var%mapid/))
86 end subroutine gtvaropen
integer, parameter, public gt_enotvar
Definition: dc_error.f90:533
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
Provides kind type parameter values.
Definition: dc_types.f90:49
subroutine gtvaropen(var, url, writable, err)
Definition: gtvaropen.f90:13
integer, parameter, public string
Character length for string.
Definition: dc_types.f90:118