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



Sharon,

In general, I wouldn't think that the mere existence of 80 logicals would
hit CPU particularly hard, as long as the program only opens one of them
anyway. Having Select/Omit on the selected logical could hurt a bit, but
CPU-wise, I'd suspect something else is going on. Is there any way you can
add in a few debug statements to the existing program, to write out to a
spooled file with a timestamp, so you can see exactly where the performance
hit is occurring.

The above paragraph being said, as far as the mere existence of the 80
logicals, you should certainly look into whether they are sharing any access
paths between them - even if you eventually decide that you need to keep all
80, you might be able to improve performance by deleting some of them and
then recreating them in an order that allows them to share an underlying
access path.

Finally, if the amount of data in this file isn't too big (but I suspect it
probably is), then you could load the records into an array and then
dynamically sort that (using SORTA or qsort() or whatever). This might work
well if you use some 'general' sorting criteria initially to drop the number
of records to a level where they could be loaded into an array.

Rory

p.s. It's just occurred to me - I am assuming that your program
*isn't*opening all these 80 logicals at once, but that it is doing an
explicit OPEN
only when it's chosen the correct one?

On Fri, Jul 29, 2011 at 6:55 AM, Morgan, Paul <Paul.Morgan@xxxxxxxxxxx>wrote:

Sharon,

Use SQL as others have recommended but you might not be able to get rid of
all those logicals. SQL would still need them depending on your selection
and sorting.

I'd make sure all those logicals don't do any select/omits so SQL can take
full advantage of them.

See if some of those logicals are redundant. If you have a logical keyed
on fielda and a logical keyed on fielda and fieldb you could delete the
redundant logical with the shorter key.

If you are doing some sort of summarization and your data doesn't change
that much you could pre load a work file with the summaries then run your
queries against the summarized work file instead of the full data set.

Do they really select on all those fields and other criteria? Do they
really select on some fields then refine their selection on other fields and
criteria? I'd think about adding some logging to see what selection and
other criteria is actually being used and how they 'drill down'.

Paul Morgan

Principal Programmer Analyst
IT Supply Chain/Replenishment

-----Original Message-----
From: rpg400-l-bounces@xxxxxxxxxxxx [mailto:rpg400-l-bounces@xxxxxxxxxxxx]
On Behalf Of Sharon Strippoli
Sent: Friday, July 29, 2011 8:11 AM
To: rpg400-l@xxxxxxxxxxxx
Subject: Reduce large amount of logicals in SUBFL pgm,take in another
direction

Good morning,

new job and given the assignment to revamp a screen pgm that the whole
company uses to make it more efficient, less CPU.

There are 12 different fields a user can fill in to search for the info
they
want. Plus there are fields they can check off for other criteria. Total
about 25 different fields on the screen.

Currently, there are about 80 logicals that are used for all the different
combinations of fields to search on. The first SUBR of the pgm does
various
validations against all the possible fields, then depending on that result
does a SETLL for the appropriate logical. Then a second SUBR checks the
fields again and depending on that does a READ, READE or READP against the
logical that was staged.

They want to select the data the first time through to a type of work file,
then as more information is filled in by the user, query or read against
that work file, drilling down further for each field that is populated by
the user. They want to reduce CPU and the amount of logicals.
I was thinking of doing a query against the work file as it gets drilled
down.

Wondering how the super users that use this forum would take this on. Any
input would be appreciated.


Thanks.


Sharon





Sharon Strippoli
Pilot Freight Services
IT Dept.
Phone (610) 891-8113
sharonstrippoli@xxxxxxxxxxxxxxxxx
http://www.pilotdelivers.com
--
This is the RPG programming on the IBM i / System i (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 IBM i / System i (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.