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