gtvaraddmember.f90
Go to the documentation of this file.
1 !
2 != 構造型変数の gt_structure_member 属性の追加
3 !
4 ! Authors:: Eizi TOYODA, Yasuhiro MORIKAWA
5 ! Version:: $Id: gtvaraddmember.f90,v 1.1 2009-03-20 09:09:52 morikawa Exp $
6 ! Tag Name:: $Name: $
7 ! Copyright:: Copyright (C) GFD Dennou Club, 2000-2005. All rights reserved.
8 ! License:: See COPYRIGHT[link:../../COPYRIGHT]
9 !
10 ! 以下のサブルーチン、関数は gtdata_generic から gtdata_generic#Add_Member
11 ! として提供されます。
12 !
13 
14 subroutine gtvaraddmember(var, member_url, link_name)
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
32 continue
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
48 1000 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 
54 end subroutine gtvaraddmember
integer, parameter, public gt_efake
Definition: dc_error.f90:523
subroutine, public storeerror(number, where, err, cause_c, cause_i)
Definition: dc_error.f90:830
種別型パラメタを提供します。
Definition: dc_types.f90:49
subroutine gtvaraddmember(var, member_url, link_name)
integer, parameter, public string
文字列を保持する 文字型変数の種別型パラメタ
Definition: dc_types.f90:118