× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



Oops.  You are right.  Forgot to add one month on subdt.  Thanks for the
correction.  
Also %month(1) should be %months(1)  

-----Original Message-----
From: rpg400-l-bounces@xxxxxxxxxxxx
[mailto:rpg400-l-bounces@xxxxxxxxxxxx] On Behalf Of HauserSSS
Sent: Monday, March 27, 2006 11:13 PM
To: RPG programming on the AS400 / iSeries
Subject: AW: Bug in IBM Date Routies %month

Hi Lim,

>>date1 = date1 + %month(1) - %days(%subdt(date1:*days))

this formula is not correct either.
Try to determine the end of month for January, 30th!

The correct formula is:
Date1 = Date1 + %Month(1) - %Days(%SubDt(Date1 + %Month(1)): *Days))

Note: In Release V5R4M0 you also can use the SQL scalar function
LAST_DAY to determine the end of month:
EXEC SQL  Set :NewDate = LAST_DAY(:MyDate);

Mit freundlichen Gru?en / Best regards

Birgitta

"Shoot for the moon, even if you miss, you'll land among the stars."
(Les Brown)

-----Ursprungliche Nachricht-----
Von: rpg400-l-bounces@xxxxxxxxxxxx
[mailto:rpg400-l-bounces@xxxxxxxxxxxx]Im Auftrag von Lim Hock-Chai
Gesendet: Dienstag, 28. Marz 2006 00:53
An: RPG programming on the AS400 / iSeries
Betreff: RE: Bug in IBM Date Routies %month


If you need the date to always be the month end date, you can simply do
below:
date1 = date1 + %month(1) - %days(%subdt(date1:*days))

I don't think you can do the samething in java.  Not on one statemnet
anyway.  I try to do it in two separate statement and get the same
result 3/28/06:
package myTest;

import java.util.*;

public class MyTest {

        public static void main(String[] args) {

                GregorianCalendar myDate = new GregorianCalendar(2006,
0, 31,0,0,0);
                System.out.println(
                        "Year="+myDate.get(Calendar.YEAR)+';'+
                        "Month="+myDate.get(Calendar.MONTH)+';'+
                        "Day="+myDate.get(Calendar.DATE));

                myDate.add(Calendar.MONTH, 1);
                System.out.println(
                        "Year="+myDate.get(Calendar.YEAR)+';'+
                        "Month="+myDate.get(Calendar.MONTH)+';'+
                        "Day="+myDate.get(Calendar.DATE));

                myDate.add(Calendar.MONTH, 1);
                System.out.println(
                        "Year="+myDate.get(Calendar.YEAR)+';'+
                        "Month="+myDate.get(Calendar.MONTH)+';'+
                        "Day="+myDate.get(Calendar.DATE));
                System.exit(0);
        }
}

Below if the result when run above:
Year=2006;Month=0;Day=31
Year=2006;Month=1;Day=28
Year=2006;Month=2;Day=28

-----Original Message-----
From: rpg400-l-bounces@xxxxxxxxxxxx
[mailto:rpg400-l-bounces@xxxxxxxxxxxx] On Behalf Of praveen gunda
Sent: Monday, March 27, 2006 3:36 PM
To: RPG programming on the AS400 / iSeries
Subject: Re: Bug in IBM Date Routies %month

I think IBM should have taken care of this, similar to how they have
taken care of this.

2006-01-31 + %months(1) = 2006--2-28

Also,
2006-01-31 + %months(2) should be consistent with 2006-01-31 +
%months(1) +
%months(1)

Adding 2 months or adding 1 month + 1 months should be same right?

I write a lot in Java, and have never came across such a problem.



On 3/27/06, Michael_Schutte@xxxxxxxxxxxx <Michael_Schutte@xxxxxxxxxxxx>
wrote:
>
> You get the same issue when you do it with the date of 3/31/2006 
> instead of
> 1/31/2006
>
> Michael Schutte
> Work 614-492-7419
> email  michael_schutte@xxxxxxxxxxxx
>
>
>
>              "Peter Dow (ML)"
>              <maillist@dowsoft
>              ware.com>
To
>              Sent by:                  RPG programming on the AS400 /
>              rpg400-l-bounces+         iSeries <rpg400-l@xxxxxxxxxxxx>
>              michael_schutte=b
cc
>              obevans.com@midra
>              nge.com
Subject
>                                        Re: Bug in IBM Date Routies 
> %month
>
>              03/27/2006 04:23
>              PM
>
>
>              Please respond to
>               RPG programming
>               on the AS400 /
>                   iSeries
>              <rpg400-l@midrang
>                   e.com>
>
>
>
>
>
>
> Hi Praveen,
>
> Actually, that's not a bug, it's a problem with intermediate values.
> When you add 1 month to 2006-01-31, what do you get?  2006-02-31 is 
> not a valid date; instead you get 2006-02-28 (see the manual).  When 
> you then add 1 month to that, you get 2006-03-28.  Date arithmetic is 
> tricky...
>
> hth,
>
> Peter Dow
> Dow Software Services, Inc.
> 909 793-9050
>
> praveen gunda wrote:
> > I found the following bug with IBM Date rountines... Was there a fix

> > for this?
> >
> >
> >      Ddate1            s               d   datfmt(*ymd)
> >       /Free
> >        cymd = 20060131;
> >        date1 = %date(cymd:*ISO);
> >        dsply %char( (date1+%months(2)):*iso );
> >        dsply %char( (date1+%months(1)+%months(1)) :*iso);
> >      /End-Free
> >
> >
> > Heres' the output:
> >
> >  DSPLY  2006-03-31
> >  DSPLY  2006-03-28
> >
> > Shouldn't it be 2006-03-31 both the times.
> >
>
> --
> This is the RPG programming on the AS400 / iSeries (RPG400-L) mailing 
> list To post a message email: RPG400-L@xxxxxxxxxxxx To subscribe, 
> unsubscribe, or change list options,
> visit: http://lists.midrange.com/mailman/listinfo/rpg400-l
> or email: RPG400-L-request@xxxxxxxxxxxx Before posting, please take a 
> moment to review the archives at http://archive.midrange.com/rpg400-l.
>
>
>
> --
> This is the RPG programming on the AS400 / iSeries (RPG400-L) mailing 
> list To post a message email: RPG400-L@xxxxxxxxxxxx To subscribe, 
> unsubscribe, or change list options,
> visit: http://lists.midrange.com/mailman/listinfo/rpg400-l
> or email: RPG400-L-request@xxxxxxxxxxxx Before posting, please take a 
> moment to review the archives at http://archive.midrange.com/rpg400-l.
>
>
--
This is the RPG programming on the AS400 / iSeries (RPG400-L) mailing
list To post a message email: RPG400-L@xxxxxxxxxxxx To subscribe,
unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives at
http://archive.midrange.com/rpg400-l.


--
This is the RPG programming on the AS400 / iSeries (RPG400-L) mailing
list To post a message email: RPG400-L@xxxxxxxxxxxx To subscribe,
unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives at
http://archive.midrange.com/rpg400-l.



--
This is the RPG programming on the AS400 / iSeries (RPG400-L) mailing
list To post a message email: RPG400-L@xxxxxxxxxxxx To subscribe,
unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives at
http://archive.midrange.com/rpg400-l.



As an Amazon Associate we earn from qualifying purchases.

This thread ...

Follow-Ups:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.