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: [email protected] 
[mailto:[email protected]] On Behalf Of Jeffrey Butera
Sent: Monday, February 11, 2013 7:55 AM
To: [email protected]
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
[email protected]
http://listserver.u2ug.org/mailman/listinfo/u2-users
_______________________________________________
U2-Users mailing list
[email protected]
http://listserver.u2ug.org/mailman/listinfo/u2-users

Reply via email to