Loading...
Searching...
No Matches
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
13subroutine 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
43continue
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
52end 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
70subroutine 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
91continue
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
96end subroutine gtvarputattrint
97
98subroutine 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
115continue
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
120end subroutine gtvarputattrreal
121
122subroutine 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
140continue
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
145end subroutine gtvarputattrdouble
146
147subroutine 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"
179continue
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)
186end 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)
Provides kind type parameter values.
Definition dc_types.f90:49
integer, parameter, public dp
Double Precision Real number
Definition dc_types.f90:83
subroutine, public var_class(var, class, cid)