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



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

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.