GetCurFiscalYear(sFYstart, sFYend);  
procedure GetCurFiscalYear(var sDateStart, sDateEnd: string);
var
  qryTemp: TQuery;    sNow: string;
  nNowYr, nNowMon, nNowDay, nStartYr, nStartMon, nStartDay, nEndYr, nEndMon, nEndDay: Integer;
begin
  sNow := GetFieldDataFromTable('to_char(sysdate, ''YYYYMMDD'')', 'syspar');
  nNowYr  := StrToInt(Copy(sNow, 1, 4));  // Copy(S; Index, Count: Integer): string
  nNowMon := StrToInt(Copy(sNow, 5, 2));
  nNowDay := StrToInt(Copy(sNow, 7, 2));
  qryTemp := TQuery.Create(nil);
  qryTemp.Databasename := OPS_DATABASE;
  with qryTemp, qryTemp.SQL do
  try
    Close;
    Clear;
    Add('select FYSTARTMON, FYSTARTDAY, FYENDMON, FYENDDAY');
    Add('from syspar');
    Open;
    nStartMon := FieldByName('FYSTARTMON').AsInteger; 
    nStartDay := FieldByName('FYSTARTDAY').AsInteger;
    nEndMon   := FieldByName('FYENDMON').AsInteger;
    nEndDay   := FieldByName('FYENDDAY').AsInteger;
    Close;
  finally
    qryTemp.free;   // Free qryTemp Instance
  end;
  if (nNowMon > nStartMon) or ((nNowMon = nStartMon) and (nNowDay >= nStartDay)) then
    nStartYr := nNowYr
  else
    nStartYr := nNowYr - 1;
  if (nStartMon = 1) and (nStartDay = 1) then
    nEndYr := nStartYr
  else
    nEndYr := nStartYr + 1;
  sDateStart := YMD2DateStr(nStartYr, nStartMon, nStartDay, OPS_DATEFORMAT);
  sDateEnd   := YMD2DateStr(nEndYr, nEndMon, nEndDay, OPS_DATEFORMAT);
 end;----------------------------------------------------------
if (nNowMon > nStartMon) or ((nNowMon = nStartMon) and (nNowDay >= nStartDay)) then
    nStartYr := nNowYr
  else
    nStartYr := nNowYr - 1;
  if (nStartMon = 1) and (nStartDay = 1) then
    nEndYr := nStartYr
  else
    nEndYr := nStartYr + 1; 
------------------------------------------------------- 請問﹕上面這段代碼 起什么作用或是一個什么算法? 
其中 FYSTARTMON, FYSTARTDAY, FYENDMON, FYENDDAY 字段的值分別為:
     4, 1, 3, 31