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
Character length for word, token.
integer, parameter, public dc_ebaddate
subroutine, public storeerror(number, where, err, cause_c, cause_i)
integer, parameter, public dc_noerr
Provide simple regular expression subroutine: 'match'.
integer, parameter, public dp
Double Precision Real number.
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)
Handling character types.
Provides kind type parameter values.
subroutine, public endsub(name, fmt, i, r, d, L, n, c1, c2, c3, ca)
integer, parameter, public dc_ealreadyinit
integer, parameter, public string
Character length for string.