! != 次元相対名から次元順序番号の問い合わせ ! ! Authors:: Eizi TOYODA, Yasuhiro MORIKAWA ! Version:: $Id: gtdim_name2ord.f90,v 1.2 2006-01-15 10:04:57 morikawa Exp $ ! Tag Name:: $Name: gt4f90io-20080810 $ ! Copyright:: Copyright (C) GFD Dennou Club, 2000-2005. All rights reserved. ! License:: See COPYRIGHT[link:../../COPYRIGHT] ! ! 以下のサブルーチン、関数は gtdata_generic から gtdata_generic#Dimname_to_Dimord ! として提供されます。 integer function gtdim_name2ord(var, name) result(result) ! !== 次元相対名から次元順序番号の問い合わせ ! ! 変数には複数の次元が所属します。次元は順序番号で識別されますが、 ! 変数における次元の順序は入れ替えることもできるため、 ! 変数に相対的短い名前で識別することが便利な場合もあります。 ! たとえば変数 filename?var に対して ! filename?var,dim=1 のような ! コンマ記法 ({gtool4 netCDF 規約}[link:../xref.htm#label-6] の ! 「5.4 コンマ記法」参照) ! で用いられるものです。(NetCDF 変数 filename?varname ! に対する次元名 dimfilename?dim ! を指示するでしょうが、必ずしもそのような関係が成り立つとは限りません) ! ! Dimname_to_Dimord 手続はこのような相対次元名から次元順序番号を与えます。 ! 正当な番号は1以上であり、0以下の番号はエラーを示します。 ! use gtdata_types, only: gt_variable use dc_string, only: stoi use an_generic, only: an_variable, search_dim use gt_map, only: var_class, vtb_class_netcdf implicit none type(gt_variable), intent(in):: var character(len = *), intent(in):: name integer:: class, cid result = -1 if (name == ' ') return result = stoi(name) if (result /= 0) return ! 個別層に問い合わせて次元番号を得ようと試みる。 call var_class(var, class, cid) if (class == vtb_class_netcdf) then result = search_dim(an_variable(cid), name) endif ! map 表から次元名を使って次元番号を得ようと試みる。 end function gtdim_name2ord