anvarcreated.f90

Path: src/anvarcreated.f90
Last Update: Fri Aug 05 00:58:08 JST 2005

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

Methods

Included Modules

an_types an_vartable dc_string dc_types dc_url netcdf_f77 an_file dc_error

Public Instance methods

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

長さ length の次元変数を作成する。

[Source]

subroutine ANVarCreateD(var, url, xtype, length, overwrite, err)

    implicit none
    type(an_variable), intent(out):: var
    character(len = *), intent(in):: url
    character(len = *), intent(in):: xtype
    integer, intent(in):: length
    logical, intent(in), optional:: overwrite
    logical, intent(out), optional:: err
    type(an_variable_search):: ent
    character(len = string):: filename, varname
    integer:: stat
    integer:: nc_xtype
    !
    ! --- ファイルを用意 ---
    call UrlSplit(url, file=filename, var=varname)
    call ANFileOpen(ent%fileid, filename, stat=stat, writable=.TRUE.,         overwrite=overwrite)
    if (stat /= NF_NOERR) goto 999
    stat = ANFileDefineMode(ent%fileid)
    if (stat /= NF_NOERR) goto 999
    !
    ! --- 型の決定 ---
    nc_xtype = NF_REAL
    if (strieq(xtype, "double") .or.  strieq(xtype, "DOUBLEPRECISION")) then
        nc_xtype = NF_DOUBLE
    endif
    if (strieq(xtype, "int") .or. strieq(xtype, "INTEGER")) then
        nc_xtype = NF_INT
    endif
    !
    ! --- 次元変数の作成 ---
    stat = nf_def_dim(ent%fileid, trim(varname), len=length,  dimid=ent%dimid)
    if (stat /= NF_NOERR) goto 999
    stat = nf_def_var(ent%fileid, trim(varname),  xtype=nc_xtype, ndims=1, dimids=(/ent%dimid/), varid=ent%varid)
    if (stat /= NF_NOERR) goto 999
    !
    stat = vtable_add(var, ent)
    if (stat /= NF_NOERR) goto 999
    call StoreError(NF_NOERR, 'ANVarCreateD', err)
    return

999 continue
    call StoreError(stat, 'ANVarCreateD', err)
    var = an_variable(-1)
end subroutine

[Validate]