? nStorageDue = (nItemRate/nDaysInMonth) * nItemCuft * nNumberOfDays >? amt_due = ROUND(nStorageDue, 2) >>
LOCAL dSchedDate, dRcvDate, nItemCuft, nItemRate, nNumberOfDays, nFreeDays, nDaysInMonth, nStorageDue, amt_due >> >>dSchedDate = ctod('03/16/2003') >>dRcvDate = ctod('02/25/2003') >>nItemCuft = 90 >>nItemRate = .50 >>nNumberOfDays = 0 >>nStorageDue = 0 >>amt_due = 0.00 >>nFreeDays = 14 >>nDaysInMonth = 31 >> >>IF MONTH(dRcvDate) = MONTH(dSchedDate) >> dStartCalcDate = dRcvDate + nFreeDays >> IF dStartCalcDate >= dSchedDate >> nNumberOfDays = 0 >> ELSE >> nNumberOfDays = DAY(dSchedDate) - DAY(dStartCalcDate) + 1 >> ENDIF >>ENDIF >>*** received date was in a previous month >>*** determine if we use the first of the month or find how many freedays in last month >>IF MONTH(dRcvDate + nFreeDays) < MONTH(dSchedDate) >> dStartCalcDate = 1 >>ELSE >> dStartCalcDate = dRcvDate + nFreedays >>ENDIF >>nNumberOfDays = DAY(dSchedDate) - DAY(dStartCalcDate) + 1 >>*** do the calculation >>? nStorageDue = (nItemRate/nDaysInMonth) * nItemCuft * nNumberOfDays >>? amt_due = ROUND(nStorageDue, 2) >>*** no negative amounts allowed >>IF amt_due < 0 >> amt_due = 0 >>ENDIF>>