That doesn't give the correct results, although removing the comparisons with 0 will improve it's performance - as you say.
-----Original Message----- From: u2-users-boun...@listserver.u2ug.org [mailto:u2-users-boun...@listserver.u2ug.org] On Behalf Of Wjhonson Sent: Wednesday, December 07, 2011 10:29 AM To: u2-users@listserver.u2ug.org Subject: Re: [U2] End of Month date routine This algorithm is redundant and also fails to take into account the Boolean nature of the terms and thus adds extra unneeded op codes in the compare to 0 and compare to 1 steps. Below is the equivalent BEGIN CASE CASE MOD(YEAR,400) ;LEAP.YEAR = TRUE CASE MOD(YEAR,100) ;LEAP.YEAR = FALSE CASE MOD(YEAR,4) ;LEAP.YEAR = TRUE END CASE * Leap year algorithm to detect if today is a leap year EAR = OCONV(TODAY,"DY") F MOD(YEAR,4) = 0 THEN IF MOD(YEAR, 100) = 0 THEN IF MOD(YEAR, 400) = 0 THEN LEAP.YEAR = 1 ELSE LEAP.YEAR = 0 END ELSE LEAP.YEAR = 1 ND ELSE LEAP.YEAR = 0 -----Original Message----- From: Daniel McGrath <dmcgr...@rocketsoftware.com> To: U2 Users List <u2-users@listserver.u2ug.org> Sent: Wed, Dec 7, 2011 8:02 am Subject: Re: [U2] End of Month date routine Perfectly fine except if you need to run this is a very large loop (such as atch processing 100 million records - although it only adds about 1.5 mins on y machine). The modulo method takes (roughly) 54% the execution time of ICONV. This would be ecause of the extra processing ICONV has to do internally as well as the string oncatenation and memory allocation from "Feb 29":YEAR Just something to keep in the back of the mind. * Date Conversion to detect if today is a leap year EAR = OCONV(TODAY,"DY") EST = ICONV("Feb 29":YEAR,"D") EAP.YEAR = (STATUS() = 0) Vs * Leap year algorithm to detect if today is a leap year EAR = OCONV(TODAY,"DY") F MOD(YEAR,4) = 0 THEN IF MOD(YEAR, 100) = 0 THEN IF MOD(YEAR, 400) = 0 THEN LEAP.YEAR = 1 ELSE LEAP.YEAR = 0 END ELSE LEAP.YEAR = 1 ND ELSE LEAP.YEAR = 0 -----Original Message----- rom: u2-users-boun...@listserver.u2ug.org [mailto:u2-users-boun...@listserver.u2ug.org] n Behalf Of David A. Green ent: Wednesday, December 07, 2011 8:25 AM o: 'U2 Users List' ubject: Re: [U2] End of Month date routine YEAR = OCONV(PASS.DATE, "DY") EST = ICONV("Feb 29 ":YEAR, "D") EAP.YEAR = (STATUS() = 0) David A. Green 480) 813-1725 AG Consulting -----Original Message----- rom: u2-users-boun...@listserver.u2ug.org mailto:u2-users-boun...@listserver.u2ug.org] On Behalf Of Daniel McGrath ent: Tuesday, December 06, 2011 4:22 PM o: U2 Users List ubject: Re: [U2] End of Month date routine Leap years are a little more complex than MOD(YEAR,4) >From http://en.wikipedia.org/wiki/Leap_years#Algorithm if year modulo 4 is 0 then if year modulo 100 is 0 then if year modulo 400 is 0 then is_leap_year else not_leap_year else is_leap_year lse not_leap_year -----Original Message----- rom: u2-users-boun...@listserver.u2ug.org mailto:u2-users-boun...@listserver.u2ug.org] On Behalf Of John Hester ent: Tuesday, December 06, 2011 4:16 PM o: U2 Users List ubject: Re: [U2] End of Month date routine Your method is also the way I've always done it, but an alternate method just ame to mind: MONTH = OCONV(DATE, 'DM') EAR = OCONV(DATE, 'D Y[Z4]') EAP = MOD(YEAR, 4) = 0 ONTHS = '' ONTHS<1> = 31 ONTHS<2> = 28 + LEAP ONTHS<3> = 31 ONTHS<4> = 30 ONTHS<5> = 31 ONTHS<6> = 30 ONTHS<7> = 31 ONTHS<8> = 31 ONTHS<9> = 30 ONTHS<10> = 31 ONTHS<11> = 30 ONTHS<12> = 31 AST.DAY = MONTHS<MONTH> Not very concise, but you can tell at a glance how many days your dealing with. ----Original Message----- rom: u2-users-boun...@listserver.u2ug.org mailto:u2-users-boun...@listserver.u2ug.org] On Behalf Of Holt, Jake ent: Tuesday, December 06, 2011 2:34 PM o: U2 Users List ubject: Re: [U2] End of Month date routine Someone has probably already suggested one like this but I use: DATE = ICONV("2-11-11",'D') ONTH = OCONV(DATE,"DM") EAR = OCONV(DATE,"DY") ONTH += 1 F MONTH > 12 THEN ONTH = 1 EAR += 1 ND LAST.DAY = ICONV(MONTH:"/1/":YEAR,'D')-1 _______________________________________________ 2-Users mailing list 2-us...@listserver.u2ug.org ttp://listserver.u2ug.org/mailman/listinfo/u2-users ______________________________________________ 2-Users mailing list 2-us...@listserver.u2ug.org ttp://listserver.u2ug.org/mailman/listinfo/u2-users _______________________________________________ 2-Users mailing list 2-us...@listserver.u2ug.org ttp://listserver.u2ug.org/mailman/listinfo/u2-users ______________________________________________ 2-Users mailing list 2-us...@listserver.u2ug.org ttp://listserver.u2ug.org/mailman/listinfo/u2-users _______________________________________________ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users _______________________________________________ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users