Loading...
Searching...
No Matches
gtvaraddmember.f90 File Reference

Go to the source code of this file.

Functions/Subroutines

subroutine gtvaraddmember (var, member_url, link_name)

Function/Subroutine Documentation

◆ gtvaraddmember()

subroutine gtvaraddmember ( type(gt_variable), intent(inout) var,
character(len = *), intent(in) member_url,
character(len = *), intent(in), optional link_name )

Definition at line 14 of file gtvaraddmember.f90.

15 !
16 !== 構造型変数の gt_structure_member 属性の追加
17 !
18 ! 変数 *var* の gt_structure_member 属性
19 ! ({gtool4 netCDF 規約}[link:../xref.htm#label-6] の 「4. 構造体変数」参照)
20 ! に *member_url* の変数名部分を追加します。
21 !
22 use gtdata_types, only: gt_variable
23 use dc_types, only: string
24 use dc_url, only: urlsplit
25 use gtdata_generic, only: put_attr, get_attr
26 use dc_error
27 implicit none
28 type(GT_VARIABLE), intent(inout):: var
29 character(len = *), intent(in):: member_url
30 character(len = *), intent(in), optional:: link_name
31 character(len = string):: members, myshortname, conv
32continue
33 ! 短縮名称の決定
34 ! 既存のメンバ名に重複しないものを選ぶ
35 call get_attr(var, 'gt_structure_member', members)
36 if (present(link_name)) then
37 if (index(members, ' ' //link_name) == 0) then
38 myshortname = link_name
39 goto 1000
40 endif
41 endif
42 conv = member_url
43 call urlsplit(conv, var=myshortname)
44 ! fake 判定
45 if (index(members, trim(myshortname)) /= 0) then
46 call storeerror(gt_efake, "GTVarAddMember(making unique name)")
47 endif
481000 continue
49 members = trim(members) // ' ' // trim(myshortname)
50 call put_attr(var, 'gt_structure_member', trim(members))
51 myshortname = 'gt_structure_link_' // trim(myshortname)
52 call put_attr(var, myshortname, trim(member_url))
53
subroutine, public storeerror(number, where, err, cause_c, cause_i)
Definition dc_error.f90:830
integer, parameter, public gt_efake
Definition dc_error.f90:523
Provides kind type parameter values.
Definition dc_types.f90:49
integer, parameter, public string
Character length for string
Definition dc_types.f90:118

References dc_error::gt_efake, dc_error::storeerror(), and dc_types::string.

Here is the call graph for this function: