>* BTWNDATE.PRG > >startdate = {19/02/2008} && Thisform.dStart.value >enddate = {18/02/2009} &&Thisform.dend.value > > >IF startdate ‘&greaterthan’ enddate > WAIT WINDOW "Start date must " + CHR(13) ; > + "be earlier than End date" > RETURN >ENDIF > >PRIVATE precmpdate, vyears, vmonths, vdays >precmpdate={} >vyears=0 >vmonths=0 >vdays=0 >nTotdays = 0 >* Calculate: >* endofmonth is the last day of month prior to month of enddate >* >endofmonth = CTOD(ALLTRIM(STR(MONTH(enddate))) + '/' + "01" + '/' + ; > ALLTRIM(STR(YEAR(enddate)))) - 1 >* >IF MONTH(startdate) ‘&lessthan’= MONTH(enddate) > > vyears = YEAR(enddate) - YEAR(startdate) > IF DAY(startdate) ‘&lessthan’= DAY(enddate) > vmonths = MONTH(enddate) - MONTH(startdate) > vdays = DAY(enddate) - DAY(startdate) > nTotdays = (enddate) - (startdate) > ELSE > IF MONTH(startdate) = MONTH(enddate) > vyears = vyears - 1 > ENDIF > vmonths = MOD(MONTH(enddate) - MONTH(startdate) - 1 + 12, 12) > vdays = endofmonth - precmpdate + DAY(enddate) > nTotdays = (enddate) - (startdate) > ENDIF >ELSE > vyears = YEAR(enddate) - YEAR(startdate) - 1 > IF DAY(startdate) ‘&greaterthan’ DAY(enddate) > vmonths = MONTH(enddate) - MONTH(startdate) + 12 - 1 > vdays = endofmonth - precmpdate + DAY(enddate) > nTotdays = (enddate) - (startdate) > ELSE > vmonths = MONTH(enddate) - MONTH(startdate) + 12 > vdays = DAY(enddate) - DAY(startdate) > nTotdays = (enddate) - (startdate) > ENDIF >ENDIF >Clear > >= Messagebox('Values are'+ CHR(13) + ; > ' Years: ' + STR(vyears) + CHR(13) + ; > ' Months: ' + STR(vmonths) + CHR(13) + ; > ' Days: ' + STR(vdays) + CHR(13) + ; > ' Total number of Days: ' + STR(nTotdays) + CHR(13) + ; > CHR(13) + ; > ' Between ' + DTOC(startdate) + CHR(13) +; > ' and ' + DTOC(enddate)) >RETURN