

| Type | Description | |||
| Recur as String | A String expression that specifies the recurrence rule according to RFC 5545. The Recur parameter must include DTSTART and FREQ rule parts, else the recurrence rule is not valid. | |||
| Part as RecurPartEnum | A RecurPartEnum expression that specifies the part of the recurrence rule to be requested | |||
| Variant | A VARIANT expression that specifies the value of the recurrence part. |
The BNF syntax for Recur parameter is:
recur = recur-rule-part *( ";" recur-rule-part )
;
; The rule parts are not ordered in any
; particular sequence.
;
; The FREQ rule part is REQUIRED,
; but MUST NOT occur more than once.
;
; The UNTIL or COUNT rule parts are OPTIONAL,
; but they MUST NOT occur in the same 'recur'.
;
; The other rule parts are OPTIONAL,
; but MUST NOT occur more than once.
recur-rule-part = ( "FREQ" "=" freq )
/ ( "UNTIL" "=" enddate )
/ ( "COUNT" "=" 1*DIGIT )
/ ( "INTERVAL" "=" 1*DIGIT )
/ ( "BYSECOND" "=" byseclist )
/ ( "BYMINUTE" "=" byminlist )
/ ( "BYHOUR" "=" byhrlist )
/ ( "BYDAY" "=" bywdaylist )
/ ( "BYMONTHDAY" "=" bymodaylist )
/ ( "BYYEARDAY" "=" byyrdaylist )
/ ( "BYWEEKNO" "=" bywknolist )
/ ( "BYMONTH" "=" bymolist )
/ ( "BYSETPOS" "=" bysplist )
/ ( "WKST" "=" weekday )
freq = "SECONDLY" / "MINUTELY" / "HOURLY" / "DAILY"
/ "WEEKLY" / "MONTHLY" / "YEARLY"
enddate = date / date-time
byseclist = ( seconds *("," seconds) )
seconds = 1*2DIGIT ;0 to 60
byminlist = ( minutes *("," minutes) )
minutes = 1*2DIGIT ;0 to 59
byhrlist = ( hour *("," hour) )
hour = 1*2DIGIT ;0 to 23
bywdaylist = ( weekdaynum *("," weekdaynum) )
weekdaynum = [[plus / minus] ordwk] weekday
plus = "+"
minus = "-"
ordwk = 1*2DIGIT ;1 to 53
weekday = "SU" / "MO" / "TU" / "WE" / "TH" / "FR" / "SA" ;Corresponding to SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, and SATURDAY days of the week.
bymodaylist = ( monthdaynum *("," monthdaynum) )
monthdaynum = [plus / minus] ordmoday
ordmoday = 1*2DIGIT ;1 to 31
byyrdaylist = ( yeardaynum *("," yeardaynum) )
yeardaynum = [plus / minus] ordyrday
ordyrday = 1*3DIGIT ;1 to 366
bywknolist = ( weeknum *("," weeknum) )
weeknum = [plus / minus] ordwk
bymolist = ( monthnum *("," monthnum) )
monthnum = 1*2DIGIT ;1 to 12
bysplist = ( setposday *("," setposday) )
setposday = yeardaynum
The following samples show how you can check if the recurrence expression is syntactically correct:
VBA (MS Access, Excell...)
Set ICalendar1 = CreateObject("Exontrol.ICalendar.1") With ICalendar1 Debug.Print( "1.A) SyntaxError: " ) Debug.Print( .RecurPartValue("DTSTART=20151205;FREQ=DAILY;BYDAY=MO",-1) ) Debug.Print( "1.B) SyntaxErrorInfo: " ) Debug.Print( .RecurPartValue("DTSTART=20151205;FREQ=DAILY;BYDAY=MO",-2) ) Debug.Print( "2.A) SyntaxError: " ) Debug.Print( .RecurPartValue("FREQ=DAILY;BYDAY=MO",-1) ) Debug.Print( "2.B) SyntaxErrorInfo: " ) Debug.Print( .RecurPartValue("FREQ=DAILY;BYDAY=MO",-2) ) End With
VB6
Set ICalendar1 = CreateObject("Exontrol.ICalendar.1") With ICalendar1 Debug.Print( "1.A) SyntaxError: " ) Debug.Print( .RecurPartValue("DTSTART=20151205;FREQ=DAILY;BYDAY=MO",exRecurSyntaxError) ) Debug.Print( "1.B) SyntaxErrorInfo: " ) Debug.Print( .RecurPartValue("DTSTART=20151205;FREQ=DAILY;BYDAY=MO",exRecurSyntaxErrorInfo) ) Debug.Print( "2.A) SyntaxError: " ) Debug.Print( .RecurPartValue("FREQ=DAILY;BYDAY=MO",exRecurSyntaxError) ) Debug.Print( "2.B) SyntaxErrorInfo: " ) Debug.Print( .RecurPartValue("FREQ=DAILY;BYDAY=MO",exRecurSyntaxErrorInfo) ) End With
VB.NET
' Add 'exontrol.exicalendar.dll(ExICalendar.dll)' reference to your project. Exicalendar1 = New exontrol.EXICALENDARLib.exicalendar() With Exicalendar1 Debug.Print( "1.A) SyntaxError: " ) Debug.Print( .get_RecurPartValue("DTSTART=20151205;FREQ=DAILY;BYDAY=MO",exontrol.EXICALENDARLib.RecurPartEnum.exRecurSyntaxError) ) Debug.Print( "1.B) SyntaxErrorInfo: " ) Debug.Print( .get_RecurPartValue("DTSTART=20151205;FREQ=DAILY;BYDAY=MO",exontrol.EXICALENDARLib.RecurPartEnum.exRecurSyntaxErrorInfo) ) Debug.Print( "2.A) SyntaxError: " ) Debug.Print( .get_RecurPartValue("FREQ=DAILY;BYDAY=MO",exontrol.EXICALENDARLib.RecurPartEnum.exRecurSyntaxError) ) Debug.Print( "2.B) SyntaxErrorInfo: " ) Debug.Print( .get_RecurPartValue("FREQ=DAILY;BYDAY=MO",exontrol.EXICALENDARLib.RecurPartEnum.exRecurSyntaxErrorInfo) ) End With
VB.NET for /COM
AxICalendar1 = CreateObject("Exontrol.ICalendar.1") With AxICalendar1 Debug.Print( "1.A) SyntaxError: " ) Debug.Print( .get_RecurPartValue("DTSTART=20151205;FREQ=DAILY;BYDAY=MO",EXICALENDARLib.RecurPartEnum.exRecurSyntaxError) ) Debug.Print( "1.B) SyntaxErrorInfo: " ) Debug.Print( .get_RecurPartValue("DTSTART=20151205;FREQ=DAILY;BYDAY=MO",EXICALENDARLib.RecurPartEnum.exRecurSyntaxErrorInfo) ) Debug.Print( "2.A) SyntaxError: " ) Debug.Print( .get_RecurPartValue("FREQ=DAILY;BYDAY=MO",EXICALENDARLib.RecurPartEnum.exRecurSyntaxError) ) Debug.Print( "2.B) SyntaxErrorInfo: " ) Debug.Print( .get_RecurPartValue("FREQ=DAILY;BYDAY=MO",EXICALENDARLib.RecurPartEnum.exRecurSyntaxErrorInfo) ) End With
C++
/*
Includes the definition for CreateObject function like follows:
#include <comdef.h>
IUnknownPtr CreateObject( BSTR Object )
{
IUnknownPtr spResult;
spResult.CreateInstance( Object );
return spResult;
};
*/
/*
Copy and paste the following directives to your header file as
it defines the namespace 'EXICALENDARLib' for the library: 'ICalendar 1.0 Type Library'
#import <ExICalendar.dll>
using namespace EXICALENDARLib;
*/
EXICALENDARLib::IICalendarPtr spICalendar1 = ::CreateObject(L"Exontrol.ICalendar.1");
OutputDebugStringW( L"1.A) SyntaxError: " );
OutputDebugStringW( _bstr_t(spICalendar1->GetRecurPartValue(L"DTSTART=20151205;FREQ=DAILY;BYDAY=MO",EXICALENDARLib::exRecurSyntaxError)) );
OutputDebugStringW( L"1.B) SyntaxErrorInfo: " );
OutputDebugStringW( _bstr_t(spICalendar1->GetRecurPartValue(L"DTSTART=20151205;FREQ=DAILY;BYDAY=MO",EXICALENDARLib::exRecurSyntaxErrorInfo)) );
OutputDebugStringW( L"2.A) SyntaxError: " );
OutputDebugStringW( _bstr_t(spICalendar1->GetRecurPartValue(L"FREQ=DAILY;BYDAY=MO",EXICALENDARLib::exRecurSyntaxError)) );
OutputDebugStringW( L"2.B) SyntaxErrorInfo: " );
OutputDebugStringW( _bstr_t(spICalendar1->GetRecurPartValue(L"FREQ=DAILY;BYDAY=MO",EXICALENDARLib::exRecurSyntaxErrorInfo)) );
C++ Builder
Exicalendarlib_tlb::IICalendarPtr ICalendar1 = Variant::CreateObject(L"Exontrol.ICalendar.1"); OutputDebugString( L"1.A) SyntaxError: " ); OutputDebugString( PChar(ICalendar1->RecurPartValue[L"DTSTART=20151205;FREQ=DAILY;BYDAY=MO",Exicalendarlib_tlb::RecurPartEnum::exRecurSyntaxError]) ); OutputDebugString( L"1.B) SyntaxErrorInfo: " ); OutputDebugString( PChar(ICalendar1->RecurPartValue[L"DTSTART=20151205;FREQ=DAILY;BYDAY=MO",Exicalendarlib_tlb::RecurPartEnum::exRecurSyntaxErrorInfo]) ); OutputDebugString( L"2.A) SyntaxError: " ); OutputDebugString( PChar(ICalendar1->RecurPartValue[L"FREQ=DAILY;BYDAY=MO",Exicalendarlib_tlb::RecurPartEnum::exRecurSyntaxError]) ); OutputDebugString( L"2.B) SyntaxErrorInfo: " ); OutputDebugString( PChar(ICalendar1->RecurPartValue[L"FREQ=DAILY;BYDAY=MO",Exicalendarlib_tlb::RecurPartEnum::exRecurSyntaxErrorInfo]) );
C#
// Add 'exontrol.exicalendar.dll(ExICalendar.dll)' reference to your project. exontrol.EXICALENDARLib.exicalendar exicalendar1 = new exontrol.EXICALENDARLib.exicalendar(); System.Diagnostics.Debug.Print( "1.A) SyntaxError: " ); System.Diagnostics.Debug.Print( exicalendar1.get_RecurPartValue("DTSTART=20151205;FREQ=DAILY;BYDAY=MO",exontrol.EXICALENDARLib.RecurPartEnum.exRecurSyntaxError).ToString() ); System.Diagnostics.Debug.Print( "1.B) SyntaxErrorInfo: " ); System.Diagnostics.Debug.Print( exicalendar1.get_RecurPartValue("DTSTART=20151205;FREQ=DAILY;BYDAY=MO",exontrol.EXICALENDARLib.RecurPartEnum.exRecurSyntaxErrorInfo).ToString() ); System.Diagnostics.Debug.Print( "2.A) SyntaxError: " ); System.Diagnostics.Debug.Print( exicalendar1.get_RecurPartValue("FREQ=DAILY;BYDAY=MO",exontrol.EXICALENDARLib.RecurPartEnum.exRecurSyntaxError).ToString() ); System.Diagnostics.Debug.Print( "2.B) SyntaxErrorInfo: " ); System.Diagnostics.Debug.Print( exicalendar1.get_RecurPartValue("FREQ=DAILY;BYDAY=MO",exontrol.EXICALENDARLib.RecurPartEnum.exRecurSyntaxErrorInfo).ToString() );
JScript/JavaScript
<BODY onload="Init()">
<OBJECT CLASSID="clsid:D6C87100-38E2-4ABB-8AC2-4C0097AEE2D6" id="ICalendar1"></OBJECT>
<SCRIPT LANGUAGE="JScript">
function Init()
{
alert( "1.A) SyntaxError: " );
alert( ICalendar1.RecurPartValue("DTSTART=20151205;FREQ=DAILY;BYDAY=MO",-1) );
alert( "1.B) SyntaxErrorInfo: " );
alert( ICalendar1.RecurPartValue("DTSTART=20151205;FREQ=DAILY;BYDAY=MO",-2) );
alert( "2.A) SyntaxError: " );
alert( ICalendar1.RecurPartValue("FREQ=DAILY;BYDAY=MO",-1) );
alert( "2.B) SyntaxErrorInfo: " );
alert( ICalendar1.RecurPartValue("FREQ=DAILY;BYDAY=MO",-2) );
}
</SCRIPT>
</BODY>
VBScript
<BODY onload="Init()"> <OBJECT CLASSID="clsid:D6C87100-38E2-4ABB-8AC2-4C0097AEE2D6" id="ICalendar1"></OBJECT> <SCRIPT LANGUAGE="VBScript"> Function Init() With ICalendar1 alert( "1.A) SyntaxError: " ) alert( .RecurPartValue("DTSTART=20151205;FREQ=DAILY;BYDAY=MO",-1) ) alert( "1.B) SyntaxErrorInfo: " ) alert( .RecurPartValue("DTSTART=20151205;FREQ=DAILY;BYDAY=MO",-2) ) alert( "2.A) SyntaxError: " ) alert( .RecurPartValue("FREQ=DAILY;BYDAY=MO",-1) ) alert( "2.B) SyntaxErrorInfo: " ) alert( .RecurPartValue("FREQ=DAILY;BYDAY=MO",-2) ) End With End Function </SCRIPT> </BODY>
C# for /COM
EXICALENDARLib.ICalendar axICalendar1 = new EXICALENDARLib.ICalendar(); System.Diagnostics.Debug.Print( "1.A) SyntaxError: " ); System.Diagnostics.Debug.Print( axICalendar1.get_RecurPartValue("DTSTART=20151205;FREQ=DAILY;BYDAY=MO",EXICALENDARLib.RecurPartEnum.exRecurSyntaxError).ToString() ); System.Diagnostics.Debug.Print( "1.B) SyntaxErrorInfo: " ); System.Diagnostics.Debug.Print( axICalendar1.get_RecurPartValue("DTSTART=20151205;FREQ=DAILY;BYDAY=MO",EXICALENDARLib.RecurPartEnum.exRecurSyntaxErrorInfo).ToString() ); System.Diagnostics.Debug.Print( "2.A) SyntaxError: " ); System.Diagnostics.Debug.Print( axICalendar1.get_RecurPartValue("FREQ=DAILY;BYDAY=MO",EXICALENDARLib.RecurPartEnum.exRecurSyntaxError).ToString() ); System.Diagnostics.Debug.Print( "2.B) SyntaxErrorInfo: " ); System.Diagnostics.Debug.Print( axICalendar1.get_RecurPartValue("FREQ=DAILY;BYDAY=MO",EXICALENDARLib.RecurPartEnum.exRecurSyntaxErrorInfo).ToString() );
X++ (Dynamics Ax 2009)
public void init()
{
COM com_exicalendar1;
anytype exicalendar1;
;
super();
// Add 'exicalendar.dll(ExICalendar.dll)' reference to your project.
exicalendar1 = COM::createFromObject(new EXICALENDARLib.exicalendar()); com_exicalendar1 = exicalendar1;
print( "1.A) SyntaxError: " );
print( com_exicalendar1.RecurPartValue("DTSTART=20151205;FREQ=DAILY;BYDAY=MO",-1/*exRecurSyntaxError*/) );
print( "1.B) SyntaxErrorInfo: " );
print( com_exicalendar1.RecurPartValue("DTSTART=20151205;FREQ=DAILY;BYDAY=MO",-2/*exRecurSyntaxErrorInfo*/) );
print( "2.A) SyntaxError: " );
print( com_exicalendar1.RecurPartValue("FREQ=DAILY;BYDAY=MO",-1/*exRecurSyntaxError*/) );
print( "2.B) SyntaxErrorInfo: " );
print( com_exicalendar1.RecurPartValue("FREQ=DAILY;BYDAY=MO",-2/*exRecurSyntaxErrorInfo*/) );
}
Delphi 8 (.NET only)
AxICalendar1 := (ComObj.CreateComObject(ComObj.ProgIDToClassID('Exontrol.ICalendar.1')) as EXICALENDARLib.ICalendar);
with AxICalendar1 do
begin
OutputDebugString( '1.A) SyntaxError: ' );
OutputDebugString( get_RecurPartValue('DTSTART=20151205;FREQ=DAILY;BYDAY=MO',EXICALENDARLib.RecurPartEnum.exRecurSyntaxError) );
OutputDebugString( '1.B) SyntaxErrorInfo: ' );
OutputDebugString( get_RecurPartValue('DTSTART=20151205;FREQ=DAILY;BYDAY=MO',EXICALENDARLib.RecurPartEnum.exRecurSyntaxErrorInfo) );
OutputDebugString( '2.A) SyntaxError: ' );
OutputDebugString( get_RecurPartValue('FREQ=DAILY;BYDAY=MO',EXICALENDARLib.RecurPartEnum.exRecurSyntaxError) );
OutputDebugString( '2.B) SyntaxErrorInfo: ' );
OutputDebugString( get_RecurPartValue('FREQ=DAILY;BYDAY=MO',EXICALENDARLib.RecurPartEnum.exRecurSyntaxErrorInfo) );
end
Delphi (standard)
ICalendar1 := (IUnknown(ComObj.CreateComObject(ComObj.ProgIDToClassID('Exontrol.ICalendar.1'))) as EXICALENDARLib_TLB.ICalendar);
with ICalendar1 do
begin
OutputDebugString( '1.A) SyntaxError: ' );
OutputDebugString( RecurPartValue['DTSTART=20151205;FREQ=DAILY;BYDAY=MO',EXICALENDARLib_TLB.exRecurSyntaxError] );
OutputDebugString( '1.B) SyntaxErrorInfo: ' );
OutputDebugString( RecurPartValue['DTSTART=20151205;FREQ=DAILY;BYDAY=MO',EXICALENDARLib_TLB.exRecurSyntaxErrorInfo] );
OutputDebugString( '2.A) SyntaxError: ' );
OutputDebugString( RecurPartValue['FREQ=DAILY;BYDAY=MO',EXICALENDARLib_TLB.exRecurSyntaxError] );
OutputDebugString( '2.B) SyntaxErrorInfo: ' );
OutputDebugString( RecurPartValue['FREQ=DAILY;BYDAY=MO',EXICALENDARLib_TLB.exRecurSyntaxErrorInfo] );
end
VFP
thisform.ICalendar1 = CreateObject("Exontrol.ICalendar.1") with thisform.ICalendar1 DEBUGOUT( "1.A) SyntaxError: " ) DEBUGOUT( .RecurPartValue("DTSTART=20151205;FREQ=DAILY;BYDAY=MO",-1) ) DEBUGOUT( "1.B) SyntaxErrorInfo: " ) DEBUGOUT( .RecurPartValue("DTSTART=20151205;FREQ=DAILY;BYDAY=MO",-2) ) DEBUGOUT( "2.A) SyntaxError: " ) DEBUGOUT( .RecurPartValue("FREQ=DAILY;BYDAY=MO",-1) ) DEBUGOUT( "2.B) SyntaxErrorInfo: " ) DEBUGOUT( .RecurPartValue("FREQ=DAILY;BYDAY=MO",-2) ) endwith
dBASE Plus
local oICalendar
oICalendar = new OleAutoClient("Exontrol.ICalendar.1")
? "1.A) SyntaxError: "
? Str(oICalendar.RecurPartValue("DTSTART=20151205;FREQ=DAILY;BYDAY=MO",-1))
? "1.B) SyntaxErrorInfo: "
? Str(oICalendar.RecurPartValue("DTSTART=20151205;FREQ=DAILY;BYDAY=MO",-2))
? "2.A) SyntaxError: "
? Str(oICalendar.RecurPartValue("FREQ=DAILY;BYDAY=MO",-1))
? "2.B) SyntaxErrorInfo: "
? Str(oICalendar.RecurPartValue("FREQ=DAILY;BYDAY=MO",-2))
XBasic (Alpha Five)
Dim oICalendar as P oICalendar = OLE.Create("Exontrol.ICalendar.1") ? "1.A) SyntaxError: " ? oICalendar.RecurPartValue("DTSTART=20151205;FREQ=DAILY;BYDAY=MO",-1) ? "1.B) SyntaxErrorInfo: " ? oICalendar.RecurPartValue("DTSTART=20151205;FREQ=DAILY;BYDAY=MO",-2) ? "2.A) SyntaxError: " ? oICalendar.RecurPartValue("FREQ=DAILY;BYDAY=MO",-1) ? "2.B) SyntaxErrorInfo: " ? oICalendar.RecurPartValue("FREQ=DAILY;BYDAY=MO",-2)
Visual Objects
oDCOCX_Exontrol1 := IICalendar{"Exontrol.ICalendar.1"}
OutputDebugString(String2Psz( "1.A) SyntaxError: " ))
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[RecurPartValue,"DTSTART=20151205;FREQ=DAILY;BYDAY=MO",exRecurSyntaxError]) ))
OutputDebugString(String2Psz( "1.B) SyntaxErrorInfo: " ))
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[RecurPartValue,"DTSTART=20151205;FREQ=DAILY;BYDAY=MO",exRecurSyntaxErrorInfo]) ))
OutputDebugString(String2Psz( "2.A) SyntaxError: " ))
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[RecurPartValue,"FREQ=DAILY;BYDAY=MO",exRecurSyntaxError]) ))
OutputDebugString(String2Psz( "2.B) SyntaxErrorInfo: " ))
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[RecurPartValue,"FREQ=DAILY;BYDAY=MO",exRecurSyntaxErrorInfo]) ))
PowerBuilder
OleObject oICalendar
oICalendar = CREATE OLEObject
oICalendar.ConnectToNewObject("Exontrol.ICalendar.1")
MessageBox("Information",string( "1.A) SyntaxError: " ))
MessageBox("Information",string( String(oICalendar.RecurPartValue("DTSTART=20151205;FREQ=DAILY;BYDAY=MO",-1)) ))
MessageBox("Information",string( "1.B) SyntaxErrorInfo: " ))
MessageBox("Information",string( String(oICalendar.RecurPartValue("DTSTART=20151205;FREQ=DAILY;BYDAY=MO",-2)) ))
MessageBox("Information",string( "2.A) SyntaxError: " ))
MessageBox("Information",string( String(oICalendar.RecurPartValue("FREQ=DAILY;BYDAY=MO",-1)) ))
MessageBox("Information",string( "2.B) SyntaxErrorInfo: " ))
MessageBox("Information",string( String(oICalendar.RecurPartValue("FREQ=DAILY;BYDAY=MO",-2)) ))
Visual DataFlex
Procedure OnCreate Forward Send OnCreate Variant oComICalendar1 Get ComCreateObject "Exontrol.ICalendar.1" to oComICalendar1 Showln "1.A) SyntaxError: " (ComRecurPartValue(Self,"DTSTART=20151205;FREQ=DAILY;BYDAY=MO",OLEexRecurSyntaxError)) Showln "1.B) SyntaxErrorInfo: " (ComRecurPartValue(Self,"DTSTART=20151205;FREQ=DAILY;BYDAY=MO",OLEexRecurSyntaxErrorInfo)) Showln "2.A) SyntaxError: " (ComRecurPartValue(Self,"FREQ=DAILY;BYDAY=MO",OLEexRecurSyntaxError)) Showln "2.B) SyntaxErrorInfo: " (ComRecurPartValue(Self,"FREQ=DAILY;BYDAY=MO",OLEexRecurSyntaxErrorInfo)) End_Procedure
XBase++
#include "AppEvent.ch"
#include "ActiveX.ch"
PROCEDURE Main
LOCAL oForm
LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
LOCAL oICalendar
oForm := XbpDialog():new( AppDesktop() )
oForm:drawingArea:clipChildren := .T.
oForm:create( ,,{100,100}, {640,480},, .F. )
oForm:close := {|| PostAppEvent( xbeP_Quit )}
oICalendar := XbpActiveXControl():new( oForm:drawingArea )
oICalendar:CLSID := "Exontrol.ICalendar.1" /*{D6C87100-38E2-4ABB-8AC2-4C0097AEE2D6}*/
oICalendar:create(,, {10,60},{610,370} )
DevOut( "1.A) SyntaxError: " )
DevOut( Transform(oICalendar:RecurPartValue("DTSTART=20151205;FREQ=DAILY;BYDAY=MO",-1/*exRecurSyntaxError*/),"") )
DevOut( "1.B) SyntaxErrorInfo: " )
DevOut( Transform(oICalendar:RecurPartValue("DTSTART=20151205;FREQ=DAILY;BYDAY=MO",-2/*exRecurSyntaxErrorInfo*/),"") )
DevOut( "2.A) SyntaxError: " )
DevOut( Transform(oICalendar:RecurPartValue("FREQ=DAILY;BYDAY=MO",-1/*exRecurSyntaxError*/),"") )
DevOut( "2.B) SyntaxErrorInfo: " )
DevOut( Transform(oICalendar:RecurPartValue("FREQ=DAILY;BYDAY=MO",-2/*exRecurSyntaxErrorInfo*/),"") )
oForm:Show()
DO WHILE nEvent != xbeP_Quit
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN