Define class periodofwork as custom Function recstag Lparameters pdBeg,pdEnd,pnDn,pnMon,pnYea store 0 to pnDn,pnMon,pnYea do case case pdBeg=pdEnd.or.(empty(pdBeg).or.empty(pdEnd)).or.pdBeg>pdEnd case year(pdbeg)=year(pdEnd).and.month(pdBeg)=month(pdEnd) pnDn=pdEnd-pdBeg case year(pdbeg)=year(pdEnd) pnMon=month(pdEnd)-month(PdBeg)-1 do case case day(pdBeg)>day(pdEnd) ldLow=date(year(gomonth(pdBeg,1)),month(gomonth(pdBeg,1)),1)-pdBeg-1 pnDn=(ldLow)+day(pdEnd) case day(pdBeg)<day(pdEnd) pnDn=day(pdEnd)-day(pdBeg) pnMon=pnMon+1 case day(pdBeg)=day(pdEnd) pnMon=pnMon+1 endcase case day(pdbeg)=day(pdEnd).and.month(pdBeg)=month(pdEnd).and.between(year(pdEnd)-year(pdBeg),364,367) pnYea=year(pdEnd)-year(pdBeg) case pdEnd-pdBeg<365 pnMon=12-month(PdBeg)+month(pdEnd)-1 do case case day(pdBeg)>day(pdEnd) ldLow=date(year(gomonth(pdBeg,1)),month(gomonth(pdBeg,1)),1)-pdBeg-1 pnDn=(ldLow)+day(pdEnd) case day(pdBeg)<day(pdEnd) pnDn=day(pdEnd)-day(pdBeg) pnMon=pnMon+1 case day(pdBeg)=day(pdEnd) pnMon=pnMon+1 endcase otherwise pnYea=year(pdEnd)-year(pdBeg)-1 pnMon=12-month(PdBeg)+month(pdEnd)-1 do case case day(pdBeg)>day(pdEnd) ldLow=date(year(gomonth(pdBeg,1)),month(gomonth(pdBeg,1)),1)-pdBeg-1 pnDn=(ldLow)+day(pdEnd) case day(pdBeg)<day(pdEnd) pnDn=day(pdEnd)-day(pdBeg) pnMon=pnMon+1 case day(pdBeg)=day(pdEnd) pnMon=pnMon+1 endcase if pnMon>=12 && we can do it because year has 12 months pnMon=pnMon-12 pnYea=pnYea+1 endif endcase endfunc Enddefine