declare integer GetTimeZoneInformation in Win32API ; string @lcStruct *-- lcStruct is of type: *!* typedef struct _TIME_ZONE_INFORMATION { // tzi *!* LONG Bias; *!* WCHAR StandardName[ 32 ]; *!* SYSTEMTIME StandardDate; *!* LONG StandardBias; *!* WCHAR DaylightName[ 32 ]; *!* SYSTEMTIME DaylightDate; *!* LONG DaylightBias; *!* } TIME_ZONE_INFORMATION; *-- Total structure length: 172 chars *-- Long = 16 bit signed integer *-- WCHAR = Unicode char (16 bit) *-- Initialize the output variable lcStruct = replicate(chr(0), 172) = GetTimeZoneInformation (@lcStruct) *-- The LongToNumber(), WordToNumber() and UnicodeToANSI() * functions are defined at the end of this program. ? "Bias: ", LongToNumber(left(lcStruct, 4)) ? ? "Standard Time: ", UnicodeToANSI(substr(lcStruct, 5, 64)) ? "Transition from daylight to standard time occurs on:" ? "Year: ", WordToNumber(substr(lcStruct, 69, 2)) ? "Month: ", WordToNumber(substr(lcStruct, 71, 2)) ? "Day of week: ", WordToNumber(substr(lcStruct, 73, 2)) ? "Day: ", WordToNumber(substr(lcStruct, 75, 2)) ? "Hour: ", WordToNumber(substr(lcStruct, 77, 2)) ? "Minute: ", WordToNumber(substr(lcStruct, 79, 2)) ? "Second: ", WordToNumber(substr(lcStruct, 81, 2)) ? "MiliSec: ", WordToNumber(substr(lcStruct, 83, 2)) ? "Bias: ", LongToNumber(substr(lcStruct, 85, 4)) ? ? "Daylight Time: ", UnicodeToANSI(substr(lcStruct, 89, 64)) ? "Transition from standard to daylight time occurs on:" ? "Year: ", WordToNumber(substr(lcStruct, 153, 2)) ? "Month: ", WordToNumber(substr(lcStruct, 155, 2)) ? "Day of week: ", WordToNumber(substr(lcStruct, 157, 2)) ? "Day: ", WordToNumber(substr(lcStruct, 159, 2)) ? "Hour: ", WordToNumber(substr(lcStruct, 161, 2)) ? "Minute: ", WordToNumber(substr(lcStruct, 163, 2)) ? "Second: ", WordToNumber(substr(lcStruct, 165, 2)) ? "MiliSec: ", WordToNumber(substr(lcStruct, 167, 2)) ? "Bias: ", LongToNumber(substr(lcStruct, 169, 4)) return *========================================== function LongToNumber lparameter tcDWord local lnReturn, lnI if (type( "tcDWord") <> "C") or (len( tcDWord) < 4) return 0 endif lnReturn = 0 for lnI = 1 to 4 lnReturn = asc( substr( tcDWord, 5-lnI, 1)) + lnReturn if lnI <> 4 lnReturn = lnReturn * 256 endif endfor if lnReturn > 2147483647 lnReturn = lnReturn - 0x100000000 endif return lnReturn *========================================== function WordToNumber parameter tcWord local lnReturn, lnI if (type( "tcWord") <> "C") or (len( tcWord) < 2) return 0 endif lnReturn = asc( left( tcWord, 1)) + asc( substr( tcWord, 2, 1)) * 256 return lnReturn *========================================== function UnicodeToANSI lparameter tcUnicodeString local lcReturn, lnAt lcReturn = strconv(strconv(tcUnicodeString, 6), 2) lnAt = at(chr(0), lcReturn) if lnAt > 0 lcReturn = left(lcReturn, lnAt - 1) endif return lcReturnVlad