× 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.



Looks like my example led the group in a wrong way.

1st thing I was not trying to calculate the end of the month.

my simple question is:

1 + 1 + 1 => 3 <= 2  + 1

but

Date + %months(2)  is not equal to Date + %months(1) + %months(1)

Here date need not always be the end of month.

Eg: 2006-01-30 is not End Of Month

2006-01-30 + %months(2) = 2006-03-31
but 2006-01-30 + %months(1) + %months(1) is not equal to 2006-03-31

--Praveen




On 3/28/06, Lim Hock-Chai <Lim.Hock-Chai@xxxxxxxxxxxxxxx> wrote:
>
> 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.
>
>
> --
> 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:
Replies:

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.