I think you missed the point that UV (and it's kin) do *not* compare all 
strings numerically if possible.
It entirely depends on which operation you try to use.
That was the example I gave where all the strings are numerically identical and 
yet the equal test fails.








-----Original Message-----
From: Charles Stevenson <stevenson.c...@gmail.com>
To: U2 Users List <u2-users@listserver.u2ug.org>
Sent: Tue, Jul 24, 2012 6:21 am
Subject: Re: [U2] Comparing Two Dyamic Arrays


Mike meant  NES( ),  not  EQS( ).
nd SUMMATION( ),  not SUM( ).
UM( ) won't yield a scalar unless all delimiters are the same.
       ResultArray =  NES(Array1, Array2)
      If summation(ResultArray)=0 then samething = true else samething 
 false
Which is all well and good . . . as long as you consider "7" = "7.00" = 
007" = " 7."
___________
To address Bill Brutzman's original question:
The trouble is that we don't _declare_ variables in UV/UD/MV Basic as 
trings or integer, etc.
o UV & its kin makes a best guess.
V (& kin? There may be some variance!)  will attempt to compare EQ, NE, 
T, & their ilk the two vars numerically, if possible.
hat's what happens with my "seven" example above.  All those strings 
re treated as equal numerically.
he related multivalue handling functions, .e.g, EQS, do the same, piece 
y piece.
If one of the two vars can't be treated numerically, then it compares as 
trings.
This is probably as good a general solution as any using "EQ":
       if  len(Array1) EQ len( Array2 )  then       ; * because len( )  
s so very fast
         * non-numeric 'x' concatenation forces the 2 to be treated as 
trings:
         samething = ( ( 'x': Array1 ) EQ ( 'x': Array2 ) )
      end else
         samething = @false
      end
i don't know how the speed compares to COMPARE(), which is simpler to read.
-- Chuck

n 7/23/2012 3:46 PM, Bill Haskett wrote:
 I'm not sure this would work, as the UniData documentation for "EQS" 
 states:

 The UniBasic EQS function compares each value in array1 to its 
 corresponding
 value in array2. UniData returns an array with 1 in each position 
 where values are
 equal, and 0 in each position for values that are not equal.

 Thus, if the following...

 ARRAY1 = '11':@VM:'12':@VM:'13':@VM:'20':@VM:'21'
 ARRAY2 = '11':@VM:'12':@VM:'13':@VM:'19':@VM:'22'
 ARRAY3 = EQS(ARRAY1,ARRAY2)

 ...then the resultant ARRAY3 would look like:

 '1':@VM:'1':@VM:'1':@VM:'0':@VM:'0'

 On the other hand, the following...

 ARRAY1 = '11':@VM:'12':@VM:'13':@VM:'20':@VM:'21'
 ARRAY2 = '11':@VM:'12':@VM:'13':@VM:'20':@VM:'21'
 ARRAY3 = EQS(ARRAY1,ARRAY2)

 ...would assign ARRAY3 to look like:

 '1':@VM:'1':@VM:'1':@VM:'1':@VM:'1'

 ...and:

 SUM(ARRAY3)

 ...would equal 5, which would only indicate equality if

 SUM(ARRAY3) = DCOUNT(ARRAY3, @VM)

 Does this make sense?  With mixed @AMs & @VMs I suspect one would have 
 to loop through the result array comparing.

 Is UniData different than UniVerse?

 Bill


 ------------------------------------------------------------------------
 ----- Original Message -----
 *From:* mfarr...@premdor.com
 *To:* U2 Users List <u2-users@listserver.u2ug.org>
 *Date:* 7/23/2012 1:17 PM
 *Subject:* Re: [U2] Comparing Two Dyamic Arrays
> Try:
> ResultArray =  EQS(Array1, Array2)
> If sum(ResultArray)=0 then samething = true else samething = false
______________________________________________
2-Users mailing list
2-us...@listserver.u2ug.org
ttp://listserver.u2ug.org/mailman/listinfo/u2-users

_______________________________________________
U2-Users mailing list
U2-Users@listserver.u2ug.org
http://listserver.u2ug.org/mailman/listinfo/u2-users

Reply via email to