2.2.1.44.1 RecurrencePattern Structure

The RecurrencePattern structure specifies a recurrence pattern. The fields of this structure are stored in little-endian byte order.


0


1


2


3


4


5


6


7


8


9

1
0


1


2


3


4


5


6


7


8


9

2
0


1


2


3


4


5


6


7


8


9

3
0


1

ReaderVersion

WriterVersion

RecurFrequency

PatternType

CalendarType

FirstDateTime

...

Period

...

SlidingFlag

...

PatternTypeSpecific (variable)

...

EndType

OccurrenceCount

FirstDOW

DeletedInstanceCount

DeletedInstanceDates (variable)

...

ModifiedInstanceCount

ModifiedInstanceDates (variable)

...

StartDate

EndDate

ReaderVersion (2 bytes):  This field MUST be set to 0x3004.

WriterVersion (2 bytes):  This field MUST be set to 0x3004.

RecurFrequency (2 bytes):  An integer that specifies the frequency of the recurring series. Valid values are listed in the following table.

RecurFrequency

Value

Daily

0x200A

Weekly

0x200B

Monthly

0x200C

Yearly

0x200D

PatternType (2 bytes): An integer that specifies the type of recurrence pattern. The valid recurrence pattern types are listed in the following table.

Name

Value

Meaning

Day

0x0000

The event has a daily recurrence.

Week

0x0001

The event has a weekly recurrence.

Month

0x0002

The event has a monthly recurrence.

MonthEnd

0x0004

The event has a month-end recurrence.<12>

MonthNth

0x0003

The event has an every nth month pattern.

HjMonth

0x000A

The event has a monthly recurrence in the Hijri calendar. For this value in the PatternType field, the value of the CalendarType field SHOULD be set to 0x0000.<13>

HjMonthNth

0x000B

The event has an every nth month pattern in the Hijri calendar. For this value in the PatternType field, the value of the CalendarType field MUST be set to 0x0000.

HjMonthEnd

0x000C

The event has a month end recurrence in the Hijri calendar. For this value in the PatternType field, the value of the CalendarType field MUST be set to 0x0000.

CalendarType (2 bytes): An integer that specifies the type of calendar that is used. The acceptable values for the calendar type are listed in the following table.

Name

Value

Meaning

Default

0x0000

The default value for the calendar type is Gregorian.

If the value of the PatternType field is HjMonth, HjMonthNth, or HjMonthEnd and the value of the CalendarType field is Default, this recurrence uses the Hijri calendar.

CAL_GREGORIAN

0x0001

Gregorian (localized) calendar

CAL_GREGORIAN_US

0x0002

Gregorian (U.S.) calendar

CAL_JAPAN

0x0003

Japanese Emperor era calendar

CAL_TAIWAN

0x0004

Taiwan calendar

CAL_KOREA

0x0005

Korean Tangun era calendar

CAL_HIJRI

0x0006

Hijri (Arabic Lunar) calendar

CAL_THAI

0x0007

Thai calendar

CAL_HEBREW

0x0008

Hebrew lunar calendar

CAL_GREGORIAN_ME_FRENCH

0x0009

Gregorian Middle East French calendar

CAL_GREGORIAN_ARABIC

0x000A

Gregorian Arabic calendar

CAL_GREGORIAN_XLIT_ENGLISH

0x000B

Gregorian transliterated English calendar

CAL_GREGORIAN_XLIT_FRENCH

0x000C

Gregorian transliterated French calendar

CAL_LUNAR_JAPANESE

0x000E

Japanese lunar calendar

CAL_CHINESE_LUNAR

0x000F

Chinese lunar calendar

CAL_SAKA

0x0010

Saka era calendar

CAL_LUNAR_ETO_CHN

0x0011

Lunar ETO Chinese calendar

CAL_LUNAR_ETO_KOR

0x0012

Lunar ETO Korean calendar

CAL_LUNAR_ROKUYOU

0x0013

Lunar Rokuyou calendar

CAL_LUNAR_KOREAN

0x0014

Korean lunar calendar

CAL_UMALQURA

0x0017

Um Al Qura calendar

FirstDateTime (4 bytes):  An integer that specifies the first ever day, week, or month of a recurring series, dating back to a reference date, which is January 1, 1601, for a Gregorian calendar. The value and its meaning depend on the value of the RecurFrequency field. The value of the FirstDateTime field is used to determine the valid dates of a recurring series, as specified in section 2.2.1.44.1.2.

The value and meaning of the FirstDateTime field for each type of recurrence frequency are specified in the following table. For details about how the value is calculated, see section 2.2.1.44.1.1.

Frequency

Value and Meaning

Daily

