Hi Jim, We're guaranteed that data structures are NOT initialized unless specified by code (INZ keyword, I in position 8, or EVAL as in your example). Variables defined as a result field are initialized, and although I haven't seen a *guarantee* in writing, I do believe that's what the manuals state, and it has always been my experience. Note that numeric and character fields are NOT initialized to their respective *LOVAL values, they are initialized to zeros and blanks respectively. *LOVAL for a 2.0 numeric field would be -99; for a 2-character alpha field, it would be x'0000'. Peter Dow Dow Software Services, Inc. 909 425-0194 voice/fax ----- Original Message ----- From: Jim Langston <firstname.lastname@example.org> To: <MIDRANGE-L@midrange.com> Sent: Monday, October 18, 1999 8:09 AM Subject: Re: last day of month (was MIDRANGE-L Digest V2 #1546) > Coming from various languages, I have learned never to trust the > initialized value of any variable. I understand that this shouldn't be a > problem on the AS/400, but are we guaranteed that all variables will > be initialized to 0 (or their respective *lowval's?) > > I find depending on an initialized value makes code very difficult to > understand an maintain. I would just as well take the 2 nanosecond "hit" > and do an Eval Isodd = 01 just to make my code crystal clear. > > Regards, > > Jim Langston > > email@example.com wrote: > > > >Date: Thu, 14 Oct 1999 09:16:48 -0700 > > >From: Jon Erickson <firstname.lastname@example.org> > > > > > >Correct me if I'm wrong, > > > ... > > > > > >d DS > > >d Isodate d Inz > > >d Isoyyyy 4 0 Overlay(Isodate) > > >d Isomm 2 0 Overlay(Isodate:6) > > > > > >c Eval Isoyyyy = Pyear > > >c Eval Isomm = Pmonth > > >Add 1 month via ADDDUR > > >c AddDur 1:*Months Isodate > > > > > >Subtract 1 day via SUBDUR > > >c SubDur 1:*Days Isodate > > > > Sure, that will work. I was discussing Jon's code to solve the general case of > > getting the last day of the month containing a given date. > > > > Jon's code can be made to run a bit more quickly using overlays (you can get rid > > of the extract by just setting the days part to "01"). Maybe that's a good > > idea, > > maybe not - it seems to me that using overlays makes the code a bit more > > complex. > > > > If you start with numeric year and month as in your example, your way is as good > > as any. > > > > Hmm, I just thought of a way to use numeric year and month input avoiding > > overlays, with a single adddur: > > > > D date s d datfmt(*iso) inz(D'0001-01-31') > > * Find the number of months after 0001-01 for the given year and month > > * E.g. for 0002-03, there are 12 + 1 months > > C eval Pmonth = ((Pyear - 1) * 12) + (Pmonth - 1) > > * Add them to Jan 31, 0001. Month-end adjustment will fix up any results > > * where the number of days in the month is less than 31. > > C adddur Pmonth:*m date > > > > With date operations, the contest should be regarding the number of date > > opcodes, > > not the number of statements. (Date opcodes are very expensive.) > > > > Barbara Morris > > > > +--- > > | This is the Midrange System Mailing List! > > | To submit a new message, send your mail to MIDRANGE-L@midrange.com. > > | To subscribe to this list send email to MIDRANGE-L-SUB@midrange.com. > > | To unsubscribe from this list send email to MIDRANGE-L-UNSUB@midrange.com. > > | Questions should be directed to the list owner/operator: email@example.com > > +--- > > +--- > | This is the Midrange System Mailing List! > | To submit a new message, send your mail to MIDRANGE-L@midrange.com. > | To subscribe to this list send email to MIDRANGE-L-SUB@midrange.com. > | To unsubscribe from this list send email to MIDRANGE-L-UNSUB@midrange.com. > | Questions should be directed to the list owner/operator: firstname.lastname@example.org > +--- __________________________________________________ Do You Yahoo!? Bid and sell for free at http://auctions.yahoo.com +--- | This is the Midrange System Mailing List! | To submit a new message, send your mail to MIDRANGE-L@midrange.com. | To subscribe to this list send email to MIDRANGE-L-SUB@midrange.com. | To unsubscribe from this list send email to MIDRANGE-L-UNSUB@midrange.com. | Questions should be directed to the list owner/operator: email@example.com +---
As an Amazon Associate we earn from qualifying purchases.
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.