16 & elapse_sec, date, cal, err )
56 use dc_message,
only: messagenotify
57 use dc_string,
only: lchar
58 use dc_trace,
only: beginsub, endsub
63 integer,
intent(out),
optional:: year
64 integer,
intent(out),
optional:: month
65 integer,
intent(out),
optional:: day
66 integer,
intent(out),
optional:: hour
67 integer,
intent(out),
optional:: min
68 real(DP),
intent(out),
optional:: sec
69 character(*),
intent(out),
optional:: zone
70 real(DP),
intent(in),
optional:: elapse_sec
73 type(
dc_cal_date),
intent(in),
optional,
target:: date
78 type(
dc_cal),
intent(in),
optional,
target:: cal
83 logical,
intent(out),
optional:: err
102 integer:: wyear, wmonth, wday, whour, wmin
104 character(TOKEN):: wzone
106 type(
dc_cal),
pointer:: calp =>null()
107 character(STRING):: e_date_str, e_cal_str
109 character(STRING):: cause_c
110 character(*),
parameter:: subname =
'DCCalInquire1'
112 call beginsub( subname )
119 if (
present( date ) )
then
125 if (
present( cal ) )
then
135 if ( .not. datep % initialized )
then
137 cause_c =
'DC_CAL_DATE'
141 if ( .not. calp % initialized )
then
151 wmonth = datep % month
161 if (
present( elapse_sec ) )
then
168 wsec = wsec + elapse_sec
178 e_date_str =
dccaldatetochar( wyear, wmonth, wday, whour, wmin, wsec, wzone )
179 call messagenotify(
'W', subname,
'cal=<%c> and date=<%c> are inconsistency', &
180 & c1 = trim(e_cal_str), c2 = trim(e_date_str) )
187 if (
present(year ) ) year = wyear
188 if (
present(month) ) month = wmonth
189 if (
present(day ) ) day = wday
190 if (
present(hour ) ) hour = whour
191 if (
present(min ) ) min = wmin
192 if (
present(sec ) ) sec = wsec
193 if (
present(zone ) ) zone = wzone
199 nullify( calp, datep )
200 call storeerror( stat, subname, err, cause_c )
201 call endsub( subname )
250 use dc_message,
only: messagenotify
251 use dc_string,
only: lchar
252 use dc_trace,
only: beginsub, endsub
257 character(*),
intent(out):: date_str
265 real(DP),
intent(in),
optional:: elapse_sec
268 type(
dc_cal_date),
intent(in),
optional,
target:: date
273 type(
dc_cal),
intent(in),
optional,
target:: cal
278 logical,
intent(out),
optional:: err
297 integer:: year, month, day, hour, min
299 character(TOKEN):: zone
301 type(
dc_cal),
pointer:: calp =>null()
302 character(STRING):: e_date_str, e_cal_str
304 character(STRING):: cause_c
305 character(*),
parameter:: subname =
'DCCalInquire2'
307 call beginsub( subname )
314 if (
present( date ) )
then
320 if (
present( cal ) )
then
330 if ( .not. datep % initialized )
then
332 cause_c =
'DC_CAL_DATE'
336 if ( .not. calp % initialized )
then
346 month = datep % month
357 if (
present( elapse_sec ) )
then
364 sec = sec + elapse_sec
375 call messagenotify(
'W', subname,
'cal=<%c> and date=<%c> are inconsistency', &
376 & c1 = trim(e_cal_str), c2 = trim(e_date_str) )
389 nullify( calp, datep )
390 call storeerror( stat, subname, err, cause_c )
391 call endsub( subname )
subroutine dccaldateinquire1(year, month, day, hour, min, sec, zone, elapse_sec, date, cal, err)
subroutine dccaldateinquire2(date_str, elapse_sec, date, cal, err)
type(dc_cal), target, save, public default_cal
type(dc_cal_date), target, save, public default_date
integer function, public dccaldate_normalize(year, month, day, hour, min, sec, cal)
subroutine, public default_cal_set
subroutine, public storeerror(number, where, err, cause_c, cause_i)
integer, parameter, public dc_enotinit
integer, parameter, public dc_noerr
integer, parameter, public dc_enegative
integer, parameter, public dc_einconsistcaldate
Provides kind type parameter values.
integer, parameter, public token
Character length for word, token
integer, parameter, public string
Character length for string
integer, parameter, public dp
Double Precision Real number