Thanks Larry.  I can't wait to try this.  Will let you know how it works
out.

-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Lawrence
Lustig
Sent: Wednesday, September 15, 2004 8:15 PM
To: RBG7-L Mailing List
Subject: [RBG7-L] - Re: Calculation Problem

> -- v_yr_emp should be 7 and vmod 5 not 6!

Here are two stored procedures I wrote to calculate Age (complete years
between
two dates) and number of complete months between two dates.  Real years and
months are calculated, not using the approximation of 30 and 365 days.

Watch out for wrapping. . .

-- MonthDiff.PRC: Returns number of complete months from pMD_Date1 to
pMD_Date2
-- PUT MthDiff.PRC AS MonthDiff pMD_Date1 DATE pMD_Date2 DATE RETURN INTEGER

IF IDAY(.pMD_Date2) <= IDAY(.pMD_Date1) THEN
  RETURN (((IYR4(.pMD_Date2)-IYR4(.pMD_Date1))*12) +
(IMON(.pMD_Date2)-IMON(.pMD_Date1)-1))
ELSE
  RETURN (((IYR4(.pMD_Date2)-IYR4(.pMD_Date1))*12) +
(IMON(.pMD_Date2)-IMON(.pMD_Date1)))
ENDIF

-- CalcAge.PRC: Calculates age as of a given date.
-- PUT CalcAge.PRC AS CalcAge pAsOfDate DATE, pBirthDate DATE RETURN INT

IF ((IMON(.pBirthDate)*100)+IDAY(.pBirthDate)) >=
((IMON(.pAsOfDate)*100)+IDAY(.pAsOfDate)) THEN
  RETURN (IYR4(.pAsOfDate) - IYR4(.pBirthDate) - 1)
ELSE
  RETURN (IYR4(.pAsOfDate) - IYR4(.pBirthDate))
ENDIF

--
Larry

Reply via email to