Loading...
Searching...
No Matches
historyvarinfocopy.f90
Go to the documentation of this file.
1!= GT_HISTORY_VARINFO のコピー
2!= Copy GT_HISTORY_VARINFO
3!
4! Authors:: Yasuhiro MORIKAWA
5! Version:: $Id: historyvarinfocopy.f90,v 1.2 2009-05-25 09:45:19 morikawa Exp $
6! Tag Name:: $Name: $
7! Copyright:: Copyright (C) GFD Dennou Club, 2004-2009. All rights reserved.
8! License:: See COPYRIGHT[link:../../../COPYRIGHT]
9!
10 subroutine historyvarinfocopy1(varinfo_dest, varinfo_src, err, &
11 & name, dims, longname, units, xtype )
12 !
13 !== GT_HISTORY_VARINFO 型変数コピー
14 !
15 ! GT_HISTORY_VARINFO 型の変数 *varinfo_src* を
16 ! *varinfo_dest* にコピーします。
17 ! *varinfo_src* は HistoryVarinfoCreate によって初期設定されている必要が
18 ! あります。
19 ! さらに属性を付加する場合には HistoryVarinfoAddAttr
20 ! を用いてください。
21 !
22 ! *err* を与えておくと、コピーの際何らかの不具合が生じても
23 ! 終了せずに err が真になって返ります。
24 !
25 ! *err* 以降の引数は、コピーの際に上書きする値です。
26 !
28 use gtool_history_internal, only: default, copy_attrs
29 use dc_trace, only: beginsub, endsub, dbgmessage
30 use dc_present,only: present_select
31 use dc_string, only: joinchar
33 use dc_types, only: string, token
34 implicit none
35 type(gt_history_varinfo),intent(out):: varinfo_dest
36 type(gt_history_varinfo),intent(in):: varinfo_src
37 logical, intent(out), optional:: err
38 character(*) , intent(in), optional:: name ! 次元変数名
39 character(*) , intent(in), optional, target:: dims(:) ! 依存する次元
40 character(*) , intent(in), optional:: longname ! 次元変数の記述的名称
41 character(*) , intent(in), optional:: units ! 次元変数の単位
42 character(*) , intent(in), optional:: xtype ! 次元変数の型
43
44 integer:: i, stat
45 character(STRING):: cause_c
46 character(TOKEN), pointer :: srcdims(:) =>null() ! 依存する次元
47 character(*), parameter:: subname = "HistoryVarinfoCopy1"
48 continue
49 call beginsub(subname)
50 stat = dc_noerr
51 cause_c = ''
52
53 if ( .not. varinfo_src % initialized ) then
54 stat = dc_enotinit
55 cause_c = 'GT_HISTORY_VARINFO'
56 goto 999
57 end if
58
59 if ( varinfo_dest % initialized ) then
60 stat = dc_ealreadyinit
61 cause_c = 'GT_HISTORY_VARINFO'
62 goto 999
63 end if
64
65 varinfo_dest % name = present_select('', varinfo_src % name, name)
66 varinfo_dest % longname = present_select('', varinfo_src % longname, longname)
67 varinfo_dest % units = present_select('', varinfo_src % units, units)
68 varinfo_dest % xtype = present_select('', varinfo_src % xtype, xtype)
69
70 if (present(dims)) then
71 srcdims => dims
72 else
73 srcdims => varinfo_src % dims
74 endif
75
76 call dbgmessage('srcdims=<%c>', &
77 & c1=trim(joinchar(srcdims)))
78
79 allocate( varinfo_dest % dims( size( srcdims ) ) )
80 do i = 1, size(srcdims)
81 varinfo_dest % dims(i) = srcdims(i)
82 end do
83
84 call dbgmessage('varinfo_dest %% dims=<%c>', &
85 & c1=trim(joinchar(varinfo_dest % dims)))
86
87 if (associated( varinfo_src % attrs ) ) then
88 allocate( varinfo_dest % attrs( size( varinfo_src % attrs) ) )
89 call copy_attrs( from = varinfo_src % attrs, &
90 & to = varinfo_dest % attrs, err = err)
91 end if
92
93 varinfo_dest % initialized = .true.
94999 continue
95 call storeerror( stat, subname, err, cause_c )
96 call endsub(subname)
97 end subroutine historyvarinfocopy1
98
99 subroutine historyvarinfocopy2(varinfo_dest, varinfo_src, err, &
100 & name, dims, longname, units, xtype )
101 !
102 ! 使用方法は HistoryVarinfoCopy と同様です.
103 !
104 ! Usage is same as "HistoryVarinfoCopy".
105 !
106 !--
107 ! 総称名 Copy として提供するための関数です.
108 ! 機能は HistoryVarinfoCopy1 と同じです.
109 !++
111 use gtool_history_generic, only: historyvarinfocopy
112 use dc_trace, only: beginsub, endsub, dbgmessage
113 implicit none
114 type(gt_history_varinfo),intent(out):: varinfo_dest
115 type(gt_history_varinfo),intent(in):: varinfo_src
116 logical, intent(out), optional:: err
117 character(*) , intent(in), optional:: name ! 次元変数名
118 character(*) , intent(in), optional, target:: dims(:) ! 依存する次元
119 character(*) , intent(in), optional:: longname ! 次元変数の記述的名称
120 character(*) , intent(in), optional:: units ! 次元変数の単位
121 character(*) , intent(in), optional:: xtype ! 次元変数の型
122
123 character(*), parameter:: subname = "HistoryVarinfoCopy2"
124 continue
125 call beginsub(subname)
126 call historyvarinfocopy(varinfo_dest, varinfo_src, err, &
127 & name, dims, longname, units, xtype )
128 call endsub(subname)
129 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)
subroutine, public storeerror(number, where, err, cause_c, cause_i)
Definition dc_error.f90:830
integer, parameter, public dc_enotinit
Definition dc_error.f90:557
integer, parameter, public dc_ealreadyinit
Definition dc_error.f90:558
integer, parameter, public dc_noerr
Definition dc_error.f90:509
Provides kind type parameter values.
Definition dc_types.f90:49
integer, parameter, public token
Character length for word, token
Definition dc_types.f90:109
integer, parameter, public string
Character length for string
Definition dc_types.f90:118
type(gt_history), target, save default