From 5bcba6591c38fbb9f7a3a5f63c86963d8a066595 Mon Sep 17 00:00:00 2001 From: Florian Prill <florian.prill@dwd.de> Date: Fri, 2 Feb 2018 14:34:06 +0100 Subject: [PATCH] fixed missing initialization; added test to example. --- examples/example.f90 | 32 ++++++++++++++++++++++++++++++++ src/mtime_timedelta.c | 2 ++ 2 files changed, 34 insertions(+) diff --git a/examples/example.f90 b/examples/example.f90 index 548d997a..159dfbb8 100644 --- a/examples/example.f90 +++ b/examples/example.f90 @@ -21,6 +21,7 @@ program example type(datetime), pointer :: start_date_tmp type(datetime), pointer :: start_date_test type(datetime), pointer :: stop_date + type(datetime), pointer :: end_date type(timedelta), pointer :: time_step @@ -119,6 +120,8 @@ contains type(datetime), pointer :: dt1 => null(), dt2 => null() character(len=MAX_TIMEDELTA_STR_LEN) :: td_string character(len=MAX_DATETIME_STR_LEN) :: dstring + TYPE(timedelta), POINTER :: time_delta + CHARACTER(LEN=MAX_DATETIME_STR_LEN) :: dt_string mtime_td => newTimedelta("PT1H1M1S") mtime_td = mtime_td * 0.3d0 @@ -230,6 +233,35 @@ contains call deallocateDatetime(dt2) call deallocateTimedelta(mtime_td) + CALL setCalendar(PROLEPTIC_GREGORIAN) + start_date => newDatetime("2017-07-01T00:00:00.000") + end_date => newDatetime("2017-07-31T00:00:00.000") + time_delta => newTimeDelta("P01D") + time_delta = end_date - start_date + CALL datetimeToString(start_date, dt_string) + WRITE (0,*) "start_date = ", TRIM(dt_string) + CALL datetimeToString(end_date, dt_string) + WRITE (0,*) "end_date = ", TRIM(dt_string) + CALL timedeltaToString(time_delta, td_string) + WRITE (0,*) "difference (P30D) = ", TRIM(td_string) + CALL deallocateDatetime(start_date) + CALL deallocateDatetime(end_date) + CALL deallocateTimedelta(time_delta) + + start_date => newDatetime("2017-07-01T00:00:00.000") + end_date => newDatetime("2017-08-01T00:00:00.000") + time_delta => newTimeDelta("P01D") + time_delta = end_date - start_date + CALL datetimeToString(start_date, dt_string) + WRITE (0,*) "start_date = ", TRIM(dt_string) + CALL datetimeToString(end_date, dt_string) + WRITE (0,*) "end_date = ", TRIM(dt_string) + CALL timedeltaToString(time_delta, td_string) + WRITE (0,*) "difference (P01M) = ", TRIM(td_string) + CALL deallocateDatetime(start_date) + CALL deallocateDatetime(end_date) + CALL deallocateTimedelta(time_delta) + end subroutine icon_tests subroutine event_tests diff --git a/src/mtime_timedelta.c b/src/mtime_timedelta.c index 7a6836b4..d1f18630 100644 --- a/src/mtime_timedelta.c +++ b/src/mtime_timedelta.c @@ -1082,6 +1082,8 @@ julianDeltaToTimeDelta(struct _juliandelta* jd, struct _datetime* base_dt, struc /* } */ /* } */ + td_return->month = 0; + td_return->day = (int) delta_final_year; for (i = NO_OF_MONTHS_IN_A_YEAR; i > 0; i--) { if (delta_final_year >= msdinm[base_dt->date.month - 1][i]) -- GitLab