NEWVAL = "" HELDVAL = "" CURVALUE = "" THISVALUE = ALLTRIM(THIS.VALUE) PLUSMARK = OCCURS("+",THISVALUE) MINUSMARK = OCCURS("-",THISVALUE) TIMESMARK = OCCURS("*",THISVALUE) DIVIDEMARK = OCCURS("/",THISVALUE) TOTALMARKS = PLUSMARK + MINUSMARK + TIMESMARK + DIVIDEMARK IF TOTALMARKS > 0 FOR CALCLOOP = 1 TO LEN(ALLTRIM(THISVALUE)) CURCHAR = SUBSTR(THISVALUE,CALCLOOP,1) DO CASE CASE CURCHAR = "+" CURSIGN = "+" IF EMPTY(HELDVAL) HELDVAL = CURVALUE CURVALUE = "" ELSE NEWVAL = VAL(HELDVAL) + VAL(CURVALUE) HELDVAL = STR(NEWVAL) NEWVAL = "" CURVALUE = "" ENDIF CASE CURCHAR = "-" CURSIGN = "-" IF EMPTY(HELDVAL) HELDVAL = CURVALUE CURVALUE = "" ELSE NEWVAL = VAL(HELDVAL) - VAL(CURVALUE) HELDVAL = STR(NEWVAL) NEWVAL = "" CURVALUE = "" ENDIF CASE CURCHAR = "*" CURSIGN = "*" IF EMPTY(HELDVAL) HELDVAL = CURVALUE CURVALUE = "" ELSE NEWVAL = VAL(HELDVAL) * VAL(CURVALUE) HELDVAL = STR(NEWVAL) NEWVAL = "" CURVALUE = "" ENDIF CASE CURCHAR = "/" CURSIGN = "/" IF EMPTY(HELDVAL) HELDVAL = CURVALUE CURVALUE = "" ELSE NEWVAL = VAL(HELDVAL) / VAL(CURVALUE) HELDVAL = STR(NEWVAL) NEWVAL = "" CURVALUE = "" ENDIF OTHERWISE CURVALUE = CURVALUE + SUBSTR(THISVALUE,CALCLOOP,1) ENDCASE ENDFOR FINALCALCSTR = "NEWVAL = VAL(HELDVAL) " + CURSIGN + " VAL(CURVALUE)" &FINALCALCSTR THIS.VALUE = ALLTRIM(STR(NEWVAL)) this.SelStart = LEN(this.Value) ENDIF