Return Type | Function name | Arguments |
---|---|---|
hzEcode | hzCron::TestDate | (hzSDate&,) |
Declared in file: hzCron.h
Defined in file : hzCron.cpp
Function Logic:
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 ; }