gtvaraddmember.f90

Path: src/gtvaraddmember.f90
Last Update: Wed Jul 20 18:22:24 JST 2005

Copyright (C) TOYODA Eizi, 2000. All rights reserved.

Methods

Included Modules

gtdata_types dc_types dc_url gtdata_generic dc_error

Public Instance methods

var :type(GT_VARIABLE), intent(inout)
member_url :character(len = *), intent(in)
link_name :character(len = *), intent(in), optional

[Source]

subroutine GTVarAddMember(var, member_url, link_name)

    implicit none
    type(GT_VARIABLE), intent(inout):: var
    character(len = *), intent(in):: member_url
    character(len = *), intent(in), optional:: link_name
    character(len = string):: members, myshortname, conv
continue
    ! 短縮名称の決定
    ! 既存のメンバ名に重複しないものを選ぶ
    call get_attr(var, 'gt_structure_member', members)
    if (present(link_name)) then
        if (index(members, ' ' //link_name) == 0) then
            myshortname = link_name
            goto 1000
        endif
    endif
    conv = member_url
    call UrlSplit(conv, var=myshortname)
    ! fake 判定
    if (index(members, trim(myshortname)) /= 0) then
        call StoreError(GT_EFAKE, "GTVarAddMember(making unique name)")
    endif
    1000 continue
    members = trim(members) // ' ' // trim(myshortname)
    call put_attr(var, 'gt_structure_member', trim(members))
    myshortname = 'gt_structure_link_' // trim(myshortname)
    call put_attr(var, myshortname, trim(member_url))

end subroutine

[Validate]