|
I thought about this. Unfortunately, the sequence of events could happen like this: 1) The service program is called, and the next seq# is 5, and gets returned to the caller 2) The user, on the phone with an irate customer, presses enter on a memo record 3) The program performs the write op *** dup key If I were going to (and I might) write this into a service program, I would pass the record structure to the service program, and have the service program determine the seq#, do a monitored loop, like the one Alan built. Then it could return a success code... Although the only failure in this situation might be if the account has more memos than what a 5P 0 sequence# can hold. On Mon, 31 Jan 2005 11:14:26 -0600, Lim Hock-Chai <Lim.Hock-Chai@xxxxxxxxxxxxxxx> wrote: > It would be nice if you can create a service program or a sub-procedure to > get the next seq#: > > The code would look something like this: > > Dou not %error(myFile) > eval MO.Mmseq# = getNextMmSeq#(CI.Family# :CI.Member#) > Write Mmorec MO > enddo > > the getNextMnSeq#() sub-procedure would declare a local datastructure that > that the readPE Mmemo will read into and return the myStruct.Mnmseq#+1 > > > -----Original Message----- > From: rpg400-l-bounces@xxxxxxxxxxxx > > [mailto:rpg400-l-bounces@xxxxxxxxxxxx]On Behalf Of Tony Carolla > Sent: Monday, January 31, 2005 10:57 AM > To: RPG programming on the AS400 / iSeries > Subject: Re: Suggested technique > > Hi Alan. Thanks again for the tip. > > I always grapple with the idea of not using iter and leave also. I > don't see how it makes the code clearer to the reader, by eliminating > these ops. I took your example, and eliminated the iter, as follows: > > Dou iSay; > iSay=*On; > > // Find next memo seq# for member > SetGT(E) (CI.Family#:CI.Member#) Mmemo_I; > ReadPE(E) (CI.Family#:CI.Member#) Mmemo_I MI; > > If %Found(Mmemo_I); > MO.Mmseq#=MI.Mmseq#+1; > Else; > MO.Mmseq#=1; > EndIf; > > Monitor; > Write Mmorec MO; > > On-Error *File; > iSay=*Off; > EndMon; > EndDo; > > Now this is a very simple loop, and doesn't even transcend a page, but > in general, while perusing the code, you have to look to the beginning > of the loop to determine the condition of the loop. If using iter, > you also have to peruse to the top of the loop anyways, so what's the > diff? > > -- > "Enter any 11-digit prime number to continue..." > -- > 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. > > -- "Enter any 11-digit prime number to continue..."
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2025 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.