Microsoft KB Archive/98352

{| = PRB: &quot;Not a Numeric Expression&quot; Using CALCULATE Function =
 * width="100%"|

ID: Q98352

The information in this article applies to:


 * Microsoft FoxPro for Windows, versions 2.5 and 2.5a
 * Microsoft FoxPro for MS-DOS, versions 2.0, 2.5, and 2.5a

SYMPTOMS
During an attempt to use the CALCULATE function in a FOR loop, the error message &quot;Not a Numeric Expression&quot; may occur.

CAUSE
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.

MORE INFORMATION
The following code produces the above error message. The NUMBERS.DBF database used in the example is of indeterminate length and has &quot;f&quot; 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
 * }