Path: | dc_utils/dccalparseunit.f90 |
Last Update: | Sat Oct 17 23:08:58 +0900 2009 |
Authors: | Yasuhiro MORIKAWA |
Version: | $Id: dccalparseunit.f90,v 1.2 2009-10-17 14:08:58 morikawa Exp $ |
Tag Name: | $Name: gtool5-20101228-1 $ |
Copyright: | Copyright (C) GFD Dennou Club, 2009-. All rights reserved. |
License: | See COPYRIGHT |
このファイルに記載される手続き群は dc_calendar モジュールから提供されます.
Procedures described in this file are provided from "dc_calendar" module.
Subroutine : | |||
unit_str : | character(*), intent(in) | ||
unit_sym : | integer, intent(out) | ||
err : | logical, intent(out), optional
|
文字列変数の日時単位 unit_str を整数型変数の日時単位 unit_sym に変換します. unit_str として有効な文字列は以下の通りです.
dc_calendar_types#UNIT_SEC : | 秒の単位 |
dc_calendar_types#UNIT_MIN : | 分の単位 |
dc_calendar_types#UNIT_HOUR : | 時間の単位 |
dc_calendar_types#UNIT_DAY : | 日の単位 |
dc_calendar_types#UNIT_MONTH : | 月の単位 |
dc_calendar_types#UNIT_YEAR : | 年の単位 |
有効な文字列が与えられた場合, uni_sym に以下の変数に相当する 整数が返ります.
無効な値が与えられた場合, エラーを生じます.
Parse a character variable of units of date unit_str, and return an integer variable of units of date unit_sym. Valid strings as unit_str are as follows.
dc_calendar_types#UNIT_SEC : | Units of second |
dc_calendar_types#UNIT_MIN : | Units of minute |
dc_calendar_types#UNIT_HOUR : | Units of hour |
dc_calendar_types#UNIT_DAY : | Units of day |
dc_calendar_types#UNIT_MONTH : | Units of month |
dc_calendar_types#UNIT_YEAR : | Units of year |
When a valid string is specified, an integer corresponding one of following variables is returned to unit_sym.
dc_calendar_types#UNIT_SYMBOL_SEC : | Units of second |
dc_calendar_types#UNIT_SYMBOL_MIN : | Units of minute |
dc_calendar_types#UNIT_SYMBOL_HOUR : | Units of hour |
dc_calendar_types#UNIT_SYMBOL_DAY : | Units of day |
dc_calendar_types#UNIT_SYMBOL_MONTH : | Units of month |
dc_calendar_types#UNIT_SYMBOL_YEAR : | Units of year |
If an invalid string is specified an error is caused.
subroutine DCCalParseUnit1( unit_str, unit_sym, err ) ! ! 文字列変数の日時単位 *unit_str* を整数型変数の日時単位 ! *unit_sym* に変換します. ! *unit_str* として有効な文字列は以下の通りです. ! ! dc_calendar_types#UNIT_SEC :: 秒の単位 ! dc_calendar_types#UNIT_MIN :: 分の単位 ! dc_calendar_types#UNIT_HOUR :: 時間の単位 ! dc_calendar_types#UNIT_DAY :: 日の単位 ! dc_calendar_types#UNIT_MONTH :: 月の単位 ! dc_calendar_types#UNIT_YEAR :: 年の単位 ! ! 有効な文字列が与えられた場合, *uni_sym* に以下の変数に相当する ! 整数が返ります. ! ! dc_calendar_types#UNIT_SYMBOL_SEC :: 秒の単位 ! dc_calendar_types#UNIT_SYMBOL_MIN :: 分の単位 ! dc_calendar_types#UNIT_SYMBOL_HOUR :: 時間の単位 ! dc_calendar_types#UNIT_SYMBOL_DAY :: 日の単位 ! dc_calendar_types#UNIT_SYMBOL_MONTH :: 月の単位 ! dc_calendar_types#UNIT_SYMBOL_YEAR :: 年の単位 ! ! 無効な値が与えられた場合, エラーを生じます. ! ! Parse a character variable of units of date *unit_str*, and ! return an integer variable of units of date *unit_sym*. ! Valid strings as *unit_str* are as follows. ! ! dc_calendar_types#UNIT_SEC :: Units of second ! dc_calendar_types#UNIT_MIN :: Units of minute ! dc_calendar_types#UNIT_HOUR :: Units of hour ! dc_calendar_types#UNIT_DAY :: Units of day ! dc_calendar_types#UNIT_MONTH :: Units of month ! dc_calendar_types#UNIT_YEAR :: Units of year ! ! When a valid string is specified, an integer corresponding ! one of following variables is returned to *unit_sym*. ! ! dc_calendar_types#UNIT_SYMBOL_SEC :: Units of second ! dc_calendar_types#UNIT_SYMBOL_MIN :: Units of minute ! dc_calendar_types#UNIT_SYMBOL_HOUR :: Units of hour ! dc_calendar_types#UNIT_SYMBOL_DAY :: Units of day ! dc_calendar_types#UNIT_SYMBOL_MONTH :: Units of month ! dc_calendar_types#UNIT_SYMBOL_YEAR :: Units of year ! ! If an invalid string is specified an error is caused. ! use dc_calendar_types, only: UNIT_SYMBOL_ERR use dc_calendar_internal, only: dccaldate_str2usym use dc_message, only: MessageNotify use dc_string, only: LChar use dc_trace, only: BeginSub, EndSub use dc_error, only: StoreError, DC_NOERR, DC_EALREADYINIT, DC_EBADCALTYPE, DC_EBADUNIT use dc_types, only: STRING, DP implicit none character(*), intent(in):: unit_str integer, intent(out):: unit_sym logical, intent(out), optional:: err ! 例外処理用フラグ. ! デフォルトでは, この手続き内でエラーが ! 生じた場合, プログラムは強制終了します. ! 引数 *err* が与えられる場合, ! プログラムは強制終了せず, 代わりに ! *err* に .true. が代入されます. ! ! Exception handling flag. ! By default, when error occur in ! this procedure, the program aborts. ! If this *err* argument is given, ! .true. is substituted to *err* and ! the program does not abort. ! 作業変数 ! Work variables ! integer:: stat character(STRING):: cause_c character(*), parameter:: subname = 'DCCalParseUnit1' continue call BeginSub( subname ) stat = DC_NOERR cause_c = '' ! 単位の文字列をシンボル (整数型変数) に変換 ! Convert strings of units into symbols (integer variables) ! unit_sym = dccaldate_str2usym( unit_str ) ! エラー処理 ! Error Handling ! if ( unit_sym == UNIT_SYMBOL_ERR ) then call MessageNotify('W', subname, 'unit_str=<%c> is invalid. (ONLY day,hour,min,sec are valid)', c1 = trim(unit_str) ) stat = DC_EBADUNIT goto 999 end if ! 終了処理, 例外処理 ! Termination and Exception handling ! 999 continue call StoreError( stat, subname, err, cause_c ) call EndSub( subname ) end subroutine DCCalParseUnit1