! != 変数探査 ! ! Authors:: Yasuhiro MORIKAWA, Eizi TOYODA ! Version:: $Id: gtvarsearch.f90,v 1.3 2006/01/15 07:10:30 morikawa Exp $ ! Tag Name:: $Name: gt4f90io-20061118 $ ! Copyright:: Copyright (C) GFD Dennou Club, 2000-2005. All rights reserved. ! License:: See COPYRIGHT[link:../../COPYRIGHT] ! ! 以下のサブルーチン、関数は gtdata_generic から gtdata_generic#GTVarSearch ! として提供されます。 ! module gtvarsearch ! !== 変数探査用モジュール ! ! 利用に関しては gtdata_generic#GTVarSearch もしくは ! gtvarsearch.f90#GTVarSearchInit, gtvarsearch.f90#GTVarSearchNext ! を参照してください。 ! use an_types, only: AN_VARIABLE_SEARCH type(AN_VARIABLE_SEARCH), save:: an end module subroutine GTVarSearchNext(url, end) ! !== 変数探査サブルーチン ! ! あるファイル名 urlBase に依存する変数すべてを取得するには、 ! まず GTVarSearch(urlBase) (下記のサブルーチン) を呼び出し、 ! その後無限ループの中で GTVarSearch(url, end) を呼び出します。 ! そうすることで url に1つ1つの変数名が返ります。 ! *end* が真になったとき、すべての変数名を探索し終えたことになります。 ! !=== 例 ! ! use gt4f90io ! character(len = STRING) :: filename, varname ! logical :: end ! ! write(*,*) "Enter file name: " ! read(*,*) filename ! ! call GTVarSearch(filename) ! do ! call GTVarSearch(varname, end) ! if (end) exit ! write(*, *) trim(varname) ! enddo ! use an_generic, only: var_search use gtvarsearch use dc_trace, only: beginsub, endsub character(len = *), intent(out):: url logical, intent(out):: end call beginsub('gtvarsearchnext') call var_search(an, url=url, end=end) call endsub('gtvarsearchnext', 'url=%c end=%y', c1=trim(url), L=(/end/)) end subroutine subroutine GTVarSearchInit(urlBase) ! !== 変数探査初期化サブルーチン ! ! 上記の GTVarSearch を参照してください。 ! use an_generic, only: var_search use gtvarsearch use dc_trace, only: beginsub, endsub character(len = *), intent(in):: urlBase call beginsub('gtvarsearchinit', 'urlbase=<%c>', c1=trim(urlbase)) call var_search(an, urlBase=urlBase) call endsub('gtvarsearchinit') end subroutine