Привет всем.

Планируется ли реализация в 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;

Ответить