|
Kurt Anderson wrote:
D NumWrong 3u 0 D Count1 3u 0 Dim( 5 ) D Count2 3u 0 Dim( 5 ) // NumWrong = 0 // Count1(i) = 8 // Count2(i) = 29 NumWrong += %uns( %abs( Count1(i) - Count2(i) ) ); // or NumWrong += %abs( Count1(i) - Count2(i) ); Receiver value too small to hold result.
The intermediate result of subtraction between unsigned values is an unsigned value. http://publib.boulder.ibm.com/infocenter/iseries/v5r4/topic/books_web/c0925086550.htm#Header_712 "For the operators +, -, and *: - If at least one operand has a float format, the result is float format. - Otherwise, if at least one operand has packed-decimal, zoned-decimal, or binary format, the result has packed-decimal format. - Otherwise, if at least one operand has integer format, the result has integer format. - Otherwise, the result has unsigned format." Try this NumWrong += %abs( Count1(i) - %int(Count2(i)));
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.