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


  • Subject: Re: performance loading a subfile
  • From: Scott Klement <klemscot@xxxxxxxxxxxx>
  • Date: Wed, 13 Sep 2000 10:10:16 -0500 (CDT)


HI Booth,

On Wed, 13 Sep 2000 booth@martinvt.com wrote:

> Here's the scenario:
> 
> A large file is being loaded a page at a time, 10 records per page.  There 
> is a filter set for one of the fields.
> 
> With no filter set the subfile loads quickly and happily.  However if the 
> user chooses to filter out  99.5% of the records then loading the 10 
> records may take thousands of reads to find 10 that pass.  In this case 
> the performance is dreadful.  The selection is worth it so we wish to do 
> it but is there some way to display records as we go, or choose a line 
> before the whole subfile page is full? 
> 
> (I know how to set a progress bar but that isn't really the answer in this 
> scenario.)
> 

You'll get lots of people giving you tips on how to optimize your record 
selection, so I won't waste my time giving you a discussion of that :)

If you want to allow the user to make a selection in the subfile before
it is finished loading, you might try a method like this:

    1)  Place the FRCDTA and INVITE DDS keywords in the SFLCTL record.
    2)  Create a data queue.
    3)  Use the OVRDSPF comamnd to attach the data queue to the display
           file.
    4)  In the loop where you load your subfile, use the RPG "WRITE" 
           opcode to display the subfile's control record.   Because of
           the FRCDTA keyword, the subfile will display immediately.
           Because of the INVITE keyword, the user will be able to 
           key things into the screen.
    5)  In the loop where you load your subfile, check the data queue,
           to see if there is an entry.  (You can set a timeout of
           "immediately" on the read data queue command, so your
           program doesnt have to wait for an entry.)
    6)  If there WAS an entry on the data queue, it means the user
           pressed enter or a function key on the screen.  Stop loading
           the subfile, and process the selection they made.
    7)  If theres no entry on the subfile (or the user made some sort of
           keying error) then continue loading the subfile.

The only frustrating thing about this scenario is that each time you
re-write the control record of the subfile, any input the user has made
prior to hitting enter or a function key will be lost.

Therefore, it might be convienient to have something like a "F10=Stop
Loading" where the function key is used just to stop your program from
loading more records.


HTH


+---
| This is the RPG/400 Mailing List!
| To submit a new message, send your mail to RPG400-L@midrange.com.
| To subscribe to this list send email to RPG400-L-SUB@midrange.com.
| To unsubscribe from this list send email to RPG400-L-UNSUB@midrange.com.
| Questions should be directed to the list owner/operator: david@midrange.com
+---

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.