gtool5 Fortran 90/95 ライブラリ 1.0.0-rc5
English
Loading...
Searching...
No Matches
historyvarinfocopy.f90
Go to the documentation of this file.
1!> @file historyvarinfocopy.f90
2!>
3!> @author Yasuhiro MORIKAWA
4!> @copyright Copyright (C) GFD Dennou Club, 2004-2026. All rights reserved. <br/>
5!> License is BSD-2-Clause. See [COPYRIGHT](@ref COPYRIGHT) in detail
6!>
7!> @en
8!> @brief Copy a GT_HISTORY_VARINFO variable
9!> @enden
10!>
11!> @ja
12!> @brief GT_HISTORY_VARINFO 型変数コピー
13!> @endja
14
15!>
16!> @en
17!> @brief Copy a GT_HISTORY_VARINFO variable
18!>
19!> Copies varinfo_src to varinfo_dest.
20!> varinfo_src must be initialized by HistoryVarinfoCreate.
21!> Use HistoryVarinfoAddAttr to add further attributes.
22!> If err is given, the program does not abort on error; instead err is set to .true.
23!> Arguments after err are override values applied during the copy.
24!> @param[out] varinfo_dest Destination GT_HISTORY_VARINFO variable
25!> @param[in] varinfo_src Source GT_HISTORY_VARINFO variable
26!> @param[out] err Exception handling flag (optional)
27!> @param[in] name Variable name override (optional)
28!> @param[in] dims Dependent dimensions override (optional)
29!> @param[in] longname Descriptive name override (optional)
30!> @param[in] units Units override (optional)
31!> @param[in] xtype Type override (optional)
32!> @enden
33!>
34!> @ja
35!> @brief GT_HISTORY_VARINFO 型変数コピー
36!>
37!> GT_HISTORY_VARINFO 型の変数 varinfo_src を varinfo_dest にコピーします。
38!> varinfo_src は HistoryVarinfoCreate によって初期設定されている必要があります。
39!> さらに属性を付加する場合には HistoryVarinfoAddAttr を用いてください。
40!> err を与えておくと、コピーの際何らかの不具合が生じても終了せずに err が真になって返ります。
41!> err 以降の引数は、コピーの際に上書きする値です。
42!> @param[out] varinfo_dest コピー先の GT_HISTORY_VARINFO 型変数
43!> @param[in] varinfo_src コピー元の GT_HISTORY_VARINFO 型変数
44!> @param[out] err 例外処理用フラグ (optional)
45!> @param[in] name 次元変数名 (optional)
46!> @param[in] dims 依存する次元 (optional)
47!> @param[in] longname 次元変数の記述的名称 (optional)
48!> @param[in] units 次元変数の単位 (optional)
49!> @param[in] xtype 次元変数の型 (optional)
50!> @endja
51!>
52 subroutine historyvarinfocopy1(varinfo_dest, varinfo_src, err, &
53 & name, dims, longname, units, xtype )
58 use dc_string, only: joinchar
60 use dc_types, only: string, token
61 implicit none
62 type(gt_history_varinfo),intent(out):: varinfo_dest
63 type(gt_history_varinfo),intent(in):: varinfo_src
64 logical, intent(out), optional:: err
65 character(*) , intent(in), optional:: name ! 次元変数名
66 character(*) , intent(in), optional, target:: dims(:) ! 依存する次元
67 character(*) , intent(in), optional:: longname ! 次元変数の記述的名称
68 character(*) , intent(in), optional:: units ! 次元変数の単位
69 character(*) , intent(in), optional:: xtype ! 次元変数の型
70
71 integer:: i, stat
72 character(STRING):: cause_c
73 character(TOKEN), pointer :: srcdims(:) =>null() ! 依存する次元
74 character(STRING) :: name_tmp, xtype_tmp
75 character(*), parameter:: subname = "HistoryVarinfoCopy1"
76 continue
77 call beginsub(subname)
78 stat = dc_noerr
79 cause_c = ''
80
81 if ( .not. varinfo_src % initialized ) then
82 stat = dc_enotinit
83 cause_c = 'GT_HISTORY_VARINFO'
84 goto 999
85 end if
86
87 if ( varinfo_dest % initialized ) then
88 stat = dc_ealreadyinit
89 cause_c = 'GT_HISTORY_VARINFO'
90 goto 999
91 end if
92
93 name_tmp = present_select('', varinfo_src % name, name)
94 varinfo_dest % name = name_tmp(:len(varinfo_dest % name))
95 varinfo_dest % longname = present_select('', varinfo_src % longname, longname)
96 varinfo_dest % units = present_select('', varinfo_src % units, units)
97 xtype_tmp = present_select('', varinfo_src % xtype, xtype)
98 varinfo_dest % xtype = xtype_tmp(:len(varinfo_dest % xtype))
99
100 if (present(dims)) then
101 srcdims => dims
102 else
103 srcdims => varinfo_src % dims
104 endif
105
106 call dbgmessage('srcdims=<%c>', &
107 & c1=trim(joinchar(srcdims)))
108
109 allocate( varinfo_dest % dims( size( srcdims ) ) )
110 do i = 1, size(srcdims)
111 varinfo_dest % dims(i) = srcdims(i)
112 end do
113
114 call dbgmessage('varinfo_dest %% dims=<%c>', &
115 & c1=trim(joinchar(varinfo_dest % dims)))
116
117 if (associated( varinfo_src % attrs ) ) then
118 allocate( varinfo_dest % attrs( size( varinfo_src % attrs) ) )
119 call copy_attrs( from = varinfo_src % attrs, &
120 & to = varinfo_dest % attrs, err = err)
121 end if
122
123 varinfo_dest % initialized = .true.
124999 continue
125 call storeerror( stat, subname, err, cause_c )
126 call endsub(subname)
127 end subroutine historyvarinfocopy1
128
129 subroutine historyvarinfocopy2(varinfo_dest, varinfo_src, err, &
130 & name, dims, longname, units, xtype )
131 !
132 ! 使用方法は HistoryVarinfoCopy と同様です.
133 !
134 ! Usage is same as "HistoryVarinfoCopy".
135 !
136 !--
137 ! 総称名 Copy として提供するための関数です.
138 ! 機能は HistoryVarinfoCopy1 と同じです.
139 !++
142 use dc_trace, only: beginsub, endsub
143 implicit none
144 type(gt_history_varinfo),intent(out):: varinfo_dest
145 type(gt_history_varinfo),intent(in):: varinfo_src
146 logical, intent(out), optional:: err
147 character(*) , intent(in), optional:: name ! 次元変数名
148 character(*) , intent(in), optional, target:: dims(:) ! 依存する次元
149 character(*) , intent(in), optional:: longname ! 次元変数の記述的名称
150 character(*) , intent(in), optional:: units ! 次元変数の単位
151 character(*) , intent(in), optional:: xtype ! 次元変数の型
152
153 character(*), parameter:: subname = "HistoryVarinfoCopy2"
154 continue
155 call beginsub(subname)
156 call historyvarinfocopy(varinfo_dest, varinfo_src, err, &
157 & name, dims, longname, units, xtype )
158 call endsub(subname)
159 end subroutine historyvarinfocopy2
subroutine historyvarinfocopy1(varinfo_dest, varinfo_src, err, name, dims, longname, units, xtype)
subroutine historyvarinfocopy2(varinfo_dest, varinfo_src, err, name, dims, longname, units, xtype)
エラー処理用モジュール
Definition dc_error.f90:454
subroutine, public storeerror(number, where, err, cause_c, cause_i)
Definition dc_error.f90:891
integer, parameter, public dc_enotinit
-400 以下: dc ユーティリティのエラー
Definition dc_error.f90:534
integer, parameter, public dc_ealreadyinit
Definition dc_error.f90:535
integer, parameter, public dc_noerr
エラー等を保持
Definition dc_error.f90:468
省略可能な制御パラメータの判定
文字型変数の操作
Definition dc_string.f90:83
character(string) function, public joinchar(carray, expr)
デバッグ時の追跡用モジュール
Definition dc_trace.f90:150
subroutine, public dbgmessage(fmt, i, r, d, l, n, c1, c2, c3, ca)
Definition dc_trace.f90:680
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 token
単語やキーワードを保持する文字型変数の種別型パラメタ
Definition dc_types.f90:128
integer, parameter, public string
文字列を保持する 文字型変数の種別型パラメタ
Definition dc_types.f90:137