69
How do I encode data as ICalendar format

icalendar = CreateObject("Exontrol.ICalendar.1");
OBJECT component,icalendar;

icalendar = CreateObject("Exontrol.ICalendar.1");

icalendar =  ObjectByName("AN1") ;
component = _ObjectGetProperty( icalendar , "Content");
	component = _ObjectCallMethod( _ObjectGetProperty( component , "Components") , "Add", "VCALENDAR");
		_ObjectCallMethod( _ObjectGetProperty( _ObjectCallMethod( _ObjectGetProperty( component , "Properties") , "Add", "VERSION","2.1") , "Parameters") , "Add", "UNICODE",_ObjectCallMethod(icalendar, "ExecuteTemplate", ".toICalendar(True,2)"));
		_ObjectCallMethod( _ObjectGetProperty( component , "Properties") , "Add", "TEXT","This is just a bit of text to be encoded.");
		_ObjectCallMethod( _ObjectGetProperty( component , "Properties") , "Add", "BINARY",_ObjectCallMethod(icalendar, "ExecuteTemplate", ".toICalendar(`This is just a bit of text to be encoded.`,1)"));
		component = _ObjectCallMethod( _ObjectGetProperty( component , "Components") , "Add", "VEVENT");
			_ObjectCallMethod( _ObjectGetProperty( component , "Properties") , "Add", "DTSTART","1/1/2001");
			_ObjectCallMethod( _ObjectGetProperty( component , "Properties") , "Add", "DTEND","1/2/2001 10:00:00 AM");
Message( _ObjectCallMethod( icalendar , "Save") );

68
How do I get the occurrences between giving start/end margins

icalendar = CreateObject("Exontrol.ICalendar.1");
OBJECT icalendar;

icalendar = CreateObject("Exontrol.ICalendar.1");

icalendar =  ObjectByName("AN1") ;
Message( "AsArray: " );
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "RecurRange(`DTSTART=19970310;FREQ=YEARLY;INTERVAL=2;COUNT=10;BYMONTH=1,2,3`,#1/1/2001#,#1/1/2002#)") );
Message( "AsString: " );
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "RecurRangeAsString(`DTSTART=19970310;FREQ=YEARLY;INTERVAL=2;COUNT=10;BYMONTH=1,2,3`,#1/1/2001#,#1/1/2002#)") );

67
How do I get the value of specified part in the recurrence expression

icalendar = CreateObject("Exontrol.ICalendar.1");
OBJECT icalendar;

icalendar = CreateObject("Exontrol.ICalendar.1");

icalendar =  ObjectByName("AN1") ;
Message( "FREQ: " );
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "RecurPartValue(`DTSTART=19970805T090000;FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU`,0)") );
Message( "DTSTART: " );
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "RecurPartValue(`DTSTART=19970805T090000;FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU`,1)") );
Message( "UNTIL: " );
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "RecurPartValue(`DTSTART=19970805T090000;FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU`,2)") );
Message( "COUNT: " );
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "RecurPartValue(`DTSTART=19970805T090000;FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU`,3)") );
Message( "INTERVAL: " );
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "RecurPartValue(`DTSTART=19970805T090000;FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU`,4)") );
Message( "WKST: " );
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "RecurPartValue(`DTSTART=19970805T090000;FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU`,14)") );
Message( "BYDAY: " );
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "RecurPartValue(`DTSTART=19970805T090000;FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU`,8)") );
Message( "BYMONTHDAY: " );
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "RecurPartValue(`DTSTART=19970805T090000;FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU`,9)") );
Message( "BYYEARDAY: " );
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "RecurPartValue(`DTSTART=19970805T090000;FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU`,10)") );
Message( "BYWEEKNO: " );
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "RecurPartValue(`DTSTART=19970805T090000;FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU`,11)") );
Message( "BYMONTH: " );
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "RecurPartValue(`DTSTART=19970805T090000;FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU`,12)") );
Message( "BYSETPOS: " );
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "RecurPartValue(`DTSTART=19970805T090000;FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU`,13)") );
Message( "BYHOUR: " );
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "RecurPartValue(`DTSTART=19970805T090000;FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU`,7)") );
Message( "BYMINUTE: " );
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "RecurPartValue(`DTSTART=19970805T090000;FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU`,6)") );
Message( "BYSECOND: " );
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "RecurPartValue(`DTSTART=19970805T090000;FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU`,5)") );

66
How do I check if the recurrence expression is syntactically correct (method 2)

icalendar = CreateObject("Exontrol.ICalendar.1");
OBJECT icalendar;

icalendar = CreateObject("Exontrol.ICalendar.1");

icalendar =  ObjectByName("AN1") ;
Message( "1.A) SyntaxError: " );
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "RecurPartValue(`DTSTART=20151205;FREQ=DAILY;BYDAY=MO`,-1)") );
Message( "1.B) SyntaxErrorInfo: " );
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "RecurPartValue(`DTSTART=20151205;FREQ=DAILY;BYDAY=MO`,-2)") );
Message( "2.A) SyntaxError: " );
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "RecurPartValue(`FREQ=DAILY;BYDAY=MO`,-1)") );
Message( "2.B) SyntaxErrorInfo: " );
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "RecurPartValue(`FREQ=DAILY;BYDAY=MO`,-2)") );

65
How do I check if the recurrence expression is syntactically correct (method 1)

icalendar = CreateObject("Exontrol.ICalendar.1");
OBJECT icalendar;

icalendar = CreateObject("Exontrol.ICalendar.1");

icalendar =  ObjectByName("AN1") ;
Message( "1. If negative, the expression is incorrect" );
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "RecurCheck(`DTSTART=20151205;FREQ=DAILY;BYDAY=MO`,#12/5/2015#)") );
Message( "2. If negative, the expression is incorrect" );
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "RecurCheck(`junk`,#1/1/2001#)") );

64
How do I check if a specified date match the giving recurrence

icalendar = CreateObject("Exontrol.ICalendar.1");
OBJECT icalendar;

icalendar = CreateObject("Exontrol.ICalendar.1");

icalendar =  ObjectByName("AN1") ;
Message( "12/5/2015" );
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "RecurCheck(`DTSTART=20151205;FREQ=DAILY;BYDAY=MO`,#12/5/2015#)") );
Message( "12/7/2015" );
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "RecurCheck(`DTSTART=20151205;FREQ=DAILY;BYDAY=MO`,#12/7/2015#)") );

63
Recur: The 2nd to last weekday of the month

icalendar = CreateObject("Exontrol.ICalendar.1");
OBJECT icalendar;

icalendar = CreateObject("Exontrol.ICalendar.1");

icalendar =  ObjectByName("AN1") ;
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "RecurAllAsString(`DTSTART=19970929;FREQ=MONTHLY;BYDAY=MO,TU,WE,TH,FR;BYSETPOS=-2`,12)") );

