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



My approach is simple Bob. If it only happens once then don’t include it in a control loop. Particularly if it is in thew category of initialization (i.e. could easily have been in INZSR.)


Jon Paris

www.partner400.com
www.SystemiDeveloper.com

On Apr 21, 2015, at 11:07 AM, Bob Cagle <bcagle@xxxxxxxxxxx> wrote:

Jon, I did think of moving the check for initialize last, but I don't think it's as easy to read. Moving it to before the loop is an easy enough change though; makes sense.

Nathan: Not sure I understand the *SRVPGM suggestion for screen I/O. I agree with Chris, wouldn't that be overkill for just one screen? The idea of a service program is for it to be used in multiple places, why would I create a service program that's specific to this one display file that I'm only ever going to use from this specific controller?

Note: I do understand the thinking behind a service program for the database: encapsulating business logic, etc.

(p.s. It's a whole other discussion, but I don't understand why some people are so opposed to using special characters (@, #, $) in variable names?)

Thanks

Bob Cagle
IT Manager
Lynk, Inc.

-----Original Message-----
From: RPG400-L [mailto:rpg400-l-bounces@xxxxxxxxxxxx] On Behalf Of Jon Paris
Sent: Tuesday, April 21, 2015 7:46 AM
To: Rpg400 Rpg400-L
Subject: Re: Interactive logic-style question

The only thing I would add to Nathan's approach (and I would have said the same thing about your original RPG III version) is that if performance is an issue then always test the initialize last.

Personally I would also have called the init routine before I began the loop and have it set the first action.


Jon Paris

www.partner400.com
www.SystemiDeveloper.com

On Apr 20, 2015, at 8:27 PM, Nathan Andelin <nandelin@xxxxxxxxx> wrote:

Bob,

As far as style is concerned, my only objection would be the use of
the # character as a variable prefix. But I understand that each shop
has their own naming conventions, and I don't expect others to have the same as mine.

As far as structure is concerned, it's well formed; much better than a
lot of alternatives.

Regarding performance, we're talking very few microseconds to evaluate
a "when" condition. Contrast that with most web application
environments which "route" browser requests to appropriate "servers",
whether they be Java servlets, or scripts running under interpreted
environments, you will find a comparatively HUGE amount of overhead in the latter.

Your structure for dispatching requests based on #WrkMode could be
viewed as the "controller", following a Model/View/Controller design
pattern. Bind your controller to a *SRVPGM which implements procedures
to handle screen I/O, then bind that *SRVPGM to another *SRVPGM which
implements database I/O. Now you have an application that implements a
very maintainable MVC design pattern.

Nathan.

--
This is the RPG programming on the IBM i (AS/400 and 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 ...

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.