gtool5 Fortran 90/95 Library 1.0.0-rc5
日本語
Loading...
Searching...
No Matches
historyvarinfocopy.f90 File Reference

Copy a GT_HISTORY_VARINFO variable . More...

Go to the source code of this file.

Functions/Subroutines

subroutine historyvarinfocopy1 (varinfo_dest, varinfo_src, err, name, dims, longname, units, xtype)
subroutine historyvarinfocopy2 (varinfo_dest, varinfo_src, err, name, dims, longname, units, xtype)

Detailed Description

Copy a GT_HISTORY_VARINFO variable

.

Author
Yasuhiro MORIKAWA

Definition in file historyvarinfocopy.f90.

Function/Subroutine Documentation

◆ historyvarinfocopy1()

subroutine historyvarinfocopy1 ( type(gt_history_varinfo), intent(out) varinfo_dest,
type(gt_history_varinfo), intent(in) varinfo_src,
logical, intent(out), optional err,
character(*), intent(in), optional name,
character(*), dimension(:), intent(in), optional, target dims,
character(*), intent(in), optional longname,
character(*), intent(in), optional units,
character(*), intent(in), optional xtype )

Copy a GT_HISTORY_VARINFO variable

Copies varinfo_src to varinfo_dest. varinfo_src must be initialized by HistoryVarinfoCreate. Use HistoryVarinfoAddAttr to add further attributes. If err is given, the program does not abort on error; instead err is set to .true. Arguments after err are override values applied during the copy.

Parameters
[out]varinfo_destDestination GT_HISTORY_VARINFO variable
[in]varinfo_srcSource GT_HISTORY_VARINFO variable
[out]errException handling flag (optional)
[in]nameVariable name override (optional)
[in]dimsDependent dimensions override (optional)
[in]longnameDescriptive name override (optional)
[in]unitsUnits override (optional)
[in]xtypeType override (optional)

Definition at line 52 of file historyvarinfocopy.f90.

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)
Error handling module.
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 or less: DC utilities errors
Definition dc_error.f90:534
integer, parameter, public dc_ealreadyinit
Definition dc_error.f90:535
integer, parameter, public dc_noerr
Error storage variables
Definition dc_error.f90:468
Judge optional control parameters.
Handling character types.
Definition dc_string.f90:83
character(string) function, public joinchar(carray, expr)
Debug tracing module.
Definition dc_trace.f90:150
subroutine, public dbgmessage(fmt, i, r, d, l, n, c1, c2, c3, ca)
Definition dc_trace.f90:661
subroutine, public beginsub(name, fmt, i, r, d, l, n, c1, c2, c3, ca, version)
Definition dc_trace.f90:457
subroutine, public endsub(name, fmt, i, r, d, l, n, c1, c2, c3, ca)
Definition dc_trace.f90:580
Provides kind type parameter values.
Definition dc_types.f90:55
integer, parameter, public token
Character length for word, token
Definition dc_types.f90:128
integer, parameter, public string
Character length for string
Definition dc_types.f90:137

References dc_trace::beginsub(), dc_trace::dbgmessage(), dc_error::dc_ealreadyinit, dc_error::dc_enotinit, dc_error::dc_noerr, dc_trace::endsub(), dc_string::joinchar(), dc_error::storeerror(), dc_types::string, and dc_types::token.

Here is the call graph for this function:

◆ historyvarinfocopy2()

subroutine historyvarinfocopy2 ( type(gt_history_varinfo), intent(out) varinfo_dest,
type(gt_history_varinfo), intent(in) varinfo_src,
logical, intent(out), optional err,
character(*), intent(in), optional name,
character(*), dimension(:), intent(in), optional, target dims,
character(*), intent(in), optional longname,
character(*), intent(in), optional units,
character(*), intent(in), optional xtype )

Definition at line 129 of file historyvarinfocopy.f90.

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)

References dc_trace::beginsub(), and dc_trace::endsub().

Here is the call graph for this function: