Return TypeFunction nameArguments
hzEcodehzCron::TestDate(hzSDate&,)

Declared in file: hzCron.h
Defined in file : hzCron.cpp

Function Logic:

0:START 1:hzSDate::Dow hzSDate::Day hzSDate::Month 2:!m_bActive 3:m_error 4:Return E_NOINIT 5:m_Period 6:HZPERIOD_NEVER 7:Return E_RANGE 8:HZPERIOD_RANDOM 9:Return E_OK 10:HZPERIOD_DAY 11:Return E_OK 12:HZPERIOD_MONSAT 13:Return dow==6?E_RANGE:E_OK 14:HZPERIOD_WEEKDAY 15:Return dow<5?E_OK:E_RANGE 16:HZPERIOD_EMON 17:Return dow==0?E_OK:E_RANGE 18:HZPERIOD_ETUE 19:Return dow==1?E_OK:E_RANGE 20:HZPERIOD_EWED 21:Return dow==2?E_OK:E_RANGE 22:HZPERIOD_ETHR 23:Return dow==3?E_OK:E_RANGE 24:HZPERIOD_EFRI 25:Return dow==4?E_OK:E_RANGE 26:HZPERIOD_ESAT 27:Return dow==5?E_OK:E_RANGE 28:HZPERIOD_ESUN 29:Return dow==6?E_OK:E_RANGE 30:HZPERIOD_ALT_MON 31:HZPERIOD_ALT_TUE 32:HZPERIOD_ALT_WED 33:HZPERIOD_ALT_THR 34:HZPERIOD_ALT_FRI 35:HZPERIOD_ALT_SAT 36:HZPERIOD_ALT_SUN 37:m_Era.IsSet()&&!((D.NoDays()-m_Era.NoDays())%14) 38:Return E_OK 39:Return E_RANGE

Function body:

hzEcode hzCron::TestDate (hzSDate& D)
{
   _hzfunc("hzCron::TestDate") ;
   hzXDate     tmp ;
   uint32_t    _mon ;
   uint32_t    _tue ;
   uint32_t    _wed ;
   uint32_t    _thr ;
   uint32_t    _fri ;
   uint32_t    _sat ;
   uint32_t    _sun ;
   uint32_t    dow = D.Dow() ;
   uint32_t    day = D.Day() ;
   uint32_t    mon = D.Month() ;
   uint32_t    mlen ;
   if (!m_bActive)
   {
       m_error = "Interval not validated/initialized" ;
       return E_NOINIT ;
   }
   switch  (m_Period)
   {
   case HZPERIOD_NEVER:    return E_RANGE ;
   case HZPERIOD_RANDOM:   return E_OK ;
   case HZPERIOD_DAY:      return E_OK ;
   case HZPERIOD_MONSAT:   return dow == 6? E_RANGE : E_OK ;
   case HZPERIOD_WEEKDAY:  return dow < 5? E_OK : E_RANGE ;
   case HZPERIOD_EMON:     return dow == 0? E_OK : E_RANGE ;
   case HZPERIOD_ETUE:     return dow == 1? E_OK : E_RANGE ;
   case HZPERIOD_EWED:     return dow == 2? E_OK : E_RANGE ;
   case HZPERIOD_ETHR:     return dow == 3? E_OK : E_RANGE ;
   case HZPERIOD_EFRI:     return dow == 4? E_OK : E_RANGE ;
   case HZPERIOD_ESAT:     return dow == 5? E_OK : E_RANGE ;
   case HZPERIOD_ESUN:     return dow == 6? E_OK : E_RANGE ;
   case HZPERIOD_ALT_MON:
   case HZPERIOD_ALT_TUE:
   case HZPERIOD_ALT_WED:
   case HZPERIOD_ALT_THR:
   case HZPERIOD_ALT_FRI:
   case HZPERIOD_ALT_SAT:
   case HZPERIOD_ALT_SUN:
       if (m_Era.IsSet() && !((D.NoDays() - m_Era.NoDays()) % 14))
           return E_OK ;
       return E_RANGE ;
   default:
       break ;
   }
   if (m_Period == HZPERIOD_MONTH1 && (!(mon % 2)))return E_RANGE ;
   if (m_Period == HZPERIOD_MONTH2 && (mon % 2))       return E_RANGE ;
   if (m_Period == HZPERIOD_QTR1 && (mon % 3)!= 1) return E_RANGE ;
   if (m_Period == HZPERIOD_QTR2 && (mon % 3)!= 2) return E_RANGE ;
   if (m_Period == HZPERIOD_QTR3 && (mon % 3)!= 0) return E_RANGE ;
   if (m_Period == HZPERIOD_HYEAR1 && (mon % 6)!= 1)   return E_RANGE ;
   if (m_Period == HZPERIOD_HYEAR2 && (mon % 6)!= 2)   return E_RANGE ;
   if (m_Period == HZPERIOD_HYEAR3 && (mon % 6)!= 3)   return E_RANGE ;
   if (m_Period == HZPERIOD_HYEAR4 && (mon % 6)!= 4)   return E_RANGE ;
   if (m_Period == HZPERIOD_HYEAR5 && (mon % 6)!= 5)   return E_RANGE ;
   if (m_Period == HZPERIOD_HYEAR6 && (mon % 6)!= 0)   return E_RANGE ;
   if (m_Period == HZPERIOD_YEAR1 && mon != 1)         return E_RANGE ;
   if (m_Period == HZPERIOD_YEAR2 && mon != 2)         return E_RANGE ;
   if (m_Period == HZPERIOD_YEAR3 && mon != 3)         return E_RANGE ;
   if (m_Period == HZPERIOD_YEAR4 && mon != 4)         return E_RANGE ;
   if (m_Period == HZPERIOD_YEAR5 && mon != 5)         return E_RANGE ;
   if (m_Period == HZPERIOD_YEAR6 && mon != 6)         return E_RANGE ;
   if (m_Period == HZPERIOD_YEAR7 && mon != 7)         return E_RANGE ;
   if (m_Period == HZPERIOD_YEAR8 && mon != 8)         return E_RANGE ;
   if (m_Period == HZPERIOD_YEAR9 && mon != 9)         return E_RANGE ;
   if (m_Period == HZPERIOD_YEAR10 && mon != 10)   return E_RANGE ;
   if (m_Period == HZPERIOD_YEAR11 && mon != 11)   return E_RANGE ;
   if (m_Period == HZPERIOD_YEAR12 && mon != 12)   return E_RANGE ;
   if (m_Rule == HZMONTHRULE_ERA_DERIVE && day != m_Era.Day()) return E_RANGE ;
   if (m_Rule == HZMONTHRULE_FIRST_DAY && day != 1)        return E_RANGE ;
   mlen = monlen(D.Year(), mon) ;
   if (m_Rule == HZMONTHRULE_LAST_DAY && day != mlen)
       return E_RANGE ;
   tmp.SetDate(D.Year(), mon, 1);
   switch (tmp.Dow())
   {
   case 0: _mon = 1; _tue = 2; _wed = 3; _thr = 4; _fri = 5; _sat = 6; _sun = 7; break ;
   case 1: _mon = 7; _tue = 1; _wed = 2; _thr = 3; _fri = 4; _sat = 5; _sun = 6; break ;
   case 2: _mon = 6; _tue = 7; _wed = 1; _thr = 2; _fri = 3; _sat = 4; _sun = 5; break ;
   case 3: _mon = 5; _tue = 6; _wed = 7; _thr = 1; _fri = 2; _sat = 3; _sun = 4; break ;
   case 4: _mon = 4; _tue = 5; _wed = 6; _thr = 7; _fri = 1; _sat = 2; _sun = 3; break ;
   case 5: _mon = 3; _tue = 4; _wed = 5; _thr = 6; _fri = 7; _sat = 1; _sun = 2; break ;
   case 6: _mon = 2; _tue = 3; _wed = 4; _thr = 5; _fri = 6; _sat = 7; _sun = 1; break ;
   }
   if (m_Rule == HZMONTHRULE_FIRST_WEEK_DAY && day != _mon)
   if (m_Rule == HZMONTHRULE_FIRST_WORK_DAY && day != _mon)
   if (m_Rule == HZMONTHRULE_1ST_MON && day != _mon)   return E_RANGE ;
   if (m_Rule == HZMONTHRULE_1ST_TUE && day != _tue)   return E_RANGE ;
   if (m_Rule == HZMONTHRULE_1ST_WED && day != _wed)   return E_RANGE ;
   if (m_Rule == HZMONTHRULE_1ST_THR && day != _thr)   return E_RANGE ;
   if (m_Rule == HZMONTHRULE_1ST_FRI && day != _fri)   return E_RANGE ;
   if (m_Rule == HZMONTHRULE_1ST_SAT && day != _sat)   return E_RANGE ;
   if (m_Rule == HZMONTHRULE_1ST_SUN && day != _sun)   return E_RANGE ;
   if (m_Rule == HZMONTHRULE_2ND_MON && day != (_mon+7))   return E_RANGE ;
   if (m_Rule == HZMONTHRULE_2ND_TUE && day != (_tue+7))   return E_RANGE ;
   if (m_Rule == HZMONTHRULE_2ND_WED && day != (_wed+7))   return E_RANGE ;
   if (m_Rule == HZMONTHRULE_2ND_THR && day != (_thr+7))   return E_RANGE ;
   if (m_Rule == HZMONTHRULE_2ND_FRI && day != (_fri+7))   return E_RANGE ;
   if (m_Rule == HZMONTHRULE_2ND_SAT && day != (_sat+7))   return E_RANGE ;
   if (m_Rule == HZMONTHRULE_2ND_SUN && day != (_sun+7))   return E_RANGE ;
   if (m_Rule == HZMONTHRULE_3RD_MON && day != (_mon+14))  return E_RANGE ;
   if (m_Rule == HZMONTHRULE_3RD_TUE && day != (_tue+14))  return E_RANGE ;
   if (m_Rule == HZMONTHRULE_3RD_WED && day != (_wed+14))  return E_RANGE ;
   if (m_Rule == HZMONTHRULE_3RD_THR && day != (_thr+14))  return E_RANGE ;
   if (m_Rule == HZMONTHRULE_3RD_FRI && day != (_fri+14))  return E_RANGE ;
   if (m_Rule == HZMONTHRULE_3RD_SAT && day != (_sat+14))  return E_RANGE ;
   if (m_Rule == HZMONTHRULE_3RD_SUN && day != (_sun+14))  return E_RANGE ;
   if (m_Rule == HZMONTHRULE_4TH_MON && day != (_mon+21))  return E_RANGE ;
   if (m_Rule == HZMONTHRULE_4TH_TUE && day != (_tue+21))  return E_RANGE ;
   if (m_Rule == HZMONTHRULE_4TH_WED && day != (_wed+21))  return E_RANGE ;
   if (m_Rule == HZMONTHRULE_4TH_THR && day != (_thr+21))  return E_RANGE ;
   if (m_Rule == HZMONTHRULE_4TH_FRI && day != (_fri+21))  return E_RANGE ;
   if (m_Rule == HZMONTHRULE_4TH_SAT && day != (_sat+21))  return E_RANGE ;
   if (m_Rule == HZMONTHRULE_4TH_SUN && day != (_sun+21))  return E_RANGE ;
   tmp.SetDate(D.Year(), mon, monlen(D.Year(), mon)) ;
   switch (tmp.Dow())
   {
   case 0: _mon = mlen   ; _tue = mlen-6; _wed = mlen-5; _thr = mlen-4; _fri = mlen-3; _sat = mlen-2; _sun = mlen-1; break ;
   case 1: _mon = mlen-1; _tue = mlen   ; _wed = mlen-6; _thr = mlen-5; _fri = mlen-4; _sat = mlen-3; _sun = mlen-2; break ;
   case 2: _mon = mlen-2; _tue = mlen-1; _wed = mlen   ; _thr = mlen-6; _fri = mlen-5; _sat = mlen-4; _sun = mlen-3; break ;
   case 3: _mon = mlen-3; _tue = mlen-2; _wed = mlen-1; _thr = mlen   ; _fri = mlen-6; _sat = mlen-5; _sun = mlen-4; break ;
   case 4: _mon = mlen-4; _tue = mlen-5; _wed = mlen-6; _thr = mlen-1; _fri = mlen   ; _sat = mlen-6; _sun = mlen-5; break ;
   case 5: _mon = mlen-5; _tue = mlen-4; _wed = mlen-5; _thr = mlen-6; _fri = mlen-1; _sat = mlen   ; _sun = mlen-6; break ;
   case 6: _mon = mlen-6; _tue = mlen-5; _wed = mlen-4; _thr = mlen-3; _fri = mlen-2; _sat = mlen-1; _sun = mlen   ; break ;
   }
   if (m_Rule == HZMONTHRULE_LAST_MON && day != _mon)  return E_RANGE ;
   if (m_Rule == HZMONTHRULE_LAST_TUE && day != _tue)  return E_RANGE ;
   if (m_Rule == HZMONTHRULE_LAST_WED && day != _wed)  return E_RANGE ;
   if (m_Rule == HZMONTHRULE_LAST_THR && day != _thr)  return E_RANGE ;
   if (m_Rule == HZMONTHRULE_LAST_FRI && day != _fri)  return E_RANGE ;
   if (m_Rule == HZMONTHRULE_LAST_SAT && day != _sat)  return E_RANGE ;
   if (m_Rule == HZMONTHRULE_LAST_SUN && day != _sun)  return E_RANGE ;
   return E_OK ;
}