62
Recur: The 3rd instance into the month of one of Tuesday, Wednesday or Thursday, for the next 3 months

icalendar = CreateObject("Exontrol.ICalendar.1");
OBJECT icalendar;

icalendar = CreateObject("Exontrol.ICalendar.1");

icalendar =  ObjectByName("AN1") ;
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "RecurAllAsString(`DTSTART=19970904;FREQ=MONTHLY;COUNT=3;BYDAY=TU,WE,TH;BYSETPOS=3`,12)") );

61
Recur: The last work day of the month

icalendar = CreateObject("Exontrol.ICalendar.1");
OBJECT icalendar;

icalendar = CreateObject("Exontrol.ICalendar.1");

icalendar =  ObjectByName("AN1") ;
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "RecurAllAsString(`DTSTART=19970805;FREQ=MONTHLY;BYDAY=MO,TU,WE,TH,FR;BYSETPOS=-1`,12)") );

60
Recur: An example where the days generated makes a difference because of WKST (Sample 2)

icalendar = CreateObject("Exontrol.ICalendar.1");
OBJECT icalendar;

icalendar = CreateObject("Exontrol.ICalendar.1");

icalendar =  ObjectByName("AN1") ;
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "RecurAllAsString(`DTSTART=19970805T090000;FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU`,12)") );

59
Recur: An example where the days generated makes a difference because of WKST (Sample 1)

icalendar = CreateObject("Exontrol.ICalendar.1");
OBJECT icalendar;

icalendar = CreateObject("Exontrol.ICalendar.1");

icalendar =  ObjectByName("AN1") ;
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "RecurAllAsString(`DTSTART=19970805T090000;FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=MO`,12)") );

58
Recur: Every 20 minutes from 9:00 AM to 4:40 PM every day

icalendar = CreateObject("Exontrol.ICalendar.1");
OBJECT icalendar;

icalendar = CreateObject("Exontrol.ICalendar.1");

icalendar =  ObjectByName("AN1") ;
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "RecurAllAsString(`DTSTART=19970902T090000;FREQ=DAILY;BYHOUR=9,10,11,12,13,14,15,16;BYMINUTE=0,20,40`,12)") );

57
Recur: Every hour and a half for 4 occurrences

icalendar = CreateObject("Exontrol.ICalendar.1");
OBJECT icalendar;

icalendar = CreateObject("Exontrol.ICalendar.1");

icalendar =  ObjectByName("AN1") ;
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "RecurAllAsString(`DTSTART=19970902T090000;FREQ=MINUTELY;INTERVAL=90;COUNT=4`,12)") );

56
Recur: Every 15 minutes for 6 occurrences

icalendar = CreateObject("Exontrol.ICalendar.1");
OBJECT icalendar;

icalendar = CreateObject("Exontrol.ICalendar.1");

icalendar =  ObjectByName("AN1") ;
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "RecurAllAsString(`DTSTART=19970902T090000;FREQ=MINUTELY;INTERVAL=15;COUNT=6`,12)") );

55
Recur: Every 3 hours from 9:00 AM to 5:00 PM on a specific day

icalendar = CreateObject("Exontrol.ICalendar.1");
OBJECT icalendar;

icalendar = CreateObject("Exontrol.ICalendar.1");

icalendar =  ObjectByName("AN1") ;
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "RecurAllAsString(`DTSTART=19970902T090000;FREQ=HOURLY;INTERVAL=3;UNTIL=19970902T170000Z`,12)") );

54
Recur: Every four years, the first Tuesday after a Monday in November, forever (U.S. Presidential Election day)

icalendar = CreateObject("Exontrol.ICalendar.1");
OBJECT icalendar;

icalendar = CreateObject("Exontrol.ICalendar.1");

icalendar =  ObjectByName("AN1") ;
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "RecurAllAsString(`DTSTART=19961105T090000;FREQ=YEARLY;INTERVAL=4;BYMONTH=11;BYDAY=TU;BYMONTHDAY=2,3,4,5,6,7,8`,12)") );

53
Recur: The first Saturday that follows the first Sunday of the month, forever

icalendar = CreateObject("Exontrol.ICalendar.1");
OBJECT icalendar;

icalendar = CreateObject("Exontrol.ICalendar.1");

icalendar =  ObjectByName("AN1") ;
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "RecurAllAsString(`DTSTART=19970913T090000;FREQ=MONTHLY;BYDAY=SA;BYMONTHDAY=7,8,9,10,11,12,13`,12)") );

52
Recur: Every Friday the 13th, forever

icalendar = CreateObject("Exontrol.ICalendar.1");
OBJECT icalendar;

icalendar = CreateObject("Exontrol.ICalendar.1");

icalendar =  ObjectByName("AN1") ;
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "RecurAllAsString(`DTSTART=19970902T090000;FREQ=MONTHLY;BYDAY=FR;BYMONTHDAY=13`,12)") );

51
Recur: Every Thursday, but only during June, July, and August, forever

icalendar = CreateObject("Exontrol.ICalendar.1");
OBJECT icalendar;

icalendar = CreateObject("Exontrol.ICalendar.1");

icalendar =  ObjectByName("AN1") ;
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "RecurAllAsString(`DTSTART=19970605T090000;FREQ=YEARLY;BYDAY=TH;BYMONTH=6,7,8`,12)") );

50
Recur: Every Thursday in March, forever

icalendar = CreateObject("Exontrol.ICalendar.1");
OBJECT icalendar;

icalendar = CreateObject("Exontrol.ICalendar.1");

icalendar =  ObjectByName("AN1") ;
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "RecurAllAsString(`DTSTART=19970313T090000;FREQ=YEARLY;BYMONTH=3;BYDAY=TH`,12)") );

49
Recur: Monday of week number 20 (where the default start of the week is Monday), forever

icalendar = CreateObject("Exontrol.ICalendar.1");
OBJECT icalendar;

icalendar = CreateObject("Exontrol.ICalendar.1");

icalendar =  ObjectByName("AN1") ;
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "RecurAllAsString(`DTSTART=19970512T090000;FREQ=YEARLY;BYWEEKNO=20;BYDAY=MO`,12)") );

48
Recur: Every 20th Monday of the year, forever

icalendar = CreateObject("Exontrol.ICalendar.1");
OBJECT icalendar;

icalendar = CreateObject("Exontrol.ICalendar.1");

icalendar =  ObjectByName("AN1") ;
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "RecurAllAsString(`DTSTART=19970101T090000;FREQ=YEARLY;BYDAY=20MO`,12)") );

47
Recur: Every 3rd year on the 1st, 100th and 200th day for 10 occurrences