The number of minutes between midnight January 1, 1601, and the first ever day on which the event would occur.

Weekly

The number of minutes between midnight January 1, 1601, and the first day of the first ever week in which the event would occur.

Monthly or Yearly

The number of minutes between midnight January 1, 1601, and the first day of the first ever month in which the event would occur.

Period (4 bytes): An integer that specifies the interval at which the meeting pattern specified in PatternTypeSpecific field repeats. The Period value MUST be between 1 and the maximum recurrence interval, which is 999 days for daily recurrences, 99 weeks for weekly recurrences, and 99 months for monthly recurrences. The following table lists the values for this field based on the recurrence frequency, which is specified in the RecurFrequency field.

Frequency

Value

Daily recurrence

The period is stored as the minutes in whole number of days. For example, to define a recurrence that occurs every two days, the Period field is set to 0x00000B40, which equals 2880 minutes, or two days.

Weekly recurrence

The period is stored in weeks. For example, if the Period field is set to 0x00000002, the meeting occurs every two weeks.

Monthly or yearly recurrence

The period is stored in months. If the recurrence is a yearly recurrence, The Period field MUST be set to 12.

SlidingFlag (4 bytes):  This field is only used for scheduling tasks; otherwise the value MUST be zero (0). For more details about sliding tasks, see [MS-OXOTASK] section 3.1.4.6.2.

PatternTypeSpecific (variable):  A structure that specifies the details of the recurrence pattern. The structure varies according to the value of the PatternType field, as specified in sections 2.2.1.44.1.3, 2.2.1.44.1.4, 2.2.1.44.1.5, and 2.2.1.44.1.6.

EndType (4 bytes):  An integer that specifies the ending type for the recurrence. This field MUST be set to one of the values listed in the following table.

Recurrence range type

Value

End after date

0x00002021

End after N occurrences

0x00002022

Never end

SHOULD be 0x00002023 but can be 0xFFFFFFFF

OccurrenceCount (4 bytes):  An integer that specifies the number of occurrences in a recurrence.

When the EndType of the pattern is "End after date", this value has to be computed. Although the value of this field is set, its value has no meaning on a recurring series that has no end date. This value can be set to 0x0000000A for a recurring series with no end date.<14>

FirstDOW (4 bytes): An integer that specifies the day on which the calendar week begins. The default value is Sunday (0x00000000). This field MUST be set to one of the values listed in the following table.

Day

Value

Sunday

0x00000000

Monday

0x00000001

Tuesday

0x00000002

Wednesday

0x00000003

Thursday

0x00000004

Friday

0x00000005

Saturday

0x00000006

DeletedInstanceCount (4 bytes): An integer that specifies the number of elements in the DeletedInstanceDates field.

DeletedInstanceDates (variable):  An array of dates, each of which is the original instance date of either a deleted instance or a modified instance for this recurrence. The number of dates contained in this array is specified by the DeletedInstanceCount field. Each date is stored as the number of minutes between midnight, January 1, 1601, and midnight of the specified day, in the time zone specified by the PidLidTimeZoneStruct property (section 2.2.1.39). The dates are ordered from earliest to latest.

The array contains exactly one element for each deleted instance, and every deleted instance is represented. The array also contains an entry for every modified instance. The array SHOULD NOT contain duplicate entries. Deleted instances for which there is no corresponding value in the ModifiedInstanceDates field imply that they have been completely removed from the pattern.

ModifiedInstanceCount (4 bytes):  An integer that specifies the number of elements in the ModifiedInstanceDates field. The value of this field MUST be less than or equal to the value of the DeletedInstanceCount field.

ModifiedInstanceDates (variable):  An array of dates, each of which is the date of a modified instance. The number of dates contained in this array is specified by the ModifiedInstanceCount field. Each date is stored as the number of minutes between midnight, January 1, 1601, and midnight of the specified day, in the time zone specified by the PidLidTimeZoneStruct property (section 2.2.1.39). The dates are ordered from earliest to latest.

The array contains exactly one element for each modified instance, and every modified instance is represented. The array SHOULD NOT contain duplicate entries. Every modified instance also has to have an entry in the DeletedInstanceDates field with the original instance date.

StartDate (4 bytes):  An integer that specifies the date of the first occurrence. The value is the number of minutes between midnight, January 1, 1601, and midnight of the date of the first occurrence.

EndDate (4 bytes):  An integer that specifies the ending date for the recurrence. The value is the number of minutes between midnight, January 1, 1601, and midnight of the date of the last occurrence. When the value of the EndType field is 0x00002022 (end after n occurrences), this value is calculated based on the number of occurrences If the recurrence does not have an end date, the value of the EndDate field MUST be set to 0x5AE980DF.