|
WOW! Scott you shine again. I have never thought of doing something like this. Once again you come up with a unique and practical solution. I have an application that can use this "10=Stop Processing" function. It has nothing to do with subfiles but does a lot of summarization. Christopher K. Bipes mailto:ChrisB@Cross-Check.com Sr. Programmer/Analyst mailto:Chris_Bipes@Yahoo.com CrossCheck, Inc. http://www.cross-check.com 6119 State Farm Drive Phone: 707 586-0551 x 1102 Rohnert Park CA 94928 Fax: 707 586-1884 If consistency is the hobgoblin of little minds, only geniuses work here. Karen Herbelin - Readers Digest 3/2000 -----Original Message----- From: Scott Klement [mailto:klemscot@klements.com] Sent: Wednesday, September 13, 2000 8:10 AM To: RPG400-L@midrange.com Subject: Re: performance loading a subfile 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 +--- +--- | 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 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.