icalendar = CreateObject("Exontrol.ICalendar.1");
OBJECT icalendar;

icalendar = CreateObject("Exontrol.ICalendar.1");

icalendar =  ObjectByName("AN1") ;
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "RecurAllAsString(`DTSTART=19970101T090000;FREQ=YEARLY;INTERVAL=3;COUNT=10;BYYEARDAY=1,100,200`,12)") );

46
Recur: Every other year on January, February, and March for 10 occurrences

icalendar = CreateObject("Exontrol.ICalendar.1");
OBJECT icalendar;

icalendar = CreateObject("Exontrol.ICalendar.1");

icalendar =  ObjectByName("AN1") ;
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "RecurAllAsString(`DTSTART=19970310T090000;FREQ=YEARLY;INTERVAL=2;COUNT=10;BYMONTH=1,2,3`,12)") );

45
Recur: Yearly in June and July for 10 occurrences

icalendar = CreateObject("Exontrol.ICalendar.1");
OBJECT icalendar;

icalendar = CreateObject("Exontrol.ICalendar.1");

icalendar =  ObjectByName("AN1") ;
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "RecurAllAsString(`DTSTART=19970610T090000;FREQ=YEARLY;COUNT=10;BYMONTH=6,7`,12)") );

44
Recur: Every Tuesday, every other month

icalendar = CreateObject("Exontrol.ICalendar.1");
OBJECT icalendar;

icalendar = CreateObject("Exontrol.ICalendar.1");

icalendar =  ObjectByName("AN1") ;
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "RecurAllAsString(`DTSTART=19970902T090000;FREQ=MONTHLY;INTERVAL=2;BYDAY=TU`,12)") );

43
Recur: Every 18 months on the 10th thru 15th of the month for 10 occurrences

icalendar = CreateObject("Exontrol.ICalendar.1");
OBJECT icalendar;

icalendar = CreateObject("Exontrol.ICalendar.1");

icalendar =  ObjectByName("AN1") ;
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "RecurAllAsString(`DTSTART=19970910T090000;FREQ=MONTHLY;INTERVAL=18;COUNT=10;BYMONTHDAY=10,11,12,13,14,15`,12)") );

42
Recur: Monthly on the first and last day of the month for 10 occurrences

icalendar = CreateObject("Exontrol.ICalendar.1");
OBJECT icalendar;

icalendar = CreateObject("Exontrol.ICalendar.1");

icalendar =  ObjectByName("AN1") ;
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "RecurAllAsString(`DTSTART=19970930T090000;FREQ=MONTHLY;COUNT=10;BYMONTHDAY=1,-1`,12)") );

41
Recur: Monthly on the 2nd and 15th of the month for 10 occurrences

icalendar = CreateObject("Exontrol.ICalendar.1");
OBJECT icalendar;

icalendar = CreateObject("Exontrol.ICalendar.1");

icalendar =  ObjectByName("AN1") ;
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "RecurAllAsString(`DTSTART=19970902T090000;FREQ=MONTHLY;COUNT=10;BYMONTHDAY=2,15`,12)") );

40
Recur: Monthly on the third to the last day of the month, forever

icalendar = CreateObject("Exontrol.ICalendar.1");
OBJECT icalendar;

icalendar = CreateObject("Exontrol.ICalendar.1");

icalendar =  ObjectByName("AN1") ;
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "RecurAllAsString(`DTSTART=19970928T090000;FREQ=MONTHLY;BYMONTHDAY=-3`,12)") );

39
Recur: Monthly on the second to last Monday of the month for 6 months

icalendar = CreateObject("Exontrol.ICalendar.1");
OBJECT icalendar;

icalendar = CreateObject("Exontrol.ICalendar.1");

icalendar =  ObjectByName("AN1") ;
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "RecurAllAsString(`DTSTART=19970922T090000;FREQ=MONTHLY;COUNT=6;BYDAY=-2MO`,12)") );

38
Recur: Every other month on the 1st and last Sunday of the month for 10 occurrences

icalendar = CreateObject("Exontrol.ICalendar.1");
OBJECT icalendar;

icalendar = CreateObject("Exontrol.ICalendar.1");

icalendar =  ObjectByName("AN1") ;
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "RecurAllAsString(`DTSTART=19970907T090000;FREQ=MONTHLY;INTERVAL=2;COUNT=10;BYDAY=1SU,-1SU`,12)") );

37
Recur: Monthly on the 1st Friday until December 24, 1997

icalendar = CreateObject("Exontrol.ICalendar.1");
OBJECT icalendar;

icalendar = CreateObject("Exontrol.ICalendar.1");

icalendar =  ObjectByName("AN1") ;
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "RecurAllAsString(`DTSTART=19970905T090000;FREQ=MONTHLY;UNTIL=19971224T000000Z;BYDAY=1FR`,12)") );

36
Recur: Monthly on the 1st Friday for ten occurrences

icalendar = CreateObject("Exontrol.ICalendar.1");
OBJECT icalendar;

icalendar = CreateObject("Exontrol.ICalendar.1");

icalendar =  ObjectByName("AN1") ;
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "RecurAllAsString(`DTSTART=19970905T090000;FREQ=MONTHLY;COUNT=10;BYDAY=1FR`,12)") );

35
Recur: Every other week on Tuesday and Thursday, for 8 occurrences

icalendar = CreateObject("Exontrol.ICalendar.1");
OBJECT icalendar;

icalendar = CreateObject("Exontrol.ICalendar.1");

icalendar =  ObjectByName("AN1") ;
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "RecurAllAsString(`DTSTART=19970902T090000;FREQ=WEEKLY;INTERVAL=2;COUNT=8;WKST=SU;BYDAY=TU,TH`,12)") );

34
Recur: Every other week on Monday, Wednesday and Friday until December 24, 1997, but starting on Tuesday, September 2, 1997

icalendar = CreateObject("Exontrol.ICalendar.1");
OBJECT icalendar;

icalendar = CreateObject("Exontrol.ICalendar.1");

icalendar =  ObjectByName("AN1") ;
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "RecurAllAsString(`DTSTART=19970902T090000;FREQ=WEEKLY;INTERVAL=2;UNTIL=19971224T000000Z;WKST=SU;BYDAY=MO,WE,FR`,12)") );

33
Recur: Weekly on Tuesday and Thursday for 5 weeks

icalendar = CreateObject("Exontrol.ICalendar.1");
OBJECT icalendar;

icalendar = CreateObject("Exontrol.ICalendar.1");

icalendar =  ObjectByName("AN1") ;
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "RecurAllAsString(`DTSTART=19970902T090000;FREQ=WEEKLY;UNTIL=19971007T000000Z;WKST=SU;BYDAY=TU,TH`,12)") );

