IT SOLUTIONS
Your full service technology partner!
 Paradox
 Search Paradox Group: Advanced
 Paradox Group Home eMag: Paradox Edition WEEKLYLESSON MYGROUPSETTINGS
 Message Board
 Paradox KB
 Paradox To/From To/FromCODEGuides
 Paradox Study Test PRESTWOODCERTIFIED
 Paradox Store PRESTWOODSTORE Store Home Buy Paradox Items
 Members Only

#### Prestwood eMagazine

January Edition
Subscribe now! It's Free!
Enter your email:

 ► KB ► Desktop Data... ► Paradox & Ob... ► ObjectPAL Co... ► OPAL: Langua...
From the January 2013 Issue of Prestwood eMag
 Paradox OPAL: Language Details:Adding & subtracting months from a date
Posted 18 years ago 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.

#### KB100001

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.
var
siNewMonth SmallInt
siNewDay SmallInt
siNewYear SmallInt
endVar

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

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

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

method pushButton(var eventInfo Event)
var
dStart Date
siMonths SmallInt
endVar

;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')
endMethod```

## Comments

0 Comments.
Share a thought or comment...

 Write a Comment... ... Sign in... If you are a member, Sign In. Or, you can Create a Free account now. Anonymous Post (text-only, no HTML): Enter your name and security key. Your Name: Security key = P1246A1 Enter key:
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 play-drums.com 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

 KB Article #100001 Counter 7668 Since 4/2/2008
 Go ahead!   Use Us! Call: 916-726-5675 Or visit our new sales site: www.prestwood.com
 Connect With Us: FacebookLike our page!!! TwitterFollow us! LinkedInJoin Group YouTubeView channel.

 ©1995-2020 Prestwood IT Solutions.   [Security & Privacy]