gtool5 Fortran 90/95 ライブラリ 1.0.0-rc5
English
Loading...
Searching...
No Matches
gtvarputattrchar.f90
Go to the documentation of this file.
1!> @file gtvarputattrchar.f90
2!>
3!> @author Eizi TOYODA, Yasuhiro MORIKAWA
4!> @copyright Copyright (C) GFD Dennou Club, 2000-2026. All rights reserved. <br/>
5!> License is BSD-2-Clause. See [COPYRIGHT](@ref COPYRIGHT) in detail
6!>
7!> @en
8!> @brief Put attribute values
9!>
10!> These subroutines are provided as gtdata_generic#Put_Attr
11!> through gtdata_generic.
12!> @enden
13!>
14!> @ja
15!> @brief 属性の付加
16!>
17!> これらのサブルーチンは gtdata_generic から gtdata_generic#Put_Attr
18!> として提供されます。
19!> @endja
20!>
21
22!>
23!> @en
24!> @brief Put attribute value (logical)
25!>
26!> Attaches attribute name with value to variable var.
27!> Put_Attr is a generic name for multiple subroutines, so value
28!> can accept various types. Some variants with xtype argument
29!> allow specifying the storage type independently.
30!>
31!> If an error occurs and err is provided, err returns .true..
32!> If err is not provided, the program terminates.
33!> @param[inout] var Variable handle
34!> @param[in] name Attribute name
35!> @param[in] value Attribute value (logical)
36!> @param[out] err Error flag (optional)
37!> @enden
38!>
39!> @ja
40!> @brief 属性値の付加 (論理型)
41!>
42!> 変数 var に属性名 name とその値 value を付加します。
43!> Put_Attr は複数のサブルーチンの総称名なので、
44!> value には様々な型の変数を与えることが可能です。
45!> xtype 引数を持つバリアントでは、格納型を独立に指定できます。
46!>
47!> エラーが発生した場合、引数 err が与えられる場合は err が
48!> .true. となって返ります。err を与えなければプログラムは停止します。
49!> @param[inout] var 変数ハンドル
50!> @param[in] name 属性名
51!> @param[in] value 属性値 (論理型)
52!> @param[out] err エラーフラグ (省略可能)
53!> @endja
54!>
55subroutine gtvarputattrlogical(var, name, value, err)
56 use gtdata_types, only: gt_variable
57 use gtdata_internal_map, only: var_class, vtb_class_netcdf
60 use dc_string, only: tochar
61 implicit none
62 type(gt_variable), intent(inout) :: var
63 character(len = *), intent(in) :: name
64 logical, intent(in) :: value
65 logical, intent(out), optional:: err
66 integer:: class, cid
67continue
68 call var_class(var, class, cid)
69 if (class == vtb_class_netcdf) then
70 if (value) then
71 call put_attr(gd_nc_variable(cid), name, "true", err=err)
72 else
73 call put_attr(gd_nc_variable(cid), name, "false", err=err)
74 endif
75 endif
76end subroutine gtvarputattrlogical
77
78!subroutine GTVarPutAttrString(var, name, value, err)
79! !--
80! ! VSTRING 型を引き取り上記 put_attr を呼び出す。下位層のことは関知しない
81! !++
82! use gtdata_types, only: GT_VARIABLE
83! use dc_string, only: VSTRING, vchar, operator(==), len
84! use gtdata_generic, only: put_attr
85! implicit none
86! type(GT_VARIABLE), intent(inout):: var
87! character(len = *), intent(in):: name
88! type(VSTRING), intent(in):: value
89! logical, intent(out), optional:: err
90!continue
91! call put_attr(var, name, vchar(value, len(value)), err=err)
92!end subroutine GTVarPutAttrString
93
94!> @en
95!> @brief Put attribute value (integer array)
96!>
97!> value accepts an array. To write a scalar, use Fortran array
98!> constructors (/ ... /). For example, (/a/) creates a length-1 array.
99!> @param[inout] var Variable handle
100!> @param[in] name Attribute name
101!> @param[in] value Attribute value (integer array)
102!> @param[out] err Error flag (optional)
103!> @enden
104!> @ja
105!> @brief 属性値の付加 (整数配列)
106!>
107!> value は配列を受け取ります。スカラーを書き出すには
108!> Fortran の配列構成子 (/ ... /) を使ってください。
109!> @param[inout] var 変数ハンドル
110!> @param[in] name 属性名
111!> @param[in] value 属性値 (整数配列)
112!> @param[out] err エラーフラグ (省略可能)
113!> @endja
114subroutine gtvarputattrint(var, name, value, err)
115 use gtdata_types, only: gt_variable
116 use gtdata_internal_map, only: var_class, vtb_class_netcdf
119 use dc_string, only: tochar
120 type(gt_variable), intent(inout):: var
121 character(len = *), intent(in):: name
122 integer, intent(in):: value(:)
123 logical, intent(out), optional:: err
124 integer:: class, cid
125continue
126 call var_class(var, class, cid)
127 if (class == vtb_class_netcdf) then
128 call put_attr(gd_nc_variable(cid), name, value, err)
129 endif
130end subroutine gtvarputattrint
131
132!> @en
133!> @brief Put attribute value (real array)
134!> @param[inout] var Variable handle
135!> @param[in] name Attribute name
136!> @param[in] value Attribute value (real array)
137!> @param[out] err Error flag (optional)
138!> @enden
139!> @ja
140!> @brief 属性値の付加 (実数配列)
141!> @param[inout] var 変数ハンドル
142!> @param[in] name 属性名
143!> @param[in] value 属性値 (実数配列)
144!> @param[out] err エラーフラグ (省略可能)
145!> @endja
146subroutine gtvarputattrreal(var, name, value, err)
147 use gtdata_types, only: gt_variable
148 use gtdata_internal_map, only: var_class, vtb_class_netcdf
151 use dc_string, only: tochar
152 implicit none
153 type(gt_variable), intent(inout):: var
154 character(len = *), intent(in):: name
155 real, intent(in):: value(:)
156 logical, intent(out), optional:: err
157 integer:: class, cid
158continue
159 call var_class(var, class, cid)
160 if (class == vtb_class_netcdf) then
161 call put_attr(gd_nc_variable(cid), name, value, err)
162 endif
163end subroutine gtvarputattrreal
164
165!> @en
166!> @brief Put attribute value (double precision array)
167!> @param[inout] var Variable handle
168!> @param[in] name Attribute name
169!> @param[in] value Attribute value (double precision array)
170!> @param[out] err Error flag (optional)
171!> @enden
172!> @ja
173!> @brief 属性値の付加 (倍精度実数配列)
174!> @param[inout] var 変数ハンドル
175!> @param[in] name 属性名
176!> @param[in] value 属性値 (倍精度実数配列)
177!> @param[out] err エラーフラグ (省略可能)
178!> @endja
179subroutine gtvarputattrdouble(var, name, value, err)
180 use gtdata_types, only: gt_variable
181 use gtdata_internal_map, only: var_class, vtb_class_netcdf
184 use dc_string, only: tochar
185 use dc_types, only: dp
186 implicit none
187 type(gt_variable), intent(inout):: var
188 character(len = *), intent(in):: name
189 real(DP), intent(in):: value(:)
190 logical, intent(out), optional:: err
191 integer:: class, cid
192continue
193 call var_class(var, class, cid)
194 if (class == vtb_class_netcdf) then
195 call put_attr(gd_nc_variable(cid), name, value, err)
196 endif
197end subroutine gtvarputattrdouble
198
199!> @en
200!> @brief Put attribute value (character with type specification)
201!>
202!> By specifying xtype, even if value is character type, values can
203!> be stored as integer, real (single/double precision).
204!> Valid xtype strings:
205!> - Integer: "INTEGER", "integer", "int"
206!> - Real (single): "REAL", "real", "float"
207!> - Real (double): "DOUBLEPRECISION", "DOUBLE", "double"
208!> @param[inout] var Variable handle
209!> @param[in] name Attribute name
210!> @param[in] value Attribute value (character)
211!> @param[in] xtype Storage type (optional)
212!> @param[out] err Error flag (optional)
213!> @enden
214!> @ja
215!> @brief 属性値の付加 (型指定付き文字列)
216!>
217!> xtype に型を指定することで、引数 value には文字型を与えても、
218!> 整数型、実数型 (単精度、倍精度) の値を付加することが可能です。
219!> 有効な xtype 文字列:
220!> - 整数型: "INTEGER", "integer", "int"
221!> - 実数型 (単精度): "REAL", "real", "float"
222!> - 実数型 (倍精度): "DOUBLEPRECISION", "DOUBLE", "double"
223!> @param[inout] var 変数ハンドル
224!> @param[in] name 属性名
225!> @param[in] value 属性値 (文字列)
226!> @param[in] xtype 格納型 (省略可能)
227!> @param[out] err エラーフラグ (省略可能)
228!> @endja
229subroutine gtvarputattrchar(var, name, value, xtype, err)
230 use gtdata_types, only: gt_variable
231 use gtdata_internal_map, only: var_class, vtb_class_netcdf
234 use dc_trace, only: beginsub, endsub
235 implicit none
236 type(gt_variable), intent(inout):: var
237 character(len = *), intent(in):: name
238 character(len = *), intent(in):: value
239 character(len = *), intent(in), optional:: xtype
240 logical, intent(out), optional:: err
241 integer:: class, cid
242 character(*), parameter:: subnam = "gtvarputattrchar"
243continue
244 call beginsub(subnam, "%d:%c = %c", i=(/var%mapid/), c1=trim(name), c2=trim(value))
245 call var_class(var, class, cid)
246 if (class == vtb_class_netcdf) then
247 call put_attr(gd_nc_variable(cid), name, value, xtype, err)
248 endif
249 call endsub(subnam)
250end subroutine gtvarputattrchar
subroutine gtvarputattrdouble(var, name, value, err)
subroutine gtvarputattrint(var, name, value, err)
subroutine gtvarputattrlogical(var, name, value, err)
subroutine gtvarputattrchar(var, name, value, xtype, err)
subroutine gtvarputattrreal(var, name, value, err)
文字型変数の操作
Definition dc_string.f90:83
デバッグ時の追跡用モジュール
Definition dc_trace.f90:150
subroutine, public beginsub(name, fmt, i, r, d, l, n, c1, c2, c3, ca, version)
Definition dc_trace.f90:476
subroutine, public endsub(name, fmt, i, r, d, l, n, c1, c2, c3, ca)
Definition dc_trace.f90:599
種別型パラメタを提供します。
Definition dc_types.f90:55
integer, parameter, public dp
倍精度実数型変数
Definition dc_types.f90:92
subroutine, public var_class(var, class, cid)