|
Single page load will be a good option, but still If you want to go ahead with the existing program, then some work is surely required. You can check for RRN 9999 and when this condition is met, break the flow to a new routine. Where in you shall be clearing the subfile and writing your further records to it as usual. I think making use of the keyword SFLCSRRN (or any other keyword) we should be able to retrieve the RRN number. The rrn value retrieved from this keyword will decide when to load the first 9000 odd records. When rrn returned is 1, you need to Clear the Subfile again and load the first lot. And SFLRCDNBR is also required as page up from the 2nd load should display the 9999th record. So, as I said this needs quite some work. regards Srinath -----Original Message----- From: MURALI DHAR [SMTP:nmuralidhar@rediffmail.com] Sent: Thursday, October 10, 2002 3:08 PM To: rpg400-l@midrange.com Subject: Load all subfile I have a requirment where iam using Loadall subfile...The no of records Iam having right now is around 9000(less than9999)...Now I have to add another 4thousands of records to this...I dont like to reprogram it by using single page subfile...How can i do this with Loadall subfile?Am I going to loose any records if i add 4 thousand records to the already existing 9000 records....I cant reprogram it....I ve to do with Load all only....Can u please help giving answer to this.... Best Regards Murali. On Thu, 10 Oct 2002 Scott Klement wrote : > >On Wed, 9 Oct 2002, Steve Richter wrote: > > > > Its just a hunch of mine. C relies on null term strings so I >am speculating > > that ILE handles them efficiently. > > > >Okay, I wrote & ran some benchmarks on these things. To my >surprise, both >fixed-length and null-terminated strings performed SIGNIFICANTLY >better >than varying. About twice as fast! I hope Hans or Barbara can >explain >why... > >This was done on my company's iSeries, 9406-270(2248) at V4R5. >I was the only person online / only job running. >I did not enable any special optimization for either compiler. >All the strings I passed were 32000 bytes long. > >Here's the results: > >Description Iters per Second >-------------------------------- ----------------- >ILE RPG fixed-len by value 4167 >ILE RPG fixed-len by reference 416667 >ILE RPG null-terminated by value 4167 >ILE RPG null-terminated by reference 416667 >ILE RPG varying by value 2083 >ILE RPG varying by reference 217391 >ILE C null-terminated by value 8333 >ILE C null-terminated by reference 1666666 > > >Here are the programs that I used to perform the test. Note >that I >assigned a 'x' to the first byte in each string in each function >just >to make sure the compiler didn't "remove" the routine during some >sort >of optimization. > > H DFTACTGRP(*NO) ACTGRP(*NEW) > > D by_value PR > D data 32000A value > D by_reference PR > D data 32000A > D v_by_value PR > D data 32000A value varying > D v_by_reference PR > D data 32000A varying > D n_by_value PR > D data 32000A value > D n_by_reference PR > D data 32000A > > D data S 32000A > D data2 S 32000A varying > D start S Z > D end S Z > D diff S 10I 0 > D msg S 50A > D x S 10I 0 > > c eval data = 'This is not a >null-terminated '+ > c 'string.' > c eval data2= 'This is not a >null-terminated '+ > c 'string.' > > c time start > > c for x = 1 to 50000 > c callp by_value(data) > c endfor > > c time end > > c end subdur start diff:*seconds > c eval msg = 'by-value ' + >%editc(diff:'Z') > c msg dsply > > c time start > > c for x = 1 to 5000000 > c callp by_reference(data) > c endfor > > c time end > > c end subdur start diff:*seconds > c eval msg = 'by-ref ' + >%editc(diff:'Z') > c msg dsply > > c time start > > c for x = 1 to 50000 > c callp v_by_value(data2) > c endfor > > c time end > > c end subdur start diff:*seconds > c eval msg = 'v-by-value ' + >%editc(diff:'Z') > c msg dsply > > c time start > > c for x = 1 to 5000000 > c callp v_by_reference(data2) > c endfor > > > c time end > > c end subdur start diff:*seconds > c eval msg = 'v-by-ref ' + >%editc(diff:'Z') > c dsply msg > > c eval data = 'This is now a >null-terminated '+ > c 'string.' + X'00' > > c time start > > c for x = 1 to 50000 > c callp n_by_value(data) > c endfor > > c time end > > c end subdur start diff:*seconds > c eval msg = 'n-by-value ' + >%editc(diff:'Z') > c msg dsply > > c time start > > c for x = 1 to 5000000 > c callp n_by_reference(data) > c endfor > > c time end > > c end subdur start diff:*seconds > c eval msg = 'n-by-ref ' + >%editc(diff:'Z') > c dsply msg > > c eval *inlr = *on > > P by_value B > D by_value PI > D data 32000A value > c eval %subst(data:1:1) = 'x' > P E > > > P by_reference B > D by_reference PI > D data 32000A > c eval %subst(data:1:1) = 'x' > P E > > > P v_by_value B > D v_by_value PI > D data 32000A value varying > c eval %subst(data:1:1) = 'x' > P E > > > P v_by_reference B > D v_by_reference PI > D data 32000A varying > c eval %subst(data:1:1) = 'x' > P E > > > P n_by_value B > D n_by_value PI > D data 32000A value > c eval %subst(data:1:1) = 'x' > P E > > > P n_by_reference B > D n_by_reference PI > D data 32000A > c eval %subst(data:1:1) = 'x' > P E > > > >#include <stdio.h> >#include <string.h> >#include <time.h> > >struct my_data { > char string[32000]; >}; > >void by_value(struct my_data d); >void by_reference(char *str); > >int main(void) { > struct my_data dta; > time_t start, end; > int x; > > strcpy(dta.string, "This is now a null-terminated >string."); > > time(&start); > > for (x=0; x<50000; x++) > by_value(dta); > > time(&end); > > printf("By-value total time %f seconds\n", >difftime(end,start)); > > time(&start); > > for (x=0; x<5000000; x++) > by_reference(dta.string); > > time(&end); > > printf("By-reference total time %f seconds\n", > difftime(end,start)); > > > return 0; >} > >void by_value(struct my_data d) { > d.string[0] = 'x'; >} > >void by_reference(char *str) { > str[0] = 'x'; >} > >_______________________________________________ >This is the RPG programming on the AS400 / iSeries (RPG400-L) >mailing list >To post a message email: RPG400-L@midrange.com >To subscribe, unsubscribe, or change list options, >visit: http://lists.midrange.com/cgi-bin/listinfo/rpg400-l >or email: RPG400-L-request@midrange.com >Before posting, please take a moment to review the archives >at http://archive.midrange.com/rpg400-l. > __________________________________________________________ Give your Company an email address like ravi @ ravi-exports.com. Sign up for Rediffmail Pro today! Know more. http://www.rediffmailpro.com/signup/ _______________________________________________ This is the RPG programming on the AS400 / iSeries (RPG400-L) mailing list To post a message email: RPG400-L@midrange.com To subscribe, unsubscribe, or change list options, visit: http://lists.midrange.com/cgi-bin/listinfo/rpg400-l or email: RPG400-L-request@midrange.com 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 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.