gtool5 Fortran 90/95 Library 1.0.0-rc5
日本語
Loading...
Searching...
No Matches
gtvarcreate.f90 File Reference

Create dependent variable. More...

Go to the source code of this file.

Functions/Subroutines

subroutine gtvarcreate (var, url, dims, xtype, long_name, overwrite, err)

Detailed Description

Create dependent variable.

Author
Yasuhiro MORIKAWA, Eizi TOYODA

This subroutine is provided through gtdata_generic.

Definition in file gtvarcreate.f90.

Function/Subroutine Documentation

◆ gtvarcreate()

subroutine gtvarcreate ( type(gt_variable), intent(out) var,
character(len = *), intent(in) url,
type(gt_variable), dimension(:), intent(in), optional dims,
character(len = *), intent(in), optional xtype,
character(len = *), intent(in), optional long_name,
logical, intent(in), optional overwrite,
logical, intent(out), optional err )

Create variable with dimensions

Creates a variable of GT_VARIABLE type with dimensions dims at location url, and sets it to var. Like variables opened with Open, var must later be closed with Close.

If xtype is omitted, it defaults to "float". Creation fails if the variable already exists, but continues by overwriting if overwrite == .true.. (Note: overwrite behavior is not yet guaranteed.) Omitting dims means setting a 0-dimensional variable.

If an error occurs during creation, outputs a message and terminates. If err is provided, returns .true. and program does not terminate.

Parameters
[out]varVariable handle
[in]urlVariable URL
[in]dimsDimension variables (optional)
[in]xtypeData type (optional, default "float")
[in]long_nameLong name attribute (optional)
[in]overwriteAllow overwrite (optional)
[out]errError flag (optional)

Definition at line 69 of file gtvarcreate.f90.

70 use gtdata_types, only: gt_variable
71 use gtdata_internal_map, only: var_class, vtb_class_netcdf, &
75 use dc_string, only: strhead
76 use dc_error, only: storeerror, dc_noerr
77 use dc_types, only: token
79 implicit none
80 type(GT_VARIABLE), intent(out):: var
81 character(len = *), intent(in):: url
82 type(GT_VARIABLE), intent(in), optional:: dims(:)
83 character(len = *), intent(in), optional:: xtype
84 character(len = *), intent(in), optional:: long_name
85 logical, intent(in), optional:: overwrite
86 logical, intent(out), optional:: err
87 type(GD_NC_VARIABLE), allocatable:: gdnc_dims(:)
88 type(GD_NC_VARIABLE):: gdnc
89 integer, allocatable:: allcount(:)
90 integer:: i, ndims, stat, cause_i
91 character(len = TOKEN):: myxtype
92 character(len = *), parameter:: subname = "GTVarCreate"
93 character(len = *), parameter:: version = &
94 & '$Name: $' // &
95 & '$Id: gtvarcreate.f90,v 1.4 2009-05-25 09:55:58 morikawa Exp $'
96continue
97 stat = dc_noerr
98 ndims = 0
99 cause_i = 0
100 if (present(dims)) ndims = size(dims)
101 call beginsub(subname, 'url=%c ndims=%d', c1=trim(url), i=(/ndims/), &
102 & version=version)
103 ! gdnc 変数の作成
104 if (present(err)) err = .false.
105 if (present(xtype)) then
106 myxtype = xtype
107 else
108 myxtype = "float"
109 endif
110 if (present(dims)) then
111 allocate(gdnc_dims(ndims), allcount(ndims))
112 do, i = 1, ndims
113 call var_class(dims(i), cid=gdnc_dims(i)%id)
114 call dbgmessage('dim=%d mapid=%d -> cid=%d', i=(/i, dims(i)%mapid, gdnc_dims(i)%id/))
115 call inquire(gdnc_dims(i), dimlen=allcount(i))
116 enddo
117 call create(var=gdnc, url=url, dims=gdnc_dims, xtype=myxtype, &
118 & overwrite=overwrite, err=err)
119 else
120 ndims = 0
121 allocate(gdnc_dims(1), allcount(1)) ! dummy
122 call create(var=gdnc, url=url, dims=gdnc_dims(1:0), &
123 & xtype=myxtype, overwrite=overwrite, err=err)
124 endif
125 call map_create(var, vtb_class_netcdf, gdnc%id, ndims, allcount, stat)
126 if (stat /= dc_noerr) then
127 cause_i = ndims
128 goto 999
129 end if
130 deallocate(gdnc_dims, allcount)
131 if (present(long_name)) then
132 call put_attr(gdnc, 'long_name', long_name, err=err)
133 endif
134 call gtvar_dump(var)
135 call dbgmessage('var%%mapid=%d', i=(/var % mapid/))
136999 continue
137 call storeerror(stat, subname, err, cause_i=cause_i)
138 call endsub(subname)
Error handling module.
Definition dc_error.f90:454
subroutine, public storeerror(number, where, err, cause_c, cause_i)
Definition dc_error.f90:891
integer, parameter, public dc_noerr
Error storage variables
Definition dc_error.f90:468
Handling character types.
Definition dc_string.f90:83
Debug tracing module.
Definition dc_trace.f90:150
subroutine, public dbgmessage(fmt, i, r, d, l, n, c1, c2, c3, ca)
Definition dc_trace.f90:661
subroutine, public beginsub(name, fmt, i, r, d, l, n, c1, c2, c3, ca, version)
Definition dc_trace.f90:457
subroutine, public endsub(name, fmt, i, r, d, l, n, c1, c2, c3, ca)
Definition dc_trace.f90:580
Provides kind type parameter values.
Definition dc_types.f90:55
integer, parameter, public token
Character length for word, token
Definition dc_types.f90:128
subroutine, public var_class(var, class, cid)
subroutine, public map_create(var, class, cid, ndims, allcount, stat)

References dc_trace::beginsub(), dc_trace::dbgmessage(), dc_error::dc_noerr, dc_trace::endsub(), gtdata_internal_map::gtvar_dump(), gtdata_internal_map::map_create(), dc_error::storeerror(), dc_types::token, and gtdata_internal_map::var_class().

Here is the call graph for this function: