15 & year, month, day, hour, min, sec, zone, &
33 character(*),
intent(in):: date_str
41 integer,
intent(out):: year
42 integer,
intent(out):: month
43 integer,
intent(out):: day
44 integer,
intent(out):: hour
45 integer,
intent(out):: min
46 real(DP),
intent(out):: sec
47 character(*),
intent(out):: zone
49 logical,
intent(out),
optional:: err
68 integer:: start, length
69 character(STRING):: str1, str2
70 character(TOKEN):: zone_pm, zone_hrs, zone_min
72 character(STRING):: cause_c
73 character(*),
parameter:: subname =
'DCCalDateParseStr1' 82 call match(
'[-]*#d+-#d+-#d+[#w#s]+#d+:#d+:#d+', date_str, &
85 if ( length > 0 )
then 86 str1 = date_str(start:)
90 &
'date_str=<%c> is invalid expression as date.', &
91 & c1 = trim(date_str) )
98 call match(
'^[-]*#d+-', str1, &
100 str2 = str1(start:start+length-2)
101 str1 = str1(start+length:)
107 call match(
'^#d+-', str1, &
109 str2 = str1(start:start+length-2)
110 str1 = str1(start+length:)
116 call match(
'^#d+[#w#s]', str1, &
118 str2 = str1(start:start+length-2)
119 str1 = str1(start+length:)
125 call match(
'#d+:', str1, &
127 str2 = str1(start:start+length-2)
128 str1 = str1(start+length:)
134 call match(
'#d+:', str1, &
136 str2 = str1(start:start+length-2)
137 str1 = str1(start+length:)
143 call match(
'#d+', str1, &
145 str2 = str1(start:start+length-1)
146 str1 = str1(start+length:)
148 call match(
'^#.#d+', str1, &
151 if ( length > 0 )
then 152 str2 = trim(str2) // str1(start:start+length-1)
153 str1 = str1(start+length:)
160 call match(
'[#+-]#d+:#d+', str1, &
162 if ( length > 0 )
then 163 zone_pm = str1(start:start)
164 str1 = str1(start+1:start+length-1)
166 call match(
'^#d+:', str1, &
168 zone_hrs = str1(start:start+length-2)
169 zone_min = str1(start+length:)
170 zone = trim(zone_pm) // trim(zone_hrs) //
':' // trim(zone_min)
175 call dbgmessage(
'year=<%d> month=<%d> day=<%d> hour=<%d> min=<%d> sec=<%f>' // &
177 & i = (/year, month, day, hour, min/), d = (/sec/), &
184 call storeerror( stat, subname, err, cause_c )
integer, parameter, public token
単語やキーワードを保持する文字型変数の種別型パラメタ
integer, parameter, public dc_ebaddate
subroutine, public storeerror(number, where, err, cause_c, cause_i)
integer, parameter, public dc_noerr
シンプルな正規表現関数 'match' を提供します.
subroutine dccaldateparsestr1(date_str, year, month, day, hour, min, sec, zone, err)
integer, parameter, public dp
倍精度実数型変数
subroutine, public match(pattern, text, start, length)
subroutine, public dbgmessage(fmt, i, r, d, L, n, c1, c2, c3, ca)
subroutine, public beginsub(name, fmt, i, r, d, L, n, c1, c2, c3, ca, version)
subroutine, public endsub(name, fmt, i, r, d, L, n, c1, c2, c3, ca)
integer, parameter, public dc_ealreadyinit
integer, parameter, public string
文字列を保持する 文字型変数の種別型パラメタ