PRB: "Not a Numeric Expression" Using CALCULATE Function

ID: Q98352

The information in this article applies to:

SYMPTOMS

During an attempt to use the CALCULATE() function in a FOR loop, the error message "Not a Numeric Expression" 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 "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