95
96
97
98
99
100
106 implicit none
107 character(*), intent(in):: varname
108 type(GT_HISTORY_ATTR), intent(in):: attrs(:)
109 type(GT_HISTORY), intent(inout), target, optional:: history
110 type(GT_HISTORY), pointer:: hst =>null()
111 integer :: i
112 character(*), parameter:: subname = "append_attrs"
113 continue
114 call beginsub(subname,
'varname=<%c>, size(attrs(:))=<%d>', &
115 & c1=trim(varname), i=(/size(attrs(:))/))
116 if (present(history)) then
117 hst => history
118 else
119 hst => default
120 endif
121
122 do i = 1, size( attrs(:) )
123
124 if (
strhead(
'char', trim(
lchar(attrs(i)%attrtype))) )
then
126 & varname, attrs(i)%attrname, &
127 & trim(attrs(i)%Charvalue), hst )
128 elseif (
strhead(
'int', trim(
lchar(attrs(i)%attrtype))) )
then
129 if ( attrs(i)%array ) then
132 & varname, attrs(i)%attrname , &
133 & attrs(i)%Intarray, hst )
134 else
137 & varname, attrs(i)%attrname , &
138 & attrs(i)%Intvalue, hst )
139 endif
140 elseif (
strhead(
'real', trim(
lchar(attrs(i)%attrtype))) )
then
141 if ( attrs(i)%array ) then
144 & varname, attrs(i)%attrname, attrs(i)%Realarray, hst)
145 else
148 & varname, attrs(i)%attrname, attrs(i)%Realvalue, hst)
149 endif
150 elseif (
strhead(
'double', trim(
lchar(attrs(i)%attrtype))) )
then
151 if ( attrs(i)%array ) then
152 call dbgmessage(
'Doublearray(:) is selected.')
154 & varname, attrs(i)%attrname, attrs(i)%Doublearray, hst)
155 else
158 & varname, attrs(i)%attrname, attrs(i)%Doublevalue, hst)
159 endif
160 elseif (
strhead(
'logical', trim(
lchar(attrs(i)%attrtype))) )
then
162 & varname, attrs(i)%attrname, attrs(i)%Logicalvalue, hst)
163 else
164 call dbgmessage(
'attrtype=<%c>=<%c>is Invalid.' , &
165 & c1=trim(attrs(i)%attrtype) , &
166 & c2=trim(
lchar(attrs(i)%attrtype)) )
167 endif
168 enddo
subroutine, public dbgmessage(fmt, i, r, d, l, n, c1, c2, c3, ca)
subroutine, public beginsub(name, fmt, i, r, d, l, n, c1, c2, c3, ca, version)
subroutine, public endsub(name, fmt, i, r, d, l, n, c1, c2, c3, ca)