Path: | gtvaropen.f90 |
Last Update: | Fri Aug 24 17:01:55 JST 2007 |
Authors: | Yasuhiro MORIKAWA, Eizi TOYODA |
Version: | $Id: gtvaropen.f90,v 1.8 2007/08/24 08:01:55 morikawa Exp $ |
Tag Name: | $Name: gt4f90io-20080219 $ |
Copyright: | Copyright (C) GFD Dennou Club, 2000-2005. All rights reserved. |
License: | See COPYRIGHT |
以下のサブルーチン, 関数は gtdata_generic から提供されます。
Subroutine : | |
var : | type(GT_VARIABLE), intent(out) |
url : | character(*), intent(in) |
writable : | logical, intent(in), optional |
err : | logical, intent(out), optional |
url で識別される gtool 変数を開き、var に格納します。 writable を .true. に指定すると書き込み可で開こうとします。 デフォルトは書き込み不可で開きます。 (まだ writable の動作は保障されていません)。
Open された変数は必ず Close されなければなりません。
エラーが発生した場合、引数 err が与えられる場合は err が .true. となって返ります。 引数 err を与えなければプログラムは停止します。
Open は 2 つのサブルーチンの総称名であり、 ある変数の次元を指定することで開くことも可能です。 上記のサブルーチンを参照ください。
上記の Open を参照してください。
subroutine GTVarOpen(var, url, writable, err) ! !== gtool4 データのオープン ! ! *url* で識別される gtool 変数を開き、*var* に格納します。 ! *writable* を <tt>.true.</tt> に指定すると書き込み可で開こうとします。 ! デフォルトは書き込み不可で開きます。 ! (まだ *writable* の動作は保障されていません)。 ! ! Open された変数は必ず Close されなければなりません。 ! ! エラーが発生した場合、引数 *err* が与えられる場合は *err* が ! <tt>.true.</tt> となって返ります。 ! 引数 *err* を与えなければプログラムは停止します。 ! ! *Open* は 2 つのサブルーチンの総称名であり、 ! ある変数の次元を指定することで開くことも可能です。 ! 上記のサブルーチンを参照ください。 ! !=== 補足 ! ! 上記の Open を参照してください。 ! use dc_string, only: StrHead use dc_types, only: STRING use gtdata_types, only: GT_VARIABLE use gtdata_generic, only: limit use gt_map, only: map_create, vtb_class_netcdf, vtb_class_memory, gtvar_dump use an_generic, only: ANVarOpen, an_variable, inquire use dc_url, only: url_chop_iorange use dc_error, only: StoreError, GT_EFAKE, DC_NOERR, GT_ENOTVAR use dc_trace, only: beginsub, endsub use dc_present, only: present_and_true implicit none type(GT_VARIABLE), intent(out):: var character(*), intent(in):: url logical, intent(in), optional:: writable logical, intent(out), optional:: err integer:: ndims, stat, cause_i character(STRING):: cause_c integer, allocatable:: dimlen(:) type(an_variable):: an character(STRING):: filevar, iorange character(*), parameter:: subname = "GTVarOpen" character(*), parameter:: version = '$Name: gt4f90io-20080219 $' // '$Id: gtvaropen.f90,v 1.8 2007/08/24 08:01:55 morikawa Exp $' continue call beginsub(subname, fmt='<%c>', c1=trim(url), version=version) stat = DC_NOERR cause_i = 0 cause_c = '' var = GT_VARIABLE(-1) call url_chop_iorange(url, iorange=iorange, remainder=filevar) if (StrHead(filevar, "memory:")) then stat = GT_EFAKE cause_c = 'GTVarOpen(memory:)' goto 999 else call ANVarOpen(an, filevar, writable, err) if ( present_and_true(err) ) then stat = GT_ENOTVAR goto 999 end if call inquire(an, ndims=ndims) allocate(dimlen(max(1, ndims))) call inquire(an, dimlen=dimlen) call map_create(var, vtb_class_netcdf, an%id, ndims, dimlen, stat) if (stat /= DC_NOERR) then cause_i = ndims goto 999 end if deallocate(dimlen) endif call limit(var, trim(iorange)) call gtvar_dump(var) 999 continue call StoreError(stat, subname, err, cause_c = cause_c, cause_i = cause_i) call endsub(subname, 'mapid=%d', i=(/var%mapid/)) end subroutine GTVarOpen