gtvarputattrchar.f90
Go to the documentation of this file.
1 !
2 != 属性の付加
3 !
4 ! Authors:: Eizi TOYODA, Yasuhiro MORIKAWA
5 ! Version:: $Id: gtvarputattrchar.f90,v 1.6 2009-05-25 09:55:57 morikawa Exp $
6 ! Tag Name:: $Name: $
7 ! Copyright:: Copyright (C) GFD Dennou Club, 2000-2005. All rights reserved.
8 ! License:: See COPYRIGHT[link:../../COPYRIGHT]
9 !
10 ! 以下のサブルーチン、関数は gtdata_generic から gtdata_generic#Put_Attr
11 ! として提供されます。
12 
13 subroutine gtvarputattrlogical(var, name, value, err)
14  !
15  !== 属性の付加
16  !
17  ! 変数 *var* に, 属性名 *name* とその値 *value* を付加します。
18  !
19  ! *Put_Attr* は複数のサブルーチンの総称名なので、
20  ! *value* には様々な型の変数を与えることが可能です。
21  ! 以下のサブルーチンを参照してください。
22  !
23  ! 引数に *xtype* を持つものは、その引数に型を指定することで、
24  ! 引数 *value* には文字型を与えても、
25  ! 整数型、実数型 (単精度、倍精度) の値を付加することが可能です。
26  ! 下記のサブルーチンを参照ください。
27  !
28  ! エラーが発生した場合、引数 *err* が与えられる場合は *err* が
29  ! <tt>.true.</tt> となって返ります。
30  ! 引数 *err* を与えなければプログラムは停止します。
31  !
32  use gtdata_types, only: gt_variable
33  use gtdata_internal_map, only: var_class, vtb_class_netcdf
36  use dc_string, only: tochar
37  implicit none
38  type(gt_variable), intent(inout) :: var
39  character(len = *), intent(in) :: name
40  logical, intent(in) :: value
41  logical, intent(out), optional:: err
42  integer:: class, cid
43 continue
44  call var_class(var, class, cid)
45  if (class == vtb_class_netcdf) then
46  if (value) then
47  call put_attr(gd_nc_variable(cid), name, "true", err=err)
48  else
49  call put_attr(gd_nc_variable(cid), name, "false", err=err)
50  endif
51  endif
52 end subroutine gtvarputattrlogical
53 
54 !subroutine GTVarPutAttrString(var, name, value, err)
55 ! !--
56 ! ! VSTRING 型を引き取り上記 put_attr を呼び出す。下位層のことは関知しない
57 ! !++
58 ! use gtdata_types, only: GT_VARIABLE
59 ! use dc_string, only: VSTRING, vchar, operator(==), len
60 ! use gtdata_generic, only: put_attr
61 ! implicit none
62 ! type(GT_VARIABLE), intent(inout):: var
63 ! character(len = *), intent(in):: name
64 ! type(VSTRING), intent(in):: value
65 ! logical, intent(out), optional:: err
66 !continue
67 ! call put_attr(var, name, vchar(value, len(value)), err=err)
68 !end subroutine GTVarPutAttrString
69 
70 subroutine gtvarputattrint(var, name, value, err)
71  !
72  ! まずは上記の Put_Attr
73  ! (または GTVarPutAttrChar および GTVarPutAttrReal)
74  ! を参照してください。
75  !
76  ! *value* は配列を受け取るので、スカラーを書き出すには
77  ! Fortran の配列構成子 <tt>(/ ... /)</tt> を使ってください。
78  ! たとえば、スカラー a から長さ 1 の配列 <tt>(/a/)</tt>
79  ! を作ることができます。
80  !
81  use gtdata_types, only: gt_variable
82  use gtdata_internal_map, only: var_class, vtb_class_netcdf
85  use dc_string, only: tochar
86  type(gt_variable), intent(inout):: var
87  character(len = *), intent(in):: name
88  integer, intent(in):: value(:)
89  logical, intent(out), optional:: err
90  integer:: class, cid
91 continue
92  call var_class(var, class, cid)
93  if (class == vtb_class_netcdf) then
94  call put_attr(gd_nc_variable(cid), name, value, err)
95  endif
96 end subroutine gtvarputattrint
97 
98 subroutine gtvarputattrreal(var, name, value, err)
99  !
100  ! まずは上記の Put_Attr
101  ! (または GTVarPutAttrChar および GTVarPutAttrReal)
102  ! を参照してください。
103  !
104  use gtdata_types, only: gt_variable
105  use gtdata_internal_map, only: var_class, vtb_class_netcdf
108  use dc_string, only: tochar
109  implicit none
110  type(gt_variable), intent(inout):: var
111  character(len = *), intent(in):: name
112  real, intent(in):: value(:)
113  logical, intent(out), optional:: err
114  integer:: class, cid
115 continue
116  call var_class(var, class, cid)
117  if (class == vtb_class_netcdf) then
118  call put_attr(gd_nc_variable(cid), name, value, err)
119  endif
120 end subroutine gtvarputattrreal
121 
122 subroutine gtvarputattrdouble(var, name, value, err)
123  !
124  ! まずは上記の Put_Attr
125  ! (または GTVarPutAttrChar および GTVarPutAttrReal)
126  ! を参照してください。
127  !
128  use gtdata_types, only: gt_variable
129  use gtdata_internal_map, only: var_class, vtb_class_netcdf
132  use dc_string, only: tochar
133  use dc_types, only: dp
134  implicit none
135  type(gt_variable), intent(inout):: var
136  character(len = *), intent(in):: name
137  real(DP), intent(in):: value(:)
138  logical, intent(out), optional:: err
139  integer:: class, cid
140 continue
141  call var_class(var, class, cid)
142  if (class == vtb_class_netcdf) then
143  call put_attr(gd_nc_variable(cid), name, value, err)
144  endif
145 end subroutine gtvarputattrdouble
146 
147 subroutine gtvarputattrchar(var, name, value, xtype, err)
148  !
149  ! まずは上記の Put_Attr
150  ! (または GTVarPutAttrChar)
151  ! を参照してください。
152  !
153  ! *xtype* に型を指定することで、引数 *value* には文字型を与えても、
154  ! 整数型、実数型 (単精度、倍精度) の値を付加することが可能です。
155  !
156  ! *xtype* には与える文字列として、以下のものが有効です。
157  ! これら以外の場合は文字型の値が与えられます。
158  !
159  ! 整数型 :: "INTEGER", "integer", "int"
160  ! 実数型 (単精度) :: "REAL", "real", "float"
161  ! 実数型 (倍精度) :: "DOUBLEPRECISION", "DOUBLE", "double"
162  !--
163  ! gtdata/gtdata_netcdf/gdncputattrchar.f90#GDNcVarPutAttrChar 参照
164  !++
165  !
166  use gtdata_types, only: gt_variable
167  use gtdata_internal_map, only: var_class, vtb_class_netcdf
170  use dc_trace, only: beginsub, endsub
171  implicit none
172  type(gt_variable), intent(inout):: var
173  character(len = *), intent(in):: name
174  character(len = *), intent(in):: value
175  character(len = *), intent(in), optional:: xtype
176  logical, intent(out), optional:: err
177  integer:: class, cid
178  character(*), parameter:: subnam = "gtvarputattrchar"
179 continue
180  call beginsub(subnam, "%d:%c = %c", i=(/var%mapid/), c1=trim(name), c2=trim(value))
181  call var_class(var, class, cid)
182  if (class == vtb_class_netcdf) then
183  call put_attr(gd_nc_variable(cid), name, value, xtype, err)
184  endif
185  call endsub(subnam)
186 end subroutine gtvarputattrchar
subroutine gtvarputattrdouble(var, name, value, err)
subroutine gtvarputattrreal(var, name, value, err)
integer, parameter, public dp
Double Precision Real number.
Definition: dc_types.f90:83
Provides kind type parameter values.
Definition: dc_types.f90:49
subroutine gtvarputattrint(var, name, value, err)
subroutine gtvarputattrchar(var, name, value, xtype, err)
subroutine, public var_class(var, class, cid)
subroutine gtvarputattrlogical(var, name, value, err)