32
Recur: Weekly on Tuesday and Thursday for 5 weeks

icalendar = CreateObject("Exontrol.ICalendar.1");
OBJECT icalendar;

icalendar = CreateObject("Exontrol.ICalendar.1");

icalendar =  ObjectByName("AN1") ;
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "RecurAllAsString(`DTSTART=19970902T090000;FREQ=WEEKLY;COUNT=10;WKST=SU;BYDAY=TU,TH`,12)") );

31
Recur: Every other day - forever

icalendar = CreateObject("Exontrol.ICalendar.1");
OBJECT icalendar;

icalendar = CreateObject("Exontrol.ICalendar.1");

icalendar =  ObjectByName("AN1") ;
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "RecurAllAsString(`DTSTART=19970902T090000;FREQ=DAILY;INTERVAL=2`,12)") );

30
Recur: Daily until December 24, 1997

icalendar = CreateObject("Exontrol.ICalendar.1");
OBJECT icalendar;

icalendar = CreateObject("Exontrol.ICalendar.1");

icalendar =  ObjectByName("AN1") ;
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "RecurAllAsString(`DTSTART=19970902T090000;FREQ=DAILY;UNTIL=19971224T000000Z`,12)") );

29
Recur: Daily for 10 occurrences

icalendar = CreateObject("Exontrol.ICalendar.1");
OBJECT icalendar;

icalendar = CreateObject("Exontrol.ICalendar.1");

icalendar =  ObjectByName("AN1") ;
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "RecurAllAsString(`DTSTART=19970902T090000;FREQ=DAILY;COUNT=10`,12)") );

28
How can I add a property of UTC offset type

icalendar = CreateObject("Exontrol.ICalendar.1");
OBJECT component,icalendar;

icalendar = CreateObject("Exontrol.ICalendar.1");

icalendar =  ObjectByName("AN1") ;
component = _ObjectCallMethod( _ObjectGetProperty( _ObjectGetProperty( icalendar , "Content") , "Components") , "Add", "VCALENDAR");
	_ObjectCallMethod( _ObjectGetProperty( component , "Properties") , "Add", "UTCOffset","+0100");
Message( _ObjectCallMethod( icalendar , "Save") );

27
How can I add a property of URI type

icalendar = CreateObject("Exontrol.ICalendar.1");
OBJECT component,icalendar;

icalendar = CreateObject("Exontrol.ICalendar.1");

icalendar =  ObjectByName("AN1") ;
component = _ObjectCallMethod( _ObjectGetProperty( _ObjectGetProperty( icalendar , "Content") , "Components") , "Add", "VCALENDAR");
	_ObjectCallMethod( _ObjectGetProperty( component , "Properties") , "Add", "URI","http://www.exontrol.com");
Message( _ObjectCallMethod( icalendar , "Save") );

26
How can I add a property of time type

icalendar = CreateObject("Exontrol.ICalendar.1");
OBJECT component,icalendar,property;

icalendar = CreateObject("Exontrol.ICalendar.1");

icalendar =  ObjectByName("AN1") ;
component = _ObjectCallMethod( _ObjectGetProperty( _ObjectGetProperty( icalendar , "Content") , "Components") , "Add", "VCALENDAR");
	_ObjectCallMethod( _ObjectGetProperty( component , "Properties") , "Add", "Time1","12:00:00 PM");
	_ObjectCallMethod( _ObjectGetProperty( component , "Properties") , "Add", "Time2",_ObjectCallMethod(icalendar, "ExecuteTemplate", ".toICalendar(0.5,12)"));
	property = _ObjectCallMethod( _ObjectGetProperty( component , "Properties") , "Add", "Time3");
		_ObjectSetProperty( property , "Value", 0.5);
		_ObjectSetProperty( property , "Type", 12);
Message( _ObjectCallMethod( icalendar , "Save") );

25
How can I add a property of text/string type

icalendar = CreateObject("Exontrol.ICalendar.1");
OBJECT component,icalendar,property;

icalendar = CreateObject("Exontrol.ICalendar.1");

icalendar =  ObjectByName("AN1") ;
component = _ObjectCallMethod( _ObjectGetProperty( _ObjectGetProperty( icalendar , "Content") , "Components") , "Add", "VCALENDAR");
	_ObjectCallMethod( _ObjectGetProperty( component , "Properties") , "Add", "Text1","A1");
	_ObjectCallMethod( _ObjectGetProperty( component , "Properties") , "Add", "Text2",_ObjectCallMethod(icalendar, "ExecuteTemplate", ".toICalendar(`A1`,11)"));
	property = _ObjectCallMethod( _ObjectGetProperty( component , "Properties") , "Add", "Text3");
		_ObjectSetProperty( property , "Value", "A1");
		_ObjectSetProperty( property , "Type", 11);
Message( _ObjectCallMethod( icalendar , "Save") );

24
How can I find properties of recurence type

icalendar = CreateObject("Exontrol.ICalendar.1");
OBJECT component,icalendar;

icalendar = CreateObject("Exontrol.ICalendar.1");

icalendar =  ObjectByName("AN1") ;
component = _ObjectCallMethod( _ObjectGetProperty( _ObjectGetProperty( icalendar , "Content") , "Components") , "Add", "VCALENDAR");
	_ObjectCallMethod( _ObjectGetProperty( component , "Properties") , "Add", "Recur","FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=SA,SU");
_ObjectCallMethod(icalendar, "TemplatePut", "Dim _ObObj")
_ObjectCallMethod(icalendar, "TemplatePut", _ObjectGetProperty( icalendar , "Root"))
p = _ObjectCallMethod(icalendar, "ExecuteTemplate", "_ObObj.Properties.Item(`Recur`)");
_ObjectCallMethod(icalendar, "TemplatePut", "Dim p.GuessType,p.Value")
_ObjectCallMethod(icalendar, "TemplatePut", p.GuessType)
_ObjectCallMethod(icalendar, "TemplatePut", p.Value)
i = _ObjectCallMethod(icalendar, "ExecuteTemplate", "toICalendar(p.Value,p.GuessType)");
Message( "icalendar:" );
Message( i );
_ObjectCallMethod(icalendar, "TemplatePut", "Dim i,p.GuessType")
_ObjectCallMethod(icalendar, "TemplatePut", i)
_ObjectCallMethod(icalendar, "TemplatePut", p.GuessType)
Message( "all:" );
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "valuesFromICalendar(i,p.GuessType,``)") );
Message( "FREQ:" );
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "valuesFromICalendar(i,p.GuessType,`FREQ`)") );
Message( "UNTIL:" );
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "valuesFromICalendar(i,p.GuessType,`UNTIL`)") );
Message( "COUNT:" );
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "valuesFromICalendar(i,p.GuessType,`COUNT`)") );
Message( "INTERVAL:" );
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "valuesFromICalendar(i,p.GuessType,`INTERVAL`)") );
Message( "BYSECOND:" );
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "valuesFromICalendar(i,p.GuessType,`BYSECOND`)") );
Message( "BYMINUTE:" );
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "valuesFromICalendar(i,p.GuessType,`BYMINUTE`)") );
Message( "BYHOUR:" );
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "valuesFromICalendar(i,p.GuessType,`BYHOUR`)") );
Message( "BYDAY:" );
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "valuesFromICalendar(i,p.GuessType,`BYDAY`)") );
Message( "BYMONTHDAY:" );
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "valuesFromICalendar(i,p.GuessType,`BYMONTHDAY`)") );
Message( "BYYEARDAY:" );
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "valuesFromICalendar(i,p.GuessType,`BYYEARDAY`)") );
Message( "BYWEEKNO:" );
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "valuesFromICalendar(i,p.GuessType,`BYWEEKNO`)") );
Message( "BYMONTH:" );
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "valuesFromICalendar(i,p.GuessType,`BYMONTH`)") );
Message( "BYSETPOS:" );
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "valuesFromICalendar(i,p.GuessType,`BYSETPOS`)") );
Message( "WKST:" );
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "valuesFromICalendar(i,p.GuessType,`WKST`)") );

