Or use dimensioned arrays instead of dynamic arrays. John
-----Original Message----- From: u2-users-boun...@listserver.u2ug.org [mailto:u2-users-boun...@listserver.u2ug.org] On Behalf Of Dave Laansma Sent: Monday, February 11, 2013 8:43 AM To: 'U2 Users List' Subject: Re: [U2] : Evaluating DCOUNT Jeff, My understanding is part of our problem is the fact that my multivalues are at position <200> and each time it has to count how many multivalues there are, it has to skim through the first <200> attributes, multivalues and subvalues to get to <200> before it even starts counting. So it's not so much of an issue of how many multivalues there are in <200>, it's everything in 1-199 as well. Which in turn suggests that, when designing files, it may be a good idea to cluster your multivalue attributes near the beginning of your records. But that's another discussion. Sincerely, David Laansma Hubbard Supply Co. Direct: 810-342-7143 Office: 810-234-8681 Fax: 810-234-6142 www.hubbardsupply.com "Delivering Products, Services and Innovative Solutions" -----Original Message----- From: u2-users-boun...@listserver.u2ug.org [mailto:u2-users-boun...@listserver.u2ug.org] On Behalf Of Jeffrey Butera Sent: Monday, February 11, 2013 8:35 AM To: U2 Users List Cc: U2 Users List Subject: Re: [U2] : Evaluating DCOUNT David is correct (re: performance). Most of our app here have MV lists under 40-50 so it's not a huge issue. If you app has hundreds+ this could be a big challenge. Jeff Butera -- A tree falls the way it leans. Be careful which way you lean. The Lorax On Feb 11, 2013, at 8:30 AM, Dave Laansma <dlaan...@hubbardsupply.com> wrote: > I would HOPE that it evaluates it each time since the size of <array> could > change within the loop. > > Personally if the size of <array> is relatively small, DCOUNT is alright. > However I've found REMOVE to be EXTREMELY faster and therefore use it > whenever possible, even on small <arrays>. > > For example, we have two files, a 'header' and 'detail' file. The keys to the > 'detail' file are stored in attribute <200> of the header file. So I'll pull > the keys out of the header record, such: > > LINE.KEYS = HEADER.REC<200> > D1 = "" > LOOP UNTIL D1 = 0 > REMOVE LINE.KEY FROM LINE.KEYS SETTING D1 <loop statements> REPEAT > > As opposed to: > > FOR V1 = 1 TO DCOUNT(HEADER.REC<200>,@VM) LINE.KEY = > HEADER.REC<200,V1> <loop statements> NEXT V1 > > Based on historical dialogs on this subject on this forum, I have seen an > improvement in overall performance. > > Sincerely, > David Laansma > Hubbard Supply Co. > Direct: 810-342-7143 > Office: 810-234-8681 > Fax: 810-234-6142 > www.hubbardsupply.com > "Delivering Products, Services and Innovative Solutions" > > -----Original Message----- > From: u2-users-boun...@listserver.u2ug.org > [mailto:u2-users-boun...@listserver.u2ug.org] On Behalf Of Jeffrey > Butera > Sent: Monday, February 11, 2013 7:55 AM > To: u2-users@listserver.u2ug.org > Subject: Re: [U2] : Evaluating DCOUNT > > On 02/11/2013 12:14 AM, Peter Cheney wrote: >> Hi Everyone, >> >> Does a DCOUNT get evaluated again for each iteration of a loop? >> Or is UniVerse these days intelligent enough to keep track of what's going >> on? >> >> e.g. >> >> for i = 1 to dcount(array,@fm) >> *commands here >> next i >> >> versus >> >> totalattributes = dcount(array,@fm) >> for i = 1 to totalattributes >> *commands here >> next i >> >> Apart from readability and perhaps easier debugging is there an actual >> internal difference? >> I know it was an issue on older pick releases but I cannot remember if it >> ever affected UV? > > Not sure about universe, but unidata defintely checks the DCOUNT for each > iteration. This produces 4 (not 2): > > > CT=0 > X=45:@VM:58 > FOR I=1 TO DCOUNT(X,@VM) > CT+=1 > IF I<=2 THEN > X<1,-1> = 99 > END > NEXT I > CRT CT > > > -- > Jeffrey Butera, PhD > Associate Director for Application and Web Services Information > Technology Hampshire College > 413-559-5556 > > _______________________________________________ > U2-Users mailing list > U2-Users@listserver.u2ug.org > http://listserver.u2ug.org/mailman/listinfo/u2-users > _______________________________________________ > U2-Users mailing list > U2-Users@listserver.u2ug.org > http://listserver.u2ug.org/mailman/listinfo/u2-users _______________________________________________ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users _______________________________________________ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users _______________________________________________ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users