ID: Q98352
The information in this article applies to:
During an attempt to use the CALCULATE() function in a FOR loop, the error message "Not a Numeric Expression" may occur.
This error is caused by the CALCULATE() function looking for an actual field name rather than evaluating the expression.
The code example below demonstrates the problem and how to correct it.
The following code produces the above error message. The NUMBERS.DBF database used in the example is of indeterminate length and has "f" number of fields, all numeric.
USE numbers IN A
SELECT A
F=FCOUNT('numbers')
DIMENSION outarray(f,2)
FOR I = 1 TO f
CALCULATE SUM(FIELD(I)), AVG(FIELD(I)) ;
TO outarray(I,1), outarray(I,2)
ENDFOR
DISPLAY MEMORY LIKE OUTARRAY && used for debugging
To obtain the desired results, you must include the EVALUATE()
function, as follows:
USE numbers IN A
SELECT A
F=FCOUNT('numbers')
DIMENSION outarray(F,2)
FOR I = 1 TO f
CALCULATE SUM(EVAL(FIELD(I))), AVG(EVAL(FIELD(I))) ;
TO outarray(I,1), outarray(I,2)
ENDFOR
DISPLAY MEMORY LIKE outarray
Additional reference words: FoxDos FoxWin 2.00 2.50 2.50a errmsg error
message err
msg
KBCategory: kbenv kbprg kberrmsg kbprb
KBSubcategory: FxenvMemory
Last Reviewed: June 27, 1995