/* ** ** Copyright © 1997-1999 Dipl.-Inform. Kai Hofmann. All rights reserved. ** ** $VER: DateLib-Demo.rexx 33.310 (16.06.99) */ OPTIONS RESULTS SIGNAL ON SYNTAX CALL DATE_INIT IF RESULT ~= 0 THEN DO EXIT 10 END /* EXAMPLE CODE FOR TIME_ FUNCTIONS */ SAY TIME_TIMETOJD(22,48,0) SAY TIME_TIMEZONEFACTOR(8) SAY TIME_LMT(3600,8,53) SAY TIME_TIMETOSEC(22,48,0) SAY TIME_COMPARE2TIMES(22,48,0,22,49,0) SAY TIME_VALIDTIME(22,49,0) SAY TIME_TIMEDIFF(22,49,0,23,0,0) SAY TIME_TIMETONUM(15,5,0) /* THE FOLLOWING FUNCTIONS HAVE THREE RETURN PARAMETERS! */ /* THE FIRST FORM RETURNS ALL WITHIN A STRING (IS8601 FORMAT) */ SAY TIME_JDTOTIME(0.45) SAY TIME_SECTOTIME(82200) SAY TIME_DIFFTIME(22,51,0,3600) SAY TIME_NUMTOTIME(150500) /* THE SECOND FORM DOES THE SAME THAN THE FIRST ONE BUT YOU ALSO SPECIFY VARIABLE NAMES FOR THE hour,min,sec */ SAY TIME_JDTOTIME(0.45,'HOUR MIN SEC') SAY HOUR || ":" || MIN || ":" || SEC SAY TIME_SECTOTIME(82200,'HOUR MIN SEC') SAY HOUR || ":" || MIN || ":" || SEC SAY TIME_DIFFTIME(22,51,0,3600,'HOUR MIN SEC') SAY HOUR || ":" || MIN || ":" || SEC SAY TIME_NUMTOTIME(150600,'HOUR MIN SEC') SAY HOUR || ":" || MIN || ":" || SEC /* */ SAY TIME_FORMATTIME("%H:%M:%S",TIME_CHANGEDAY_NORMAL,2,0,19,41,0,+60) SAY TIME_FORMATTIME("%H:%M:%S",TIME_CHANGEDAY_NORMAL,2,0,19,41,0,+60,'TEXT') SAY TEXT /* (Format template) (Input string) (ChangeDay) (ChangeHour) (DST) (zonemin) */ SAY TIME_PARSETIME("%H:%M:%S","17:06:00",TIME_CHANGEDAY_NORMAL,2,1,120); /* pos:dst:hour:min:sec:zomemin:pfmt */ SAY TIME_PARSETIME("%H:%M:%S","17:26:00",TIME_CHANGEDAY_NORMAL,2,1,120,'DST HOUR MIN SEC ZONEMIN PFMT'); SAY HOUR || ":" || MIN || ":" || SEC ZONEMIN DST PFMT SAY "------------------------------------------------------------" /* EXAMPLE CODE FOR DATE_ FUNCTIONS */ SAY DATE_JULIANLEAPYEAR(1900) SAY DATE_GREGORIANLEAPYEAR(1900) SAY DATE_HEISLEAPYEAR(1900) SAY DATE_JULIANMONTHDAYS(8,1996) SAY DATE_GREGORIANMONTHDAYS(8,1996) SAY DATE_HEISMONTHDAYS(8,1996) SAY DATE_JULIANLASTMONTHDAY(8,1996) SAY DATE_GREGORIANLASTMONTHDAY(8,1996) SAY DATE_HEISLASTMONTHDAY(8,1996) SAY DATE_JULIANYEARDAYS(1996) SAY DATE_GREGORIANYEARDAYS(1996) SAY DATE_HEISYEARDAYS(1996) SAY DATE_COMPARE2DATES(20,8,1996,11,9,1996) SAY DATE_JULIANDAYDIFF(20,8,1996,11,9,1996) SAY DATE_GREGORIANDAYDIFF(20,8,1996,11,9,1996) SAY DATE_HEISDAYDIFF(20,8,1996,11,9,1996) /* RESULT: 0=dayerr,1=Monday,2=Tuesday,3=Wednesday,4=Thursday,5=Friday, 6=Saturday,7=Sunday */ SAY DATE_JULIANWEEKDAY(20,8,1996) SAY DATE_GREGORIANWEEKDAY(20,8,1996) SAY DATE_HEISWEEKDAY(20,8,1996) /* THE LAST PARAMETER IS THE WEEKDAY */ SAY DATE_JULIANDAYSBEFOREWEEKDAY(20,8,1996,DATE_WEEKDAYS_MONDAY) SAY DATE_GREGORIANDAYSBEFOREWEEKDAY(20,8,1996,DATE_WEEKDAYS_MONDAY) SAY DATE_HEISDAYSBEFOREWEEKDAY(20,8,1996,DATE_WEEKDAYS_MONDAY) SAY DATE_JULIANDAYSAFTERWEEKDAY(20,8,1996,DATE_WEEKDAYS_MONDAY) SAY DATE_GREGORIANDAYSAFTERWEEKDAY(20,8,1996,DATE_WEEKDAYS_MONDAY) SAY DATE_HEISDAYSAFTERWEEKDAY(20,8,1996,DATE_WEEKDAYS_MONDAY) SAY DATE_JYEARTOSCALIGER(1996) SAY DATE_GYEARTOSCALIGER(1996) SAY DATE_HYEARTOSCALIGER(1996) SAY DATE_SCALIGERYEARTOJ(6709) SAY DATE_SCALIGERYEARTOG(6709) SAY DATE_SCALIGERYEARTOH(6709) SAY DATE_JSYEARTOJD(6709) SAY DATE_GSYEARTOJD(6709) SAY DATE_HSYEARTOJD(6709) SAY DATE_JDTOMJD(2450084) SAY DATE_MJDTOJD(50083) SAY DATE_JULIANTOJD(20,8,1996) SAY DATE_GREGORIANTOJD(20,8,1996) SAY DATE_HEISTOJD(20,8,1996) SAY DATE_GREGORIANMOONAGE(20,8,1996) SAY DATE_JULIANWEEK(20,8,1996) SAY DATE_GREGORIANWEEK(20,8,1996) SAY DATE_HEISWEEK(20,8,1996) /* FIRST PARAMETER : (DateText) SECOND PARAMETER: (Language) THIRD PARAMETER : (WordClass) */ SAY DATE_DATETEXT(DATE_DATETEXTS_DAY,DATE_LANGUAGES_LOCALE,DATE_WORDCLASS_SINGULAR) /* FOURTH PARAMETER: (MoonPhase) */ SAY DATE_GREGORIANMOONPHASE(20,8,1996,DATE_MOONPHASES_NEWMOON) SAY DATE_VALIDJULIANDATE(20,8,1996) SAY DATE_VALIDGREGORIANDATE(20,8,1996) SAY DATE_VALIDHEISDATE(20,8,1996) SAY DATE_NEXTVALIDJULIANDATE(29,2,1997) SAY DATE_NEXTVALIDGREGORIANDATE(29,2,1997) SAY DATE_NEXTVALIDHEISDATE(29,2,1997) SAY DATE_PREVIOUSVALIDJULIANDATE(29,2,1997) SAY DATE_PREVIOUSVALIDGREGORIANDATE(29,2,1997) SAY DATE_PREVIOUSVALIDHEISDATE(29,2,1997) SAY DATE_NEXTVALIDJULIANDATE(29,2,1997,'DAY MONTH YEAR') SAY DAY || "." || MONTH || "." || YEAR SAY DATE_NEXTVALIDGREGORIANDATE(29,2,1997,'DAY MONTH YEAR') SAY DAY || "." || MONTH || "." || YEAR SAY DATE_NEXTVALIDHEISDATE(29,2,1997,'DAY MONTH YEAR') SAY DAY || "." || MONTH || "." || YEAR SAY DATE_PREVIOUSVALIDJULIANDATE(29,2,1997,'DAY MONTH YEAR') SAY DAY || "." || MONTH || "." || YEAR SAY DATE_PREVIOUSVALIDGREGORIANDATE(29,2,1997,'DAY MONTH YEAR') SAY DAY || "." || MONTH || "." || YEAR SAY DATE_PREVIOUSVALIDHEISDATE(29,2,1997,'DAY MONTH YEAR') SAY DAY || "." || MONTH || "." || YEAR /* PARAMETER: (Country) */ CALL DATE_SETCOUNTRY(DATE_COUNTRIES_UNKNOWN) /* PARAMETER: (Weekday) */ CALL DATE_SETFIRSTWEEKDAY(DATE_WEEKDAYS_MONDAY) /* FIRST PARAMETER : 2 DIGIT YEAR SECOND PARAMETER: ACTUAL YEAR */ SAY DATE_SUPPLEMENTCENTURY(0,1996) /* THE FOLLOWING FUNCTIONS HAVE TWO RETURN PARAMETERS! */ /* THE FIRST FORM RETURNS ALL WITHIN A STRING (IS8601 FORMAT) */ SAY DATE_JULIANEASTER(1996) SAY DATE_GREGORIANEASTER(1996) SAY DATE_HEISEASTER(1996) /* THE SECOND FORM DOES THE SAME THAN THE FIRST ONE BUT YOU ALSO SPECIFY VARIABLE NAMES FOR THE day,month */ SAY DATE_JULIANEASTER(1996,'DAY MONTH') SAY DAY || "." || MONTH || "." SAY DATE_GREGORIANEASTER(1996,'DAY MONTH') SAY DAY || "." || MONTH || "." SAY DATE_HEISEASTER(1996,'DAY MONTH') SAY DAY || "." || MONTH || "." /* THE FOLLOWING FUNCTIONS HAVE THREE RETURN PARAMETERS! */ /* THE FIRST FORM RETURNS ALL WITHIN A STRING (IS8601 FORMAT) */ SAY DATE_JDTOJULIAN(2450084) SAY DATE_JDTOGREGORIAN(2450084) SAY DATE_JDTOHEIS(2450084) /* THE SECOND FORM DOES THE SAME THAN THE FIRST ONE BUT YOU ALSO SPECIFY VARIABLE NAMES FOR THE day,month,year */ SAY DATE_JDTOJULIAN(2450084,'DAY MONTH YEAR') SAY DAY || "." || MONTH || "." || YEAR SAY DATE_JDTOGREGORIAN(2450084,'DAY MONTH YEAR') SAY DAY || "." || MONTH || "." || YEAR SAY DATE_JDTOHEIS(2450084,'DAY MONTH YEAR') SAY DAY || "." || MONTH || "." || YEAR /* THE FOLLOWING FUNCTIONS HAVE THREE RETURN PARAMETERS! */ /* THE FIRST FORM RETURNS ALL WITHIN A STRING (IS8601 FORMAT) */ /* THE FIRST PARAMETER IS THE WEEKDAY 1=Monday,2=Tuesday,3=Wednesday,4=Thursday,5=Friday,6=Saturday,7=Sunday FOLLOWED BY THE WEEK */ SAY DATE_JULIANWWTODM(DATE_WEEKDAYS_SUNDAY,16,1997) SAY DATE_GREGORIANWWTODM(DATE_WEEKDAYS_SUNDAY,16,1997) SAY DATE_HEISWWTODM(DATE_WEEKDAYS_SUNDAY,16,1997) /* THE SECOND FORM DOES THE SAME THAN THE FIRST ONE BUT YOU ALSO SPECIFY VARIABLE NAMES FOR THE day,month,year */ SAY DATE_JULIANWWTODM(DATE_WEEKDAYS_SUNDAY,16,1997,'DAY MONTH YEAR') SAY DAY || "." || MONTH || "." || YEAR SAY DATE_GREGORIANWWTODM(DATE_WEEKDAYS_SUNDAY,16,1997,'DAY MONTH YEAR') SAY DAY || "." || MONTH || "." || YEAR SAY DATE_HEISWWTODM(DATE_WEEKDAYS_SUNDAY,16,1997,'DAY MONTH YEAR') SAY DAY || "." || MONTH || "." || YEAR /* THE FOLLOWING FUNCTIONS HAVE ONE OR TWO RETURN PARAMETERS! */ /* THE FIRST FORM RETURNS ONLY THE TEXT STRING */ /* (Weekday) (Language) */ SAY DATE_WEEKDAYTEXT(DATE_WEEKDAYS_MONDAY,DATE_LANGUAGES_LOCALE) SAY DATE_WEEKDAYSHORTTEXT(DATE_WEEKDAYS_MONDAY,DATE_LANGUAGES_LOCALE) /* (Month) 1-12 (Language) */ SAY DATE_MONTHTEXT(8,DATE_LANGUAGES_LOCALE) SAY DATE_MONTHSHORTTEXT(8,DATE_LANGUAGES_LOCALE) /* THE SECOND FORM DOES THE SAME THAN THE FIRST ONE BUT YOU ALSO SPECIFY VARIABLE NAMES FOR THE maxlen,text */ /* (Weekday) (Language) */ SAY DATE_WEEKDAYTEXT(DATE_WEEKDAYS_MONDAY,DATE_LANGUAGES_LOCALE,'MAXLEN TEXT') SAY MAXLEN || ":" || TEXT SAY DATE_WEEKDAYSHORTTEXT(DATE_WEEKDAYS_MONDAY,DATE_LANGUAGES_LOCALE,'MAXLEN TEXT') SAY MAXLEN || ":" || TEXT /* (Month) (Language) */ SAY DATE_MONTHTEXT(8,DATE_LANGUAGES_LOCALE,'MAXLEN TEXT') SAY MAXLEN || ":" || TEXT SAY DATE_MONTHSHORTTEXT(8,DATE_LANGUAGES_LOCALE,'MAXLEN TEXT') SAY MAXLEN || ":" || TEXT /* (Format template) (Day) (Month) (Year) (Language) 0=Locale,1=ENGLISH,2=DEUTSCH,3=FRANCAIS,4=ESPANOL,5=PORTUGUES, 6=DANSK,7=ITALIANO,8=NEDERLANDS,9=NORSK,10=SVENSKA,11=POLSKI, 12=SUOMI,13=MAGYAR,14=GREEK,15=ESPERANTO,16=TURKCE,17=LATINA, 18=RUSSIAN, 19=Czech, 20=Catalonian */ SAY DATE_FORMATDATE("%Y-%m-%d",10,3,1997,DATE_LANGUAGES_LOCALE) SAY DATE_FORMATDATE("%Y-%m-%d",10,3,1997,DATE_LANGUAGES_LOCALE,'TEXT') SAY TEXT SAY DATE_DATETONUM(28,6,1997) /* THE FOLLOWING FUNCTIONS HAVE THREE RETURN PARAMETERS! */ /* THE FIRST FORM RETURNS ALL WITHIN A STRING (IS8601 FORMAT) */ SAY DATE_NUMTODATE(19970628) /* THE SECOND FORM DOES THE SAME THAN THE FIRST ONE BUT YOU ALSO SPECIFY VARIABLE NAMES FOR THE day,month,year */ SAY DATE_NUMTODATE(19970628,'DAY MONTH YEAR') SAY DAY || "." || MONTH || "." || YEAR /* (Format template) (Input String) (Language) (Calendars) (Actual JD) */ SAY DATE_PARSEDATE("%Y-%m-%d","1997-06-28",DATE_LANGUAGES_LOCALE,DATE_CALENDARS_HEIS,2450809) /* pos:y-m-d:pfmt:plang */ SAY DATE_PARSEDATE("%Y-%m-%d","1997-06-28",DATE_LANGUAGES_LOCALE,DATE_CALENDARS_HEIS,2450809,'DAY MONTH YEAR PFMT PLANG') SAY DAY || "." || MONTH || "." || YEAR PFMT PLANG /* THE FOLLOWING FUNCTIONS HAVE THREE RETURN PARAMETERS! */ /* THE FIRST FORM RETURNS ALL WITHIN A STRING (IS8601 FORMAT) */ SAY DATE_JULIANDIFFDATERANGE(23,1,1998,0,0,1) SAY DATE_GREGORIANDIFFDATERANGE(23,1,1998,0,0,1) SAY DATE_HEISDIFFDATERANGE(23,1,1998,0,0,1) /* THE SECOND FORM DOES THE SAME THAN THE FIRST ONE BUT YOU ALSO SPECIFY VARIABLE NAMES FOR THE day,month,year */ SAY DATE_JULIANDIFFDATERANGE(23,1,1998,0,0,1,'DAY MONTH YEAR') SAY DAY || "." || MONTH || "." || YEAR SAY DATE_GREGORIANDIFFDATERANGE(23,1,1998,0,0,1,'DAY MONTH YEAR') SAY DAY || "." || MONTH || "." || YEAR SAY DATE_HEISDIFFDATERANGE(23,1,1998,0,0,1,'DAY MONTH YEAR') SAY DAY || "." || MONTH || "." || YEAR /* THE FOLLOWING FUNCTIONS HAVE THREE RETURN PARAMETERS! */ /* THE FIRST FORM RETURNS ALL WITHIN A STRING (IS8601 FORMAT) */ SAY DATE_JULIANRANGEDIFF(1,1,1998,23,1,1998) SAY DATE_GREGORIANRANGEDIFF(1,1,1998,23,1,1998) SAY DATE_HEISRANGEDIFF(1,1,1998,23,1,1998) /* THE SECOND FORM DOES THE SAME THAN THE FIRST ONE BUT YOU ALSO SPECIFY VARIABLE NAMES FOR THE days,months,years */ SAY DATE_JULIANRANGEDIFF(1,1,1998,23,1,1998,'DAYS MONTHS YEARS') SAY YEARS || "Y" MONTHS || "M" DAYS || "D" SAY DATE_GREGORIANRANGEDIFF(1,1,1998,23,1,1998,'DAYS MONTHS YEARS') SAY YEARS || "Y" MONTHS || "M" DAYS || "D" SAY DATE_HEISRANGEDIFF(1,1,1998,23,1,1998,'DAYS MONTHS YEARS') SAY YEARS || "Y" MONTHS || "M" DAYS || "D" /* New 33.310 functions */ SAY DATE_LEAPYEAR(1900,DATE_CALENDAR_GREGORIAN) SAY DATE_MONTHDAYS(8,1996,DATE_CALENDAR_GREGORIAN) SAY DATE_LASTMONTHDAY(8,1996,DATE_CALENDAR_GREGORIAN) SAY DATE_YEARDAYS(1996,DATE_CALENDAR_GREGORIAN) SAY DATE_DAYDIFF(20,8,1996,11,9,1996,DATE_CALENDAR_GREGORIAN) SAY DATE_WEEKDAY(20,8,1996,DATE_CALENDAR_GREGORIAN) SAY DATE_DAYSBEFOREWEEKDAY(20,8,1996,DATE_WEEKDAYS_MONDAY,DATE_CALENDAR_GREGORIAN) SAY DATE_DAYSAFTERWEEKDAY(20,8,1996,DATE_WEEKDAYS_MONDAY,DATE_CALENDAR_GREGORIAN) SAY DATE_YEARTOSCALIGER(1996,DATE_CALENDAR_GREGORIAN) SAY DATE_SCALIGERYEARTOYEAR(6709,DATE_CALENDAR_GREGORIAN) SAY DATE_SYEARTOJD(6709,DATE_CALENDAR_GREGORIAN) SAY DATE_DATETOJD(20,8,1996,DATE_CALENDAR_GREGORIAN) SAY DATE_WEEK(20,8,1996,DATE_CALENDAR_GREGORIAN) SAY DATE_VALIDDATE(20,8,1996,DATE_CALENDAR_GREGORIAN) SAY DATE_NEXTVALIDDATE(29,2,1997,DATE_CALENDAR_GREGORIAN) SAY DATE_NEXTVALIDDATE(29,2,1997,'DAY MONTH YEAR',DATE_CALENDAR_GREGORIAN) SAY DAY || "." || MONTH || "." || YEAR SAY DATE_PREVIOUSVALIDDATE(29,2,1997,DATE_CALENDAR_GREGORIAN) SAY DATE_PREVIOUSVALIDDATE(29,2,1997,'DAY MONTH YEAR',DATE_CALENDAR_GREGORIAN) SAY DAY || "." || MONTH || "." || YEAR SAY DATE_EASTER(1996,DATE_CALENDAR_GREGORIAN) SAY DATE_EASTER(1996,'DAY MONTH',DATE_CALENDAR_GREGORIAN) SAY DAY || "." || MONTH || "." SAY DATE_JDTODATE(2450084,DATE_CALENDAR_GREGORIAN) SAY DATE_JDTODATE(2450084,'DAY MONTH YEAR',DATE_CALENDAR_GREGORIAN) SAY DAY || "." || MONTH || "." || YEAR SAY DATE_WWTODM(DATE_WEEKDAYS_SUNDAY,16,1997,DATE_CALENDAR_GREGORIAN) SAY DATE_WWTODM(DATE_WEEKDAYS_SUNDAY,16,1997,'DAY MONTH YEAR',DATE_CALENDAR_GREGORIAN) SAY DAY || "." || MONTH || "." || YEAR SAY DATE_DIFFDATERANGE(23,1,1998,0,0,1,DATE_CALENDAR_GREGORIAN) SAY DATE_DIFFDATERANGE(23,1,1998,0,0,1,'DAY MONTH YEAR',DATE_CALENDAR_GREGORIAN) SAY DAY || "." || MONTH || "." || YEAR SAY DATE_RANGEDIFF(1,1,1998,23,1,1998,DATE_CALENDAR_GREGORIAN) SAY DATE_RANGEDIFF(1,1,1998,23,1,1998,'DAYS MONTHS YEARS',DATE_CALENDAR_GREGORIAN) SAY YEARS || "Y" MONTHS || "M" DAYS || "D" /* EXAMPLE CODE FOR DATETIME_ FUNCTIONS */ /* THE FOLLOWING FUNCTION HAS TWO RETURN PARAMETERS! */ /* THE FIRST FORM RETURNS ALL WITHIN A STRING (GMT JD, GMT seconds) */ /* local JD, local seconds, DST, zonemin */ SAY DATETIME_LOCALTOGMT(2450920,62100,1,+60) SAY DATETIME_LOCALTOGMT(2450920,62100,1,+60,'JD SECS') SAY JD || ":" || SECS /* THE FOLLOWING FUNCTION HAS THREE RETURN PARAMETERS! */ /* THE FIRST FORM RETURNS ALL WITHIN A STRING (GMT JD, GMT seconds, DST) */ /* GMT JD, GMT seconds, zonemin, ChangePrevDay, ChangeDay, ChangeNextDay, ChangeHour, DST */ SAY DATETIME_GMTTOLOCAL(2450920,54900,+60,TIME_CHANGEDAY_NORMAL,TIME_CHANGEDAY_NORMAL,TIME_CHANGEDAY_NORMAL,2,1) SAY DATETIME_GMTTOLOCAL(2450920,54900,+60,TIME_CHANGEDAY_NORMAL,TIME_CHANGEDAY_NORMAL,TIME_CHANGEDAY_NORMAL,2,1,'JD SECS DST') SAY JD || ":" || SECS || ":" || DST SYNTAX: IF (RC ~= "RC") & (RC > 0) THEN DO SAY "RC:" RC SAY "Line:" SIGL IF RC = 15 THEN DO SAY "Maybe you have installed the light version of the '" || DATE_NAME || "' which does not support ARexx!" END END IF DATE_OPEN = 0 THEN DO IF ~REMLIB(DATE_NAME) THEN DO SAY "Can not remove '" || DATE_NAME || "'" END END EXIT 0 DATE_INIT: DATE_NAME = 'date.library' DATE_VERSION = 33 DATE_REVISION = 310 DATE_DISPATCHER = -492 ADDRESS COMMAND 'VERSION' DATE_NAME DATE_VERSION DATE_REVISION '>NIL:' IF RC > 0 THEN DO SAY "Need '" || DATE_NAME || "'" DATE_VERSION || "." || DATE_REVISION RETURN(10) END IF ~SHOW('LIBRARIES',DATE_NAME) THEN DO IF ~ADDLIB(DATE_NAME,0,DATE_DISPATCHER,DATE_VERSION) THEN DO SAY "Can not add '" || DATE_NAME || "'" DATE_VERSION || "." || DATE_REVISION RETURN(10) END DATE_OPEN = 0 END ELSE DO DATE_OPEN = 1 END /* Constant definitions */ TIME_CHANGEDAY_NORMAL = 0 TIME_CHANGEDAY_WINTERTOSUMMER = 1 TIME_CHANGEDAY_SUMMERTOWINTER = 2 DATE_MOONPHASES_NEWMOON = 0 DATE_MOONPHASES_FIRSTQUARTER = 1 DATE_MOONPHASES_FULLMOON = 2 DATE_MOONPHASES_LASTQUARTER = 3 DATE_WEEKDAYS_DAYERR = 0 DATE_WEEKDAYS_MONDAY = 1 DATE_WEEKDAYS_TUESDAY = 2 DATE_WEEKDAYS_WEDNESDAY = 3 DATE_WEEKDAYS_THURSDAY = 4 DATE_WEEKDAYS_FRIDAY = 5 DATE_WEEKDAYS_SATURDAY = 6 DATE_WEEKDAYS_SUNDAY = 7 DATE_DATETEXTS_DAY = 0 DATE_DATETEXTS_MONTH = 1 DATE_DATETEXTS_YEAR = 2 DATE_DATETEXTS_WEEK = 3 DATE_DATETEXTS_WEEKDAY = 4 DATE_DATETEXTS_HOUR = 5 DATE_DATETEXTS_MINUTE = 6 DATE_DATETEXTS_SECOND = 7 DATE_DATETEXTS_YESTERDAY = 8 DATE_DATETEXTS_TODAY = 9 DATE_DATETEXTS_TOMORROW = 10 DATE_WORDCLASS_SINGULAR = 0 DATE_WORDCLASS_PLURAL = 1 DATE_WORDCLASS_PERIODICAL = 2 DATE_LANGUAGES_LOCALE = 0 DATE_LANGUAGES_ENGLISH = 1 DATE_LANGUAGES_GERMAN = 2 DATE_LANGUAGES_FRENCH = 3 DATE_LANGUAGES_SPANISH = 4 DATE_LANGUAGES_PORTUGUESE = 5 DATE_LANGUAGES_DANISH = 6 DATE_LANGUAGES_ITALIAN = 7 DATE_LANGUAGES_DUTCH = 8 DATE_LANGUAGES_NORWEGIAN = 9 DATE_LANGUAGES_SWEDISH = 10 DATE_LANGUAGES_POLISH = 11 DATE_LANGUAGES_FINNISH = 12 DATE_LANGUAGES_HUNGARIAN = 13 DATE_LANGUAGES_GREEK = 14 DATE_LANGUAGES_ESPERANTO = 15 DATE_LANGUAGES_TURKISH = 16 DATE_LANGUAGES_LATIN = 17 DATE_LANGUAGES_RUSSIAN = 18 DATE_LANGUAGES_CZECH = 19 DATE_LANGUAGES_CATALONIAN = 20 DATE_LANGUAGES_SERBIAN = 21 DATE_LANGUAGES_LASTLANGUAGE = 22 DATE_COUNTRIES_UNKNOWN = 0 DATE_COUNTRIES_ITALIA = 1 DATE_COUNTRIES_DEUTSCHLAND = 2 DATE_COUNTRIES_SCHWEIZ = 3 DATE_COUNTRIES_DANMARK = 4 DATE_COUNTRIES_NEDERLAND = 5 DATE_COUNTRIES_GREATBRITAIN = 6 DATE_COUNTRIES_USA = 7 DATE_COUNTRIES_SWEDEN = 8 DATE_CALENDARS_JULIAN = 0 DATE_CALENDARS_GREGORIAN = 1 DATE_CALENDARS_HEIS = 2 RETURN(0)