The differences are rather small, I think the reason they are there is this: SAS uses 8-byte real numbers. The Intel/AMD numeric processor works with 10-byte real numbers. When you call DIVIDE, the division is performed in 10-byte reals, the result is returned as an 8-byte real, and that is again converted to a 10-byte real before the division with 100. When you it with the divide operator, the whole thing, including the division by 100, is done in 10-byte reals before the result is returned to SAS as an 8-byte number. My guess is therefore that what you get with the divide function call is the same as you would get with chg2=(aval-base)/base;
chg2=chg2/100; If you dropped the division by 100, the two values would probably also be the same. If by "other environments" you mean mainframes, they process 8-byte reals in the numeric processor, so there should not be any differences.
... View more