Привет всем.
Планируется ли реализация в FB_UDF функций определений дня недели (дня месяца)
DOW (DOM) ?
я нашёл такую (с моими переделками) и у меня есть вопрос.
type
ISC_LONG = Integer; // 32 bit signed
UISC_LONG = Cardinal; // 32 bit unsigned
TGDS_QUAD = record
gds_quad_high : ISC_LONG;
gds_quad_low : UISC_LONG;
end;
TGDS__QUAD = TGDS_QUAD;
TISC_QUAD = TGDS_QUAD;
PGDS_QUAD = ^TGDS_QUAD;
PGDS__QUAD = ^TGDS__QUAD;
PISC_QUAD = ^TISC_QUAD;
TCTimeStructure = record
tm_sec : integer; // Seconds
tm_min : integer; // Minutes
tm_hour : integer; // Hour (0--23)
tm_mday : integer; // Day of month (1--31)
tm_mon : integer; // Month (0--11)
tm_year : integer; // Year (calendar year minus 1900)
tm_wday : integer; // Weekday (0--6) Sunday = 0)
tm_yday : integer; // Day of year (0--365)
tm_isdst : integer; // 0 if daylight savings time is not in effect)
end;
PCTimeStructure = ^TCTimeStructure;
TM = TCTimeStructure;
PTM = ^TM;
procedure isc_decode_date (ib_date: PISC_QUAD; tm_date: PCTimeStructure);
stdcall; external 'fbclient';
function DayOfWeek(ib_date: PISC_QUAD): integer;
var
tm_date: tm;
begin
isc_decode_date(ib_date, @tm_date);
result := tm_date.tm_wday + 1;
end;
DECLARE EXTERNAL FUNCTION DOW
TIMESTAMP
RETURNS INTEGER BY VALUE
ENTRY_POINT 'DayOfWeek' MODULE_NAME 'volvaudf';
Вопросы:
1) насколько правильны первые два опеределения в type
2) правильно ли будет сделать глобальную threadvar для результата,
т.е.
globalvar := tm_date.tm_wday + 1;
result := globalvar;