One thought. It seems I remember that using VAR += 1 is significantly
faster than VAR = VAR + 1. It's not much, but maybe it will help.

Karl

<quote who="Mark Johnson">
> Here's a doozy.
>
> Thanks for the previous suggestion of using REMOVE instead of the <>
> extractions. That's working very well.
>
> New problem.
>
> One client's application is written in The Programmer's Helper (TPH) which
> MATREADS and has EQUATES assigning variables like INVNO.TABLE TO CUST(40)
> etc.
>
> The program is written with INVNO.TABLE<1,X> style extracts everywhere.
> There
> are probably 15 mv'd fields with the suffix TABLE and their mv counters
> are in
> sync.
>
> Prior to using REMOVE (it had an issue on D3), I MATREAD in a BIG(300000)
> array which breezed through the high item count of 155,000 records.(REMOVE
> took 8 seconds, BIG took around 12 and <> took over 9 minutes).
>
> Here's the rub. This is a Cash Reciept application where the BIG array is
> one
> customer's invoices. The load-in process jogs through the BIG array and
> for
> those items with a non-zero balance, it creates these 15 TABLE variables.
> Trouble is, if there's 155,000 total records for this 1 customer, 100,000
> may
> have a balance of zero leaving 50,000 to be handled in the application.
>
> So while REMOVE is a great way to extract from BIG as a dynamic array and
> MATREAD is great for extracting from a DIM array, what would be the best
> way
> to build these 15 separately named TABLE variables. The original program
> (sans
> REMOVE) looked like this:
>
> C=DCOUNT(BIG,CHAR(254))
> FOR I=1 TO C
>     ID=BIG<I>
>     READV BAL FROM ARFILE, ID, 10 THEN
>         IF BAL # 0 THEN
>             INV.TABLE<1,-1>=ID
>             AAA.TABLE<1,-1>=SOMETHING ELSE
>             BBB.TABLE<1,-1>=SOMETHING ELSE
>             CCC.TABLE<1,-1>=SOMETHING ELSE
>             MMM.TABLE<1,-1>=SOMETHING ELSE
>         END
>     END
> NEXT I
>
> So while REMOVE is a great extractor for these 150,000 fields, what is a
> great
> inserter for these 15 TABLE variables. In essence, the BAL # 0 is 50,000
> records.
>
> I tried
> MV=MV+1
> INV.TABLE<1,MV>=ID
> etc
>
> and got a minor improvement.
>
> I tried
> INV.TABLE:[EMAIL PROTECTED]:SOMETHING ELSE
> etc
>
> and got a slightly better improvement.
>
> In either case, you could see the progressive (exponential) delay as it
> performs these 50,000 (x 15) TABLE actions.
>
> I tried using my DIM BIG(300000) where the dim element number was the
> insertable MV and I used the dynamic array concept on each dimensioned
> array
> element. Thus:
>
> MV=0 ; L=0
> LOOP
>     REMOVE ID FROM XREF AT L SETTING D
>     READV BAL FROM ARFILE, ID, 10 THEN
>         IF BAL # 0 THEN
>             MV=MV+1
>             BIG(MV)<1>=ID
>             BIG(MV)<2>=SOMETHING ELSE
>             BIG(MV)<3>=SOMETHING ELSE
>             BIG(MV)<15>=SOMETHING ELSE
>         END
>     END
> UNTIL D=0 DO ; REPEAT
>
> and it took only 8 seconds. Cool. So now I have a dimensioned BIG array
> with
> 50,000 elements each having 15 attributes.
>
> Because the infidel TABLE variables are scattered throughout this
> generated
> 1,500 line program, I don't want to search and replace them all with their
> BIG(MV)<12> equivilents unless I really have to. Eventually, I have to
> take
> these mv'd TABLE variables and writev (sic) them onto the data file.
>
> MATBUILD doesn't seem to work with 2 dimensioned dimensioned arrays nor
> with
> elements containing attributes or values. It only likes the elements being
> simple variables.
>
> If this were a report program I would kick it off on a phantom and be done
> with it. Since it's a user oriented Cash Receipts program, the user
> literally
> waits 5-9 minutes while a single customer 'loads'. Of course, the larger
> more
> important customers are handled more frequently, thus more headaches.
>
> So the question is whether there is an INSERT or append function with the
> magic of REMOVE.
>
> Thanks for any insights.
> Mark Johnson
> -------
> u2-users mailing list
> [email protected]
> To unsubscribe please visit http://listserver.u2ug.org/
>


-- 
Karl L. Pearson
Director of IT,
ATS Industrial Supply
Direct: 801-978-4429
Toll-free: 800-789-9300 1,29
Fax: 801-972-3888
http://www.atsindustrial.com
[EMAIL PROTECTED]
-------
u2-users mailing list
[email protected]
To unsubscribe please visit http://listserver.u2ug.org/

Reply via email to