23
How can I add a property of recurrence type

icalendar = CreateObject("Exontrol.ICalendar.1");
OBJECT component,icalendar;

icalendar = CreateObject("Exontrol.ICalendar.1");

icalendar =  ObjectByName("AN1") ;
component = _ObjectCallMethod( _ObjectGetProperty( _ObjectGetProperty( icalendar , "Content") , "Components") , "Add", "VCALENDAR");
	_ObjectCallMethod( _ObjectGetProperty( component , "Properties") , "Add", "Recur","FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU");
Message( _ObjectCallMethod( icalendar , "Save") );

22
How can I find the duration in weeks, days, hours, minutes, seconds from a property of duration type

icalendar = CreateObject("Exontrol.ICalendar.1");
OBJECT component,icalendar;

icalendar = CreateObject("Exontrol.ICalendar.1");

icalendar =  ObjectByName("AN1") ;
component = _ObjectCallMethod( _ObjectGetProperty( _ObjectGetProperty( icalendar , "Content") , "Components") , "Add", "VCALENDAR");
	_ObjectCallMethod( _ObjectGetProperty( component , "Properties") , "Add", "Period",_ObjectCallMethod(icalendar, "ExecuteTemplate", ".valuesToICalendar(`Start=#1/1/2001#;Duration=1`,9)"));
_ObjectCallMethod(icalendar, "TemplatePut", "Dim _ObObj")
_ObjectCallMethod(icalendar, "TemplatePut", _ObjectGetProperty( icalendar , "Root"))
p = _ObjectCallMethod(icalendar, "ExecuteTemplate", "_ObObj.Properties.Item(`Period`)");
_ObjectCallMethod(icalendar, "TemplatePut", "Dim p.GuessType,p.Value")
_ObjectCallMethod(icalendar, "TemplatePut", p.GuessType)
_ObjectCallMethod(icalendar, "TemplatePut", p.Value)
i = _ObjectCallMethod(icalendar, "ExecuteTemplate", "toICalendar(p.Value,p.GuessType)");
Message( "icalendar:" );
Message( i );
_ObjectCallMethod(icalendar, "TemplatePut", "Dim i,p.GuessType")
_ObjectCallMethod(icalendar, "TemplatePut", i)
_ObjectCallMethod(icalendar, "TemplatePut", p.GuessType)
Message( "all:" );
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "valuesFromICalendar(i,p.GuessType,``)") );
Message( "start:" );
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "valuesFromICalendar(i,p.GuessType,`Start`)") );
Message( "end:" );
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "valuesFromICalendar(i,p.GuessType,`End`)") );
Message( "duration:" );
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "valuesFromICalendar(i,p.GuessType,`Duration`)") );
Message( "weeks:" );
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "valuesFromICalendar(i,p.GuessType,`W`)") );
Message( "days:" );
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "valuesFromICalendar(i,p.GuessType,`D`)") );
Message( "hour:" );
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "valuesFromICalendar(i,p.GuessType,`H`)") );
Message( "min:" );
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "valuesFromICalendar(i,p.GuessType,`M`)") );
Message( "sec:" );
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "valuesFromICalendar(i,p.GuessType,`S`)") );

21
How can I add a property of period type

icalendar = CreateObject("Exontrol.ICalendar.1");
OBJECT component,icalendar;

icalendar = CreateObject("Exontrol.ICalendar.1");

icalendar =  ObjectByName("AN1") ;
component = _ObjectCallMethod( _ObjectGetProperty( _ObjectGetProperty( icalendar , "Content") , "Components") , "Add", "VCALENDAR");
	_ObjectCallMethod( _ObjectGetProperty( component , "Properties") , "Add", "Period1",_ObjectCallMethod(icalendar, "ExecuteTemplate", ".valuesToICalendar(`Start=#1/1/2001#;Duration=1`,9)"));
	_ObjectCallMethod( _ObjectGetProperty( component , "Properties") , "Add", "Period2",_ObjectCallMethod(icalendar, "ExecuteTemplate", ".valuesToICalendar(`Start=#1/1/2001#;End=#1/2/2001#`,9)"));
	_ObjectCallMethod( _ObjectGetProperty( component , "Properties") , "Add", "Period3",_ObjectCallMethod(icalendar, "ExecuteTemplate", ".valuesToICalendar(`Duration=1;End=#1/2/2001#`,9)"));
Message( _ObjectCallMethod( icalendar , "Save") );

20
How can I add a property of integer type

icalendar = CreateObject("Exontrol.ICalendar.1");
OBJECT component,icalendar,property;

icalendar = CreateObject("Exontrol.ICalendar.1");

icalendar =  ObjectByName("AN1") ;
component = _ObjectCallMethod( _ObjectGetProperty( _ObjectGetProperty( icalendar , "Content") , "Components") , "Add", "VCALENDAR");
	_ObjectCallMethod( _ObjectGetProperty( component , "Properties") , "Add", "Integer1",1);
	_ObjectCallMethod( _ObjectGetProperty( component , "Properties") , "Add", "Integer2",_ObjectCallMethod(icalendar, "ExecuteTemplate", ".toICalendar(1,8)"));
	property = _ObjectCallMethod( _ObjectGetProperty( component , "Properties") , "Add", "Integer3");
		_ObjectSetProperty( property , "Value", 1);
		_ObjectSetProperty( property , "Type", 8);
Message( _ObjectCallMethod( icalendar , "Save") );

19
How can I add a property of float type

