PRB: "Not a Numeric Expression" Using CALCULATE Function

Last reviewed: June 27, 1995
Article 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 "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


THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.

Last reviewed: June 27, 1995
© 1998 Microsoft Corporation. All rights reserved. Terms of Use.