Phil Downs - 2011-03-05

As far as I know, the DIGITS setting is used for arithmetic operations, not logical operations. Using a setting for DIGITS lower than the number of digits you are using only provides relative not absolute accuracy, and produces not entirely intuitive results.

Example:
Digits=5
a=123458 b=123450 a=b:0
a=123458 b=123451 a=b:0
a=123458 b=123452 a=b:0
a=123458 b=123453 a=b:0
a=123458 b=123454 a=b:0
a=123458 b=123455 a=b:1
a=123458 b=123456 a=b:1
a=123458 b=123457 a=b:1
a=123458 b=123458 a=b:1
a=123458 b=123459 a=b:1
a=123458 b=123460 a=b:0
a=123458 b=123461 a=b:0
a=123458 b=123462 a=b:0
a=123458 b=123463 a=b:0
a=123458 b=123464 a=b:0
a=123458 b=123465 a=b:0

Using FUZZ of 4 with the standard DIGITS value of 9 (effectively using DIGITS(5)), gives the same relative accuracy and the same apparent inaccuracy.

Page 44 of the Regina35.pdf explains this in more detail (and better!) than I have here.

The interpreter is behaving as designed, though not as you would intuitively think.

The ‘correct’ result for what you appear to want to do would be accurately provided by the following (you’d have to check for null values first)

Left(A,Length(A)-1)=Left(B,Length(B)-1)

IMHO the use of DIGITS and FUZZ wasn’t designed to do what you’re trying to force it to do, so the unexpected (to you) results are not bugs at all.