gtvarcreate.f90 File Reference

Go to the source code of this file.

Functions/Subroutines

subroutine gtvarcreate (var, url, dims, xtype, long_name, overwrite, err)
 

Function/Subroutine Documentation

◆ gtvarcreate()

subroutine gtvarcreate ( type(gt_variable), intent(out)  var,
character(len = *), intent(in)  url,
type(gt_variable), dimension(:), intent(in), optional  dims,
character(len = *), intent(in), optional  xtype,
character(len = *), intent(in), optional  long_name,
logical, intent(in), optional  overwrite,
logical, intent(out), optional  err 
)

Definition at line 14 of file gtvarcreate.f90.

References dc_trace::beginsub(), dc_trace::dbgmessage(), dc_error::dc_noerr, dc_trace::endsub(), dc_error::gt_efake, gtdata_internal_map::gtvar_dump(), gtdata_internal_map::map_create(), dc_error::storeerror(), dc_types::token, and gtdata_internal_map::var_class().

14  !
15  !== 従属変数の作成
16  !
17  ! 場所 *url* に次元 *dims* を持った変数つまり GT_VARIABLE 型
18  ! の実体を作成し、それを第 1 引数 *var* にセットします。
19  ! Open されたものと同様、第1引数 *var* は後で必ず
20  ! Close されなければなりません。
21  !
22  ! 型 *xtype* を省略すると "+float+" と
23  ! みなされます。既存変数があるとき失敗しますが、
24  ! overwrite == .true. であれば上書きして続行します。
25  ! (まだ *overwrite* の動作は保障されていません)。
26  ! dims の省略は 0 次元変数の設定を意味します。
27  !
28  ! 作成の際にエラーが生じた場合、メッセージを出力してプログラムは
29  ! 強制終了します。*err* を与えてある場合にはこの引数に .true.
30  ! が返り、プログラムは終了しません。
31  !
32  !
33  use gtdata_types, only: gt_variable
34  use gtdata_internal_map, only: var_class, vtb_class_netcdf, vtb_class_memory, &
38  use dc_string, only: strhead
40  use dc_types, only: token
41  use dc_trace, only: beginsub, endsub, dbgmessage
42  implicit none
43  type(gt_variable), intent(out):: var
44  character(len = *), intent(in):: url
45  type(gt_variable), intent(in), optional:: dims(:)
46  character(len = *), intent(in), optional:: xtype
47  character(len = *), intent(in), optional:: long_name
48  logical, intent(in), optional:: overwrite
49  logical, intent(out), optional:: err
50  type(gd_nc_variable), allocatable:: gdnc_dims(:)
51  type(gd_nc_variable):: gdnc
52  integer, allocatable:: allcount(:)
53  integer:: i, ndims, stat, cause_i
54  character(len = TOKEN):: myxtype
55  character(len = *), parameter:: subname = "GTVarCreate"
56  character(len = *), parameter:: version = &
57  & '$Name: $' // &
58  & '$Id: gtvarcreate.f90,v 1.4 2009-05-25 09:55:58 morikawa Exp $'
59 continue
60  stat = dc_noerr
61  ndims = 0
62  cause_i = 0
63  if (present(dims)) ndims = size(dims)
64  call beginsub(subname, 'url=%c ndims=%d', c1=trim(url), i=(/ndims/), &
65  & version=version)
66  if (strhead(url, "memory:")) then
67  ! メモリ変数の作成
68  stat = gt_efake
69  goto 999
70  else
71  ! gdnc 変数の作成
72  if (present(err)) err = .false.
73  if (present(xtype)) then
74  myxtype = xtype
75  else
76  myxtype = "float"
77  endif
78  if (present(dims)) then
79  allocate(gdnc_dims(ndims), allcount(ndims))
80  do, i = 1, ndims
81  call var_class(dims(i), cid=gdnc_dims(i)%id)
82  call dbgmessage('dim=%d mapid=%d -> cid=%d', i=(/i, dims(i)%mapid, gdnc_dims(i)%id/))
83  call inquire(gdnc_dims(i), dimlen=allcount(i))
84  enddo
85  call create(var=gdnc, url=url, dims=gdnc_dims, xtype=myxtype, &
86  & overwrite=overwrite, err=err)
87  else
88  ndims = 0
89  allocate(gdnc_dims(1), allcount(1)) ! dummy
90  call create(var=gdnc, url=url, dims=gdnc_dims(1:0), &
91  & xtype=myxtype, overwrite=overwrite, err=err)
92  endif
93  call map_create(var, vtb_class_netcdf, gdnc%id, ndims, allcount, stat)
94  if (stat /= dc_noerr) then
95  cause_i = ndims
96  goto 999
97  end if
98  deallocate(gdnc_dims, allcount)
99  if (present(long_name)) then
100  call put_attr(gdnc, 'long_name', long_name, err=err)
101  endif
102  endif
103  call gtvar_dump(var)
104  call dbgmessage('var%%mapid=%d', i=(/var % mapid/))
105 999 continue
106  call storeerror(stat, subname, err, cause_i=cause_i)
107  call endsub(subname)
integer, parameter, public token
単語やキーワードを保持する文字型変数の種別型パラメタ
Definition: dc_types.f90:109
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 dbgmessage(fmt, i, r, d, L, n, c1, c2, c3, ca)
Definition: dc_trace.f90:509
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
subroutine, public var_class(var, class, cid)
Here is the call graph for this function: