View previous topic :: View next topic
|
Author |
Message |
anjani shanker
New User
Joined: 26 Jan 2007 Posts: 37 Location: USA
|
|
|
|
Hi,
I have a scenario in which i have a date value, say X.
X is usually any date which is in the middle of current month. No I have an array of size 5 in which i need to store a date which is would be last date of every next month. Like:
X= 11/15/2008
then array should contain :
A(1) = 12/31/2008
A(2) = 01/31/2009
A(3) = 02/28/2009
and so on ...
Plz help me with how could this be implemented in PL1. |
|
Back to top |
|
|
Robert Sample
Global Moderator
Joined: 06 Jun 2008 Posts: 8696 Location: Dubuque, Iowa, USA
|
|
|
|
You could write your own function to do this in PL/1. Pass in X and get back the array -- but I don't know of any intrinsic functions to do this kind of date manipulation. If you have trouble with the code once you've written it, please let us know. |
|
Back to top |
|
|
PeD
Active User
Joined: 26 Nov 2005 Posts: 459 Location: Belgium
|
|
|
|
Quote: |
No I have an array of size 5 |
?? What is this? |
|
Back to top |
|
|
Garry Carroll
Senior Member
Joined: 08 May 2006 Posts: 1193 Location: Dublin, Ireland
|
|
|
|
Define two arrays, one for standard years and one for leap-years. Each array to contain the last possible date for each month in that year-type.
Now, decide which of these arrays to use based on the YYYY portion of your date in X. Next, use the MM portion of the date in X to determine a starting point in that array.
Populate your array of 5 elements starting at this point.
You'll need to code around year-end, deciding whether next year is leap-year or not....
Hope this helps,
Garry. |
|
Back to top |
|
|
enrico-sorichetti
Superior Member
Joined: 14 Mar 2007 Posts: 10873 Location: italy
|
|
|
|
to make it general...
split the source date in the components, year and month using the substring function and the concatenate function
after this buid an auxiliary array with the char representation of the first day of the neded month + 1
for Your sample 11/15/2008
aux(1) = "20090101"
aux(2) = "20090201"
aux(3) = "20090301"
aux(4) = "20090401"
aux(5) = "20090501"
after this you can build the final array by using the CEEDATE and CEEDAYS
LE functions
last day of month x = CEEDATE(CEEDAYS(first_day_of_month_x_plus_one)-1))
look at the manual for the proper use of CEEDATE family functions |
|
Back to top |
|
|
|