icalendar = CreateObject("Exontrol.ICalendar.1");
OBJECT component,icalendar,property;

icalendar = CreateObject("Exontrol.ICalendar.1");

icalendar =  ObjectByName("AN1") ;
component = _ObjectCallMethod( _ObjectGetProperty( _ObjectGetProperty( icalendar , "Content") , "Components") , "Add", "VCALENDAR");
	_ObjectCallMethod( _ObjectGetProperty( component , "Properties") , "Add", "Float1",1.5);
	_ObjectCallMethod( _ObjectGetProperty( component , "Properties") , "Add", "Float2",_ObjectCallMethod(icalendar, "ExecuteTemplate", ".toICalendar(1.5,7)"));
	property = _ObjectCallMethod( _ObjectGetProperty( component , "Properties") , "Add", "Float3");
		_ObjectSetProperty( property , "Value", 1.5);
		_ObjectSetProperty( property , "Type", 7);
Message( _ObjectCallMethod( icalendar , "Save") );

18
How do I get the type of the property

icalendar = CreateObject("Exontrol.ICalendar.1");
OBJECT component,icalendar,property;

icalendar = CreateObject("Exontrol.ICalendar.1");

icalendar =  ObjectByName("AN1") ;
component = _ObjectCallMethod( _ObjectGetProperty( _ObjectGetProperty( icalendar , "Content") , "Components") , "Add", "VCALENDAR");
	_ObjectCallMethod( _ObjectGetProperty( component , "Properties") , "Add", "Duration1",_ObjectCallMethod(icalendar, "ExecuteTemplate", ".toICalendar(2.5,6)"));
	property = _ObjectCallMethod( _ObjectGetProperty( component , "Properties") , "Add", "Duration2");
		_ObjectSetProperty( property , "Value", 2.5);
		_ObjectSetProperty( property , "Type", 6);
property = _ObjectCallMethod(icalendar, "ExecuteTemplate", "Root.Properties.Item(`Duration1`)");
	Message( _ObjectGetProperty( property , "Name") );
	Message( "Guess" );
	Message( _ObjectGetProperty( property , "GuessType") );
	Message( _ObjectGetProperty( property , "Name") );
	Message( "Type" );
	Message( _ObjectGetProperty( property , "Type") );
property = _ObjectCallMethod(icalendar, "ExecuteTemplate", "Root.Properties.Item(`Duration2`)");
	Message( _ObjectGetProperty( property , "Name") );
	Message( "Guess" );
	Message( _ObjectGetProperty( property , "GuessType") );
	Message( _ObjectGetProperty( property , "Name") );
	Message( "Type" );
	Message( _ObjectGetProperty( property , "Type") );

17
How can I get values of the duration iCalendar format

icalendar = CreateObject("Exontrol.ICalendar.1");
OBJECT icalendar;

icalendar = CreateObject("Exontrol.ICalendar.1");

icalendar =  ObjectByName("AN1") ;
Message( "all:" );
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "valuesFromICalendar(`P1D`,6,``)") );
Message( "duration:" );
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "valuesFromICalendar(`P1D`,6,`Duration`)") );

16
How can I find the duration in weeks, days, hours, minutes, seconds from a property of duration type

icalendar = CreateObject("Exontrol.ICalendar.1");
OBJECT component,icalendar;

icalendar = CreateObject("Exontrol.ICalendar.1");

icalendar =  ObjectByName("AN1") ;
component = _ObjectCallMethod( _ObjectGetProperty( _ObjectGetProperty( icalendar , "Content") , "Components") , "Add", "VCALENDAR");
	_ObjectCallMethod( _ObjectGetProperty( component , "Properties") , "Add", "Duration",_ObjectCallMethod(icalendar, "ExecuteTemplate", ".toICalendar(3.325,6)"));
_ObjectCallMethod(icalendar, "TemplatePut", "Dim _ObObj")
_ObjectCallMethod(icalendar, "TemplatePut", _ObjectGetProperty( icalendar , "Root"))
p = _ObjectCallMethod(icalendar, "ExecuteTemplate", "_ObObj.Properties.Item(`Duration`)");
_ObjectCallMethod(icalendar, "TemplatePut", "Dim p.GuessType,p.Value")
_ObjectCallMethod(icalendar, "TemplatePut", p.GuessType)
_ObjectCallMethod(icalendar, "TemplatePut", p.Value)
i = _ObjectCallMethod(icalendar, "ExecuteTemplate", "toICalendar(p.Value,p.GuessType)");
Message( "icalendar:" );
Message( i );
_ObjectCallMethod(icalendar, "TemplatePut", "Dim i,p.GuessType")
_ObjectCallMethod(icalendar, "TemplatePut", i)
_ObjectCallMethod(icalendar, "TemplatePut", p.GuessType)
Message( "all:" );
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "valuesFromICalendar(i,p.GuessType,``)") );
Message( "duration:" );
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "valuesFromICalendar(i,p.GuessType,`Duration`)") );
Message( "weeks:" );
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "valuesFromICalendar(i,p.GuessType,`W`)") );
Message( "days:" );
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "valuesFromICalendar(i,p.GuessType,`D`)") );
Message( "hour:" );
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "valuesFromICalendar(i,p.GuessType,`H`)") );
Message( "min:" );
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "valuesFromICalendar(i,p.GuessType,`M`)") );
Message( "sec:" );
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "valuesFromICalendar(i,p.GuessType,`S`)") );

15
How can I add a property of duration type

icalendar = CreateObject("Exontrol.ICalendar.1");
OBJECT component,icalendar,property;

icalendar = CreateObject("Exontrol.ICalendar.1");

icalendar =  ObjectByName("AN1") ;
component = _ObjectCallMethod( _ObjectGetProperty( _ObjectGetProperty( icalendar , "Content") , "Components") , "Add", "VCALENDAR");
	_ObjectCallMethod( _ObjectGetProperty( component , "Properties") , "Add", "Duration1",_ObjectCallMethod(icalendar, "ExecuteTemplate", ".toICalendar(2.5,6)"));
	property = _ObjectCallMethod( _ObjectGetProperty( component , "Properties") , "Add", "Duration2");
		_ObjectSetProperty( property , "Value", 2.5);
		_ObjectSetProperty( property , "Type", 6);
	_ObjectCallMethod( _ObjectGetProperty( component , "Properties") , "Add", "Duration3",_ObjectCallMethod(icalendar, "ExecuteTemplate", ".valuesToICalendar(`D=2;H=12`,6)"));
Message( _ObjectCallMethod( icalendar , "Save") );

14
How can I add a property of date-time type

icalendar = CreateObject("Exontrol.ICalendar.1");
OBJECT component,icalendar,property;

icalendar = CreateObject("Exontrol.ICalendar.1");

icalendar =  ObjectByName("AN1") ;
component = _ObjectCallMethod( _ObjectGetProperty( _ObjectGetProperty( icalendar , "Content") , "Components") , "Add", "VCALENDAR");
	_ObjectCallMethod( _ObjectGetProperty( component , "Properties") , "Add", "DateTime1","1/1/2001 12:00:00 PM");
	_ObjectCallMethod( _ObjectGetProperty( component , "Properties") , "Add", "DateTime2",_ObjectCallMethod(icalendar, "ExecuteTemplate", ".toICalendar(#1/1/2001#,5)"));
	property = _ObjectCallMethod( _ObjectGetProperty( component , "Properties") , "Add", "DateTime3");
		_ObjectSetProperty( property , "Value", "1/1/2001");
		_ObjectSetProperty( property , "Type", 5);
Message( _ObjectCallMethod( icalendar , "Save") );

13
How can I add a property of date type

icalendar = CreateObject("Exontrol.ICalendar.1");
OBJECT component,icalendar,property;

icalendar = CreateObject("Exontrol.ICalendar.1");

icalendar =  ObjectByName("AN1") ;
component = _ObjectCallMethod( _ObjectGetProperty( _ObjectGetProperty( icalendar , "Content") , "Components") , "Add", "VCALENDAR");
	_ObjectCallMethod( _ObjectGetProperty( component , "Properties") , "Add", "Date1","1/1/2001");
	_ObjectCallMethod( _ObjectGetProperty( component , "Properties") , "Add", "Date2",_ObjectCallMethod(icalendar, "ExecuteTemplate", ".toICalendar(#1/1/2001#,4)"));
	property = _ObjectCallMethod( _ObjectGetProperty( component , "Properties") , "Add", "Date3");
		_ObjectSetProperty( property , "Value", "1/1/2001");
		_ObjectSetProperty( property , "Type", 4);
Message( _ObjectCallMethod( icalendar , "Save") );

12
How can I add a property of Calendar User Address type

icalendar = CreateObject("Exontrol.ICalendar.1");
OBJECT component,icalendar,property;

icalendar = CreateObject("Exontrol.ICalendar.1");

icalendar =  ObjectByName("AN1") ;
component = _ObjectCallMethod( _ObjectGetProperty( _ObjectGetProperty( icalendar , "Content") , "Components") , "Add", "VCALENDAR");
	_ObjectCallMethod( _ObjectGetProperty( component , "Properties") , "Add", "caladdress1","mailto:support@exontrol.com");
	_ObjectCallMethod( _ObjectGetProperty( component , "Properties") , "Add", "caladdress2",_ObjectCallMethod(icalendar, "ExecuteTemplate", ".toICalendar(`mailto:support@exontrol.com`,3)"));
	property = _ObjectCallMethod( _ObjectGetProperty( component , "Properties") , "Add", "caladdress3");
		_ObjectSetProperty( property , "Value", "mailto:support@exontrol.com");
		_ObjectSetProperty( property , "Type", 3);
Message( _ObjectCallMethod( icalendar , "Save") );

11
How can I add a property of boolean type

icalendar = CreateObject("Exontrol.ICalendar.1");
OBJECT component,icalendar,property;

icalendar = CreateObject("Exontrol.ICalendar.1");

icalendar =  ObjectByName("AN1") ;
component = _ObjectCallMethod( _ObjectGetProperty( _ObjectGetProperty( icalendar , "Content") , "Components") , "Add", "VCALENDAR");
	_ObjectCallMethod( _ObjectGetProperty( component , "Properties") , "Add", "Boolean1",-1);
	_ObjectCallMethod( _ObjectGetProperty( component , "Properties") , "Add", "Boolean2",_ObjectCallMethod(icalendar, "ExecuteTemplate", ".toICalendar(`TRUE`,2)"));
	property = _ObjectCallMethod( _ObjectGetProperty( component , "Properties") , "Add", "Boolean3");
		_ObjectSetProperty( property , "Value", 0);
		_ObjectSetProperty( property , "Type", 2);
Message( _ObjectCallMethod( icalendar , "Save") );

10
How can I add a property of binary type

icalendar = CreateObject("Exontrol.ICalendar.1");
OBJECT component,icalendar,property;

icalendar = CreateObject("Exontrol.ICalendar.1");

icalendar =  ObjectByName("AN1") ;
component = _ObjectCallMethod( _ObjectGetProperty( _ObjectGetProperty( icalendar , "Content") , "Components") , "Add", "VCALENDAR");
	_ObjectCallMethod( _ObjectGetProperty( component , "Properties") , "Add", "Binary1",_ObjectCallMethod(icalendar, "ExecuteTemplate", ".toICalendar(`This is a bit of text converted to binary`,1)"));
	property = _ObjectCallMethod( _ObjectGetProperty( component , "Properties") , "Add", "Binary2");
		_ObjectSetProperty( property , "Value", "This is a bit of text converted to binary");
		_ObjectSetProperty( property , "Type", 1);
Message( _ObjectCallMethod( icalendar , "Save") );

9
How can I access the root element of the iCalendar format

icalendar = CreateObject("Exontrol.ICalendar.1");
OBJECT icalendar;

icalendar = CreateObject("Exontrol.ICalendar.1");

icalendar =  ObjectByName("AN1") ;
_ObjectCallMethod( icalendar , "Load", "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nEND:VCALENDAR");
Message( _ObjectGetProperty( _ObjectGetProperty( icalendar , "Root") , "Name") );
_ObjectCallMethod(icalendar, "TemplatePut", "Dim _ObObj")
_ObjectCallMethod(icalendar, "TemplatePut", _ObjectGetProperty( icalendar , "Root"))
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "_ObObj.Properties.Item(`Version`).Value") );

8
How can I get notified once the control loads a new component, property, when using Load or LoadFile methods

// AddComponent event - Occurs when a new component is added.
FUNCTION icalendarEvents_AddComponent(OBJECT icalendar, OBJECT NewComponent)
	Message( NewComponent );
END

// AddProperty event - Occurs when a new property is added.
FUNCTION icalendarEvents_AddProperty(OBJECT icalendar, OBJECT NewPropery)
	Message( NewPropery );
END

icalendar = CreateObject("Exontrol.ICalendar.1");
OBJECT icalendar;

icalendar = CreateObject("Exontrol.ICalendar.1");

icalendar =  ObjectByName("AN1") ;
ObjectAssociateEvents("icalendarEvents", icalendar);
_ObjectSetProperty( icalendar , "FireEvents", -1);
_ObjectCallMethod( icalendar , "Load", "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nEND:VCALENDAR");

7
How can I add a property with parameters

icalendar = CreateObject("Exontrol.ICalendar.1");
OBJECT component,icalendar,properties;

icalendar = CreateObject("Exontrol.ICalendar.1");

icalendar =  ObjectByName("AN1") ;
component = _ObjectCallMethod( _ObjectGetProperty( _ObjectGetProperty( icalendar , "Content") , "Components") , "Add", "VCALENDAR");
	properties = _ObjectGetProperty( _ObjectCallMethod( _ObjectGetProperty( component , "Components") , "Add", "VEVENT") , "Properties");
		_ObjectCallMethod( _ObjectGetProperty( _ObjectCallMethod( properties , "Add", "SUMMARY","Company Holiday Party") , "Parameters") , "Add", "LANGUAGE","en-US");
		_ObjectCallMethod( properties , "Add", "DATE","1/1/2001");
Message( _ObjectCallMethod( icalendar , "Save") );

6
How can I load iCalendar from a string

icalendar = CreateObject("Exontrol.ICalendar.1");
OBJECT icalendar;

icalendar = CreateObject("Exontrol.ICalendar.1");

icalendar =  ObjectByName("AN1") ;
_ObjectCallMethod( icalendar , "Load", "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nEND:VCALENDAR");
_ObjectCallMethod(icalendar, "TemplatePut", "Dim _ObObj")
_ObjectCallMethod(icalendar, "TemplatePut", _ObjectGetProperty( icalendar , "Content"))
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "_ObObj.Components.Item(0).Name") );

5
How can I add VEVENT objects

icalendar = CreateObject("Exontrol.ICalendar.1");
OBJECT component,icalendar,properties;

icalendar = CreateObject("Exontrol.ICalendar.1");

icalendar =  ObjectByName("AN1") ;
component = _ObjectCallMethod( _ObjectGetProperty( _ObjectGetProperty( icalendar , "Content") , "Components") , "Add", "VCALENDAR");
	properties = _ObjectGetProperty( component , "Properties");
		_ObjectCallMethod( properties , "Add", "Version","2.0");
		_ObjectCallMethod( properties , "Add", "PRODID","-//hacksw/handcal//NONSGML v1.0//EN");
	properties = _ObjectGetProperty( _ObjectCallMethod( _ObjectGetProperty( component , "Components") , "Add", "VEVENT") , "Properties");
		_ObjectCallMethod( properties , "Add", "DTSTART","1/1/2001");
		_ObjectCallMethod( properties , "Add", "DTEND","1/2/2001");
		_ObjectCallMethod( properties , "Add", "SUMMARY","First Party");
	properties = _ObjectGetProperty( _ObjectCallMethod( _ObjectGetProperty( component , "Components") , "Add", "VEVENT") , "Properties");
		_ObjectCallMethod( properties , "Add", "DTSTART","1/4/2001");
		_ObjectCallMethod( properties , "Add", "DTEND","1/5/2001");
		_ObjectCallMethod( properties , "Add", "SUMMARY","Second Party");
Message( _ObjectCallMethod( icalendar , "Save") );

4
How can I save the control's content to iCalendar format, as a file
icalendar = CreateObject("Exontrol.ICalendar.1");
OBJECT component,icalendar,properties;

icalendar = CreateObject("Exontrol.ICalendar.1");

icalendar =  ObjectByName("AN1") ;
component = _ObjectCallMethod( _ObjectGetProperty( _ObjectGetProperty( icalendar , "Content") , "Components") , "Add", "VCALENDAR");
	properties = _ObjectGetProperty( component , "Properties");
		_ObjectCallMethod( properties , "Add", "Version","2.0");
		_ObjectCallMethod( properties , "Add", "PRODID","-//hacksw/handcal//NONSGML v1.0//EN");
	properties = _ObjectGetProperty( _ObjectCallMethod( _ObjectGetProperty( component , "Components") , "Add", "VEVENT") , "Properties");
		_ObjectCallMethod( properties , "Add", "DTSTART","1/1/2001");
		_ObjectCallMethod( properties , "Add", "DTEND","1/2/2001");
		_ObjectCallMethod( properties , "Add", "SUMMARY","Bastille Day Party");
_ObjectCallMethod( icalendar , "SaveFile", "c:/temp/test.ical");

3
How can I load the iCalendar format from a file

icalendar = CreateObject("Exontrol.ICalendar.1");
OBJECT icalendar;

icalendar = CreateObject("Exontrol.ICalendar.1");

icalendar =  ObjectByName("AN1") ;
_ObjectCallMethod( icalendar , "LoadFile", "c:/temp/test.ical");
_ObjectCallMethod(icalendar, "TemplatePut", "Dim _ObObj")
_ObjectCallMethod(icalendar, "TemplatePut", _ObjectGetProperty( icalendar , "Content"))
Message( _ObjectCallMethod(icalendar, "ExecuteTemplate", "_ObObj.Components.Item(`VCALENDAR`).Properties.Item(`PRODID`).Value") );

2
How do I export the control's content to iCalendar format

icalendar = CreateObject("Exontrol.ICalendar.1");
OBJECT component,icalendar,properties;

icalendar = CreateObject("Exontrol.ICalendar.1");

icalendar =  ObjectByName("AN1") ;
component = _ObjectCallMethod( _ObjectGetProperty( _ObjectGetProperty( icalendar , "Content") , "Components") , "Add", "VCALENDAR");
	properties = _ObjectGetProperty( component , "Properties");
		_ObjectCallMethod( properties , "Add", "Version","2.0");
		_ObjectCallMethod( properties , "Add", "PRODID","-//hacksw/handcal//NONSGML v1.0//EN");
	properties = _ObjectGetProperty( _ObjectCallMethod( _ObjectGetProperty( component , "Components") , "Add", "VEVENT") , "Properties");
		_ObjectCallMethod( properties , "Add", "DTSTART","1/1/2001");
		_ObjectCallMethod( properties , "Add", "DTEND","1/2/2001");
		_ObjectCallMethod( properties , "Add", "SUMMARY","Bastille Day Party");
Message( _ObjectCallMethod( icalendar , "Save") );

1
How can I generate a VCALENDAR object

icalendar = CreateObject("Exontrol.ICalendar.1");
OBJECT icalendar,properties;

icalendar = CreateObject("Exontrol.ICalendar.1");

icalendar =  ObjectByName("AN1") ;
properties = _ObjectGetProperty( _ObjectCallMethod( _ObjectGetProperty( _ObjectGetProperty( icalendar , "Content") , "Components") , "Add", "VCALENDAR") , "Properties");
	_ObjectCallMethod( properties , "Add", "Version","2.0");
	_ObjectCallMethod( properties , "Add", "PRODID","-//hacksw/handcal//NONSGML v1.0//EN");
Message( _ObjectCallMethod( icalendar , "Save") );