87 & year, month, day, hour, min, sec, elapse_sec, cal, date, err )
99 integer,
intent(in):: year
100 integer,
intent(in):: month
101 integer,
intent(in):: day
102 integer,
intent(in):: hour
103 integer,
intent(in):: min
104 real(DP),
intent(in):: sec
105 real(DP),
intent(in):: elapse_sec
106 type(
dc_cal),
intent(in),
optional,
target:: cal
107 type(
dc_cal_date),
intent(out),
optional,
target:: date
108 logical,
intent(out),
optional:: err
113 integer:: wyear, wmonth, wday, whour, wmin
116 type(
dc_cal),
pointer:: calp =>null()
117 character(STRING):: e_date_str, e_cal_str
119 character(STRING):: cause_c
120 character(*),
parameter:: subname =
'DCCalDateEvalYMDHMS1'
129 if (
present( date ) )
then
135 if (
present( cal ) )
then
151 if ( .not. calp % initialized )
then
176 wsec = wsec + elapse_sec
185 e_date_str =
dccaldatetochar( wyear, wmonth, wday, whour, wmin, wsec, zone =
"" )
186 call messagenotify(
'W', subname,
'cal=<%c> and date=<%c> are inconsistency', &
187 & c1 = trim(e_cal_str), c2 = trim(e_date_str) )
195 & wyear, wmonth, wday, whour, wmin, wsec, &
196 & datep, zone =
"", err = err )
197 if (
present(err) )
then
208 nullify( calp, datep )
209 call storeerror( stat, subname, err, cause_c )
278 & year, month, day, hour, min, sec, elapse_time, units, cal, date, err )
291 integer,
intent(in):: year
292 integer,
intent(in):: month
293 integer,
intent(in):: day
294 integer,
intent(in):: hour
295 integer,
intent(in):: min
296 real(DP),
intent(in):: sec
297 real(DP),
intent(in):: elapse_time
298 character(*),
intent(in):: units
299 type(
dc_cal),
intent(in),
optional,
target:: cal
300 type(
dc_cal_date),
intent(out),
optional,
target:: date
301 logical,
intent(out),
optional:: err
306 integer:: wyear, wmonth, wday, whour, wmin
309 type(
dc_cal),
pointer:: calp =>null()
310 character(STRING):: e_date_str, e_cal_str
313 character(STRING):: cause_c
314 character(*),
parameter:: subname =
'DCCalDateEvalYMDHMS2'
323 if (
present( date ) )
then
329 if (
present( cal ) )
then
345 if ( .not. calp % initialized )
then
373 wsec = wsec + elapse_time * calp % hour_in_day &
374 & * calp % min_in_hour &
375 & * calp % sec_in_min
377 wsec = wsec + elapse_time * calp % min_in_hour &
378 & * calp % sec_in_min
380 wsec = wsec + elapse_time * calp % sec_in_min
382 wsec = wsec + elapse_time
385 call messagenotify(
'W', subname,
'units=<%c> is invalid. (ONLY day,hrs,min,sec are valid)', &
398 e_date_str =
dccaldatetochar( wyear, wmonth, wday, whour, wmin, wsec, zone =
"" )
399 call messagenotify(
'W', subname,
'cal=<%c> and date=<%c> are inconsistency', &
400 & c1 = trim(e_cal_str), c2 = trim(e_date_str) )
408 & wyear, wmonth, wday, whour, wmin, wsec, &
409 & datep, zone =
"", err = err )
410 if (
present(err) )
then
421 nullify( calp, datep )
422 call storeerror( stat, subname, err, cause_c )
491 real(DP),
intent(in):: elapse_sec
492 type(
dc_cal),
intent(in),
optional,
target:: cal
493 type(
dc_cal_date),
intent(out),
optional,
target:: date
494 logical,
intent(out),
optional:: err
499 integer:: wyear, wmonth, wday, whour, wmin
501 character(TOKEN):: wzone
503 type(
dc_cal),
pointer:: calp =>null()
504 character(STRING):: e_date_str, e_cal_str
506 character(STRING):: cause_c
507 character(*),
parameter:: subname =
'DCCalDateEvalID1'
516 if (
present( date ) )
then
522 if (
present( cal ) )
then
538 if ( .not. calp % initialized )
then
547 wyear = init_date % year
548 wmonth = init_date % month
549 wday = init_date % day
550 whour = init_date % hour
551 wmin = init_date % min
552 wsec = init_date % sec
553 wzone = init_date % zone
564 wsec = wsec + elapse_sec
573 e_date_str =
dccaldatetochar( wyear, wmonth, wday, whour, wmin, wsec, zone =
"" )
574 call messagenotify(
'W', subname,
'cal=<%c> and date=<%c> are inconsistency', &
575 & c1 = trim(e_cal_str), c2 = trim(e_date_str) )
583 & wyear, wmonth, wday, whour, wmin, wsec, &
584 & datep, zone = wzone, err = err )
585 if (
present(err) )
then
596 nullify( calp, datep )
597 call storeerror( stat, subname, err, cause_c )
668 real(DP),
intent(in):: elapse_time
669 character(*),
intent(in):: units
670 type(
dc_cal),
intent(in),
optional,
target:: cal
671 type(
dc_cal_date),
intent(out),
optional,
target:: date
672 logical,
intent(out),
optional:: err
677 integer:: wyear, wmonth, wday, whour, wmin
679 character(TOKEN):: wzone
681 type(
dc_cal),
pointer:: calp =>null()
682 character(STRING):: e_date_str, e_cal_str
685 character(STRING):: cause_c
686 character(*),
parameter:: subname =
'DCCalDateEvalID2'
695 if (
present( date ) )
then
701 if (
present( cal ) )
then
717 if ( .not. calp % initialized )
then
726 wyear = init_date % year
727 wmonth = init_date % month
728 wday = init_date % day
729 whour = init_date % hour
730 wmin = init_date % min
731 wsec = init_date % sec
732 wzone = init_date % zone
746 wsec = wsec + elapse_time * calp % hour_in_day &
747 & * calp % min_in_hour &
748 & * calp % sec_in_min
750 wsec = wsec + elapse_time * calp % min_in_hour &
751 & * calp % sec_in_min
753 wsec = wsec + elapse_time * calp % sec_in_min
755 wsec = wsec + elapse_time
758 call messagenotify(
'W', subname,
'units=<%c> is invalid. (ONLY day,hrs,min,sec are valid)', &
771 e_date_str =
dccaldatetochar( wyear, wmonth, wday, whour, wmin, wsec, zone =
"" )
772 call messagenotify(
'W', subname,
'cal=<%c> and date=<%c> are inconsistency', &
773 & c1 = trim(e_cal_str), c2 = trim(e_date_str) )
781 & wyear, wmonth, wday, whour, wmin, wsec, &
782 & datep, zone = wzone, err = err )
783 if (
present(err) )
then
794 nullify( calp, datep )
795 call storeerror( stat, subname, err, cause_c )
855 & year1, month1, day1, hour1, min1, sec1, &
857 & year2, month2, day2, hour2, min2, sec2, &
869 integer,
intent(in):: year1
870 integer,
intent(in):: month1
871 integer,
intent(in):: day1
872 integer,
intent(in):: hour1
873 integer,
intent(in):: min1
874 real(DP),
intent(in):: sec1
875 real(DP),
intent(in):: elapse_sec
876 integer,
intent(out):: year2
877 integer,
intent(out):: month2
878 integer,
intent(out):: day2
879 integer,
intent(out):: hour2
880 integer,
intent(out):: min2
881 real(DP),
intent(out):: sec2
882 type(
dc_cal),
intent(in),
optional,
target:: cal
883 logical,
intent(out),
optional:: err
888 type(
dc_cal),
pointer:: calp =>null()
889 character(STRING):: e_date_str, e_cal_str
891 character(STRING):: cause_c
892 character(*),
parameter:: subname =
'DCCalDateEvalYM2YM1'
901 if (
present( cal ) )
then
917 if ( .not. calp % initialized )
then
942 sec2 = sec2 + elapse_sec
951 e_date_str =
dccaldatetochar( year2, month2, day2, hour2, min2, sec2, zone =
"" )
952 call messagenotify(
'W', subname,
'cal=<%c> and date=<%c> are inconsistency', &
953 & c1 = trim(e_cal_str), c2 = trim(e_date_str) )
962 call storeerror( stat, subname, err, cause_c )
1024 & year1, month1, day1, hour1, min1, sec1, &
1025 & elapse_time, units, &
1026 & year2, month2, day2, hour2, min2, sec2, &
1040 integer,
intent(in):: year1
1041 integer,
intent(in):: month1
1042 integer,
intent(in):: day1
1043 integer,
intent(in):: hour1
1044 integer,
intent(in):: min1
1045 real(DP),
intent(in):: sec1
1046 real(DP),
intent(in):: elapse_time
1047 character(*),
intent(in):: units
1048 integer,
intent(out):: year2
1049 integer,
intent(out):: month2
1050 integer,
intent(out):: day2
1051 integer,
intent(out):: hour2
1052 integer,
intent(out):: min2
1053 real(DP),
intent(out):: sec2
1054 type(
dc_cal),
intent(in),
optional,
target:: cal
1055 logical,
intent(out),
optional:: err
1060 type(
dc_cal),
pointer:: calp =>null()
1061 character(STRING):: e_date_str, e_cal_str
1064 character(STRING):: cause_c
1065 character(*),
parameter:: subname =
'DCCalDateEvalYM2YM1'
1074 if (
present( cal ) )
then
1090 if ( .not. calp % initialized )
then
1118 sec2 = sec2 + elapse_time * calp % hour_in_day &
1119 & * calp % min_in_hour &
1120 & * calp % sec_in_min
1122 sec2 = sec2 + elapse_time * calp % min_in_hour &
1123 & * calp % sec_in_min
1125 sec2 = sec2 + elapse_time * calp % sec_in_min
1127 sec2 = sec2 + elapse_time
1130 call messagenotify(
'W', subname,
'units=<%c> is invalid. (ONLY day,hour,min,sec are valid)', &
1131 & c1 = trim(units) )
1143 e_date_str =
dccaldatetochar( year2, month2, day2, hour2, min2, sec2, zone =
"" )
1144 call messagenotify(
'W', subname,
'cal=<%c> and date=<%c> are inconsistency', &
1145 & c1 = trim(e_cal_str), c2 = trim(e_date_str) )
1154 call storeerror( stat, subname, err, cause_c )
1209 real(
dp),
intent(in):: elapse_sec
1210 type(
dc_cal_date),
intent(in),
optional,
target:: date
1211 type(
dc_cal),
intent(in),
optional,
target:: cal
1217 real(
dp):: day_of_year
1219 type(
dc_cal),
pointer:: calp =>null()
1220 integer:: year, month, day, hour, min
1228 if (
present( date ) )
then
1234 if (
present( cal ) )
then
1245 if ( .not. datep % initialized )
return
1246 if ( .not. calp % initialized )
return
1252 & elapse_sec = elapse_sec, date = date , cal = calp )
1259 if ( stat /= 0 )
return
1264 result = ( day_of_year - 1 ) * calp % hour_in_day &
1265 & * calp % min_in_hour &
1266 & * calp % sec_in_min &
1267 & + hour * calp % min_in_hour &
1268 & * calp % sec_in_min &
1269 & + min * calp % sec_in_min &
1325 real(
dp),
intent(in):: elapse_sec
1326 type(
dc_cal_date),
intent(in),
optional,
target:: date
1327 type(
dc_cal),
intent(in),
optional,
target:: cal
1333 integer:: year, month, day, hour, min
1337 type(
dc_cal),
pointer:: calp =>null()
1344 if (
present( date ) )
then
1350 if (
present( cal ) )
then
1361 if ( .not. datep % initialized )
return
1362 if ( .not. calp % initialized )
return
1368 & elapse_sec = elapse_sec, date = date , cal = calp )
1375 if ( stat /= 0 )
return
1430 real(
dp),
intent(in):: elapse_sec
1431 type(
dc_cal_date),
intent(in),
optional,
target:: date
1432 type(
dc_cal),
intent(in),
optional,
target:: cal
1439 type(
dc_cal),
pointer:: calp =>null()
1440 integer:: year, month, day, hour, min
1447 if (
present( date ) )
then
1453 if (
present( cal ) )
then
1464 if ( .not. datep % initialized )
return
1465 if ( .not. calp % initialized )
return
1471 & elapse_sec = elapse_sec, date = date , cal = calp )
1477 & hour * calp % min_in_hour &
1478 & * calp % sec_in_min &
1479 & + min * calp % sec_in_min &
subroutine dccaldateevalymdhms2(year, month, day, hour, min, sec, elapse_time, units, cal, date, err)
real(dp) function dccaldateevaldayofyear1(elapse_sec, date, cal)
subroutine dccaldateevalid2(init_date, elapse_time, units, cal, date, err)
real(dp) function dccaldateevalsecofyear1(elapse_sec, date, cal)
subroutine dccaldateevalymdhms1(year, month, day, hour, min, sec, elapse_sec, cal, date, err)
日時の算出
subroutine dccaldateevalym2ym1(year1, month1, day1, hour1, min1, sec1, elapse_sec, year2, month2, day2, hour2, min2, sec2, cal, err)
subroutine dccaldateevalym2ym2(year1, month1, day1, hour1, min1, sec1, elapse_time, units, year2, month2, day2, hour2, min2, sec2, cal, err)
subroutine dccaldateevalid1(init_date, elapse_sec, cal, date, err)
real(dp) function dccaldateevalsecofday1(elapse_sec, date, cal)
dc_calendar 手続のインターフェース宣言
type(dc_cal), target, save, public default_cal
デフォルトの暦. DCCal で始まる手続のうち, DC_CAL 型の省略可能引数が与えられない 場合にはこの暦が設定もしくは利用される.
type(dc_cal_date), target, save, public default_date
デフォルトの日時. DCCalDate で始まる手続のうち, DC_CAL_DATE 型の省略可能引数が 与えられない場合にはこの日時が設定もしくは利用される.
integer function, public dccaldate_normalize(year, month, day, hour, min, sec, cal)
integer function, public dccaldate_ym2d(year, month, day, cal, day_of_year)
subroutine, public default_cal_set
integer function, public dccaldate_str2usym(str)
integer, parameter, public unit_symbol_sec
integer, parameter, public unit_symbol_hour
integer, parameter, public unit_symbol_day
integer, parameter, public unit_symbol_min
subroutine, public storeerror(number, where, err, cause_c, cause_i)
integer, parameter, public dc_ebadunit
integer, parameter, public dc_enotinit
-400 以下: dc ユーティリティのエラー
integer, parameter, public dc_noerr
エラー等を保持
integer, parameter, public dc_ebaddate
integer, parameter, public dc_einconsistcaldate
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 token
単語やキーワードを保持する文字型変数の種別型パラメタ
integer, parameter, public string
文字列を保持する 文字型変数の種別型パラメタ
integer, parameter, public dp
倍精度実数型変数