From the January 2013 Issue of Prestwood eMag
Paradox OPAL: Language Details:
Adding & subtracting months from a date
Posted 8/20/2002 on 8/20/2002 and updated 11/12/2002
Take Away: The following code demonstrates one technique for adding and subtracting months from a date in Paradox's ObjectPAL.


Follow the embedded comments to understand how it works.
proc cpAddMonths(dStart Date, siMonths SmallInt) Date
;Add number of months in siMonths to the date dStart 
;and return a valid date. This custom procedure 
;accomodates adding of more then 12 months, last day 
;of the month and properly handle leap year. This 
;custom procedure also works for subtracting months.
siNewMonth SmallInt
siNewDay SmallInt
siNewYear SmallInt

;Find new month & year.
siNewMonth = month(dStart) + siMonths
siNewYear = year(dStart)
while siNewMonth > 12 ;For adding months.
siNewMonth = siNewMonth - 12
siNewYear = siNewYear + 1
while siNewMonth < 1 ;For subtracting months.
siNewMonth = siNewMonth + 12
siNewYear = siNewYear - 1

;Find new day.
siNewDay = day(dStart)
while siNewDay > daysInMonth(date(string(siNewMonth) 
 + '/1/' + string(siNewYear)))
siNewDay = siNewDay - 1

;Return calculated date.
return(date(string(siNewMonth) + '/' + string(siNewDay) 
  + '/' + string(siNewYear)))

method pushButton(var eventInfo Event)
dStart Date
siMonths SmallInt

;Initialize variables.
dStart = date('12/31/1995')
siMonths = 2

;Prompt user for values.
dStart.view('Enter Start date')
siMonths.view('Enter number of months')

;View calculated date.
view(cpAddMonths(dStart, siMonths), 'Calculated Date')
KB Post Contributed By Mike Prestwood:

Mike Prestwood is a drummer, an author, and creator of the PrestwoodBoards online community. He is the President & CEO of Prestwood IT Solutions. Prestwood IT provides Coding, Website, and Computer Tech services. Mike has authored 6 computer books and over 1,200 articles. As a drummer, he maintains and has authored 3 drum books. If you have a project you wish to discuss with Mike, you can send him a private message through his PrestwoodBoards home page or call him 9AM to 4PM PST at 916-726-5675 x205.

Visit Profile For service: 916-726-5675
Copyright (C) Prestwood IT Solutions.
All Rights Reserved.
Printed 9/30/2020