gtvarcreated.f90

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

Copyright (C) GFD Dennou Club, 2000. All rights reserved.

独立変数 create

長さ length の自分自身を次元とする変数を作成する。 長さ length = 0 の変数は可変長である。 次元変数は自動生成されることが多いため、変数名部を欠く指定に対しては 名前を自動生成する。

Methods

Included Modules

dc_string gtdata_types gtdata_generic an_generic gt_mem gt_map dc_url dc_trace dc_types

Public Instance methods

var :type(GT_VARIABLE), intent(out)
url :character(len = *), intent(in)
length :integer, intent(in)
xtype :character(len = *), intent(in), optional
long_name :character(len = *), intent(in), optional
overwrite :logical, intent(in), optional
err :logical, intent(out), optional

[Source]

subroutine GTVarCreateD(var, url, length, xtype, long_name, overwrite, err)

    implicit none
    type(GT_VARIABLE), intent(out):: var
    character(len = *), intent(in):: url
    integer, intent(in):: length
    character(len = *), intent(in), optional:: xtype
    character(len = *), intent(in), optional:: long_name
    logical, intent(in), optional:: overwrite
    logical, intent(out), optional:: err
    character(len = string):: fnam, vnam, new_url
    type(an_variable):: an
    type(mem_variable):: mem
continue
    call beginsub('gtvarcreate-d', 'url=<%c> length=%d', c1=trim(url), i=(/length/))
    if (strHead(url, "memory:")) then
        call Create(mem, url, length, xtype, long_name, overwrite, err)
        call map_create(var, vtb_class_memory, mem%id, 1, (/length/))
        call gtvar_dump(var)
        call endsub('gtvarcreate-d', 'class=memory mapid=%d', i=(/var%mapid/))
        return
    endif
    ! URL の検査
    call UrlSplit(url, file=fnam, var=vnam)
    if (vnam == "") then
        call GtDataTmpNam(file=fnam, base="dim", result=new_url)
    else
        new_url = url
    endif
    ! an 形式が選択される場合は
    call Create(var=an, url=new_url, length=length, xtype=xtype,  overwrite=overwrite, err=err)
    if (present(long_name)) then
        call put_attr(an, 'long_name', long_name, err=err)
    endif
    call map_create(var, vtb_class_netcdf, an%id, 1, (/length/))
    call gtvar_dump(var)
    call endsub('gtvarcreate-d', 'class=netcdf mapid=%d', i=(/var%mapid/))
end subroutine

[Validate]