gtool5 Fortran 90/95 Library 1.0.0-rc5
日本語
Loading...
Searching...
No Matches
gdncvarputattrreal.f90
Go to the documentation of this file.
1!> @file gdncvarputattrreal.f90
2!>
3!> @author GFD Dennou Club
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 real/double attribute to netCDF variable
9!> @enden
10!>
11!> @ja
12!> @brief netCDF 変数に実数/倍精度属性を設定
13!> @endja
14!>
15
16!>
17!> @en
18!> @brief Set real (single precision) attribute value
19!>
20!> Sets a real attribute on a variable. If name starts with '+',
21!> it is treated as a global attribute. Empty value array deletes the attribute.
22!> @enden
23!>
24!> @ja
25!> @brief 実数 (単精度) 属性値を設定
26!>
27!> 変数に実数属性を設定します。name が '+' で始まる場合、
28!> グローバル属性として扱われます。空の value 配列は属性を削除します。
29!> @endja
30!>
31!> @param[in] var @en Variable handle @enden @ja 変数ハンドル @endja
32!> @param[in] name @en Attribute name @enden @ja 属性名 @endja
33!> @param[in] value @en Real values to set @enden @ja 設定する実数値 @endja
34!> @param[out] err @en Error flag (optional) @enden @ja エラーフラグ (省略可能) @endja
35!>
36subroutine gdncvarputattrreal(var, name, value, err)
40 use netcdf, only: &
41 & nf90_global, &
42 & nf90_noerr, &
43 & nf90_put_att, &
44 & nf90_del_att
45 use dc_url, only: gt_plus
46 use dc_error
47 implicit none
48 type(gd_nc_variable), intent(in):: var
49 character(len = *), intent(in):: name
50 real, intent(in):: value(:)
51 logical, intent(out), optional:: err
52 type(gd_nc_variable_entry):: ent
53 integer:: stat
54 continue
55 stat = vtable_lookup(var, ent)
56 if (stat /= nf90_noerr) goto 999
57 if (size(value) == 0) then
58 if (name(1:1) == gt_plus) then
59 stat = nf90_del_att(ent%fileid, nf90_global, name(2:))
60 else
61 stat = nf90_del_att(ent%fileid, ent%varid, name)
62 endif
63 goto 999
64 endif
65 stat = gdncfiledefinemode(ent%fileid)
66 if (stat /= nf90_noerr) goto 999
67 if (name(1:1) == gt_plus) then
68 stat = nf90_put_att(ent%fileid, nf90_global, name(2:), value)
69 else
70 stat = nf90_put_att(ent%fileid, ent%varid, name, value)
71 endif
72999 continue
73 call storeerror(stat, 'GDNcVarPutAttrReal', err)
74end subroutine gdncvarputattrreal
75
76!>
77!> @en
78!> @brief Set double precision attribute value
79!>
80!> Sets a double precision attribute on a variable. If name starts with '+',
81!> it is treated as a global attribute. Empty value array deletes the attribute.
82!> @enden
83!>
84!> @ja
85!> @brief 倍精度属性値を設定
86!>
87!> 変数に倍精度属性を設定します。name が '+' で始まる場合、
88!> グローバル属性として扱われます。空の value 配列は属性を削除します。
89!> @endja
90!>
91!> @param[in] var @en Variable handle @enden @ja 変数ハンドル @endja
92!> @param[in] name @en Attribute name @enden @ja 属性名 @endja
93!> @param[in] value @en Double precision values to set @enden @ja 設定する倍精度値 @endja
94!> @param[out] err @en Error flag (optional) @enden @ja エラーフラグ (省略可能) @endja
95!>
96subroutine gdncvarputattrdouble(var, name, value, err)
100 use netcdf, only: &
101 & nf90_global, &
102 & nf90_noerr, &
103 & nf90_put_att, &
104 & nf90_del_att
105 use dc_url, only: gt_plus
106 use dc_error
107 implicit none
108 type(gd_nc_variable), intent(in):: var
109 character(len = *), intent(in):: name
110 double precision, intent(in):: value(:)
111 logical, intent(out), optional:: err
112 type(gd_nc_variable_entry):: ent
113 integer:: stat
114 continue
115 stat = vtable_lookup(var, ent)
116 if (stat /= 0) goto 999
117 if (size(value) == 0) then
118 if (name(1:1) == gt_plus) then
119 stat = nf90_del_att(ent%fileid, nf90_global, name(2:))
120 else
121 stat = nf90_del_att(ent%fileid, ent%varid, name)
122 endif
123 goto 999
124 endif
125 stat = gdncfiledefinemode(ent%fileid)
126 if (stat /= nf90_noerr) goto 999
127 if (name(1:1) == gt_plus) then
128 stat = nf90_put_att(ent%fileid, nf90_global, name(2:), value)
129 else
130 stat = nf90_put_att(ent%fileid, ent%varid, name, value)
131 endif
132999 continue
133 call storeerror(stat, 'GDNcVarPutAttrDouble', err)
134end subroutine
subroutine gdncvarputattrreal(var, name, value, err)
subroutine gdncvarputattrdouble(var, name, value, err)
Error handling module.
Definition dc_error.f90:454
subroutine, public storeerror(number, where, err, cause_c, cause_i)
Definition dc_error.f90:891
Variable URL string parser.
Definition dc_url.f90:61
character, parameter, public gt_plus
Definition dc_url.f90:109
integer function, public vtable_lookup(var, entry)