=========================================================================== BBS: The Abacus * HST/DS * Potterville, MI Date: 03-13-93 (22:25) Number: 85 From: QUINN TYLER JACKSON Refer#: NONE To: ALL Recvd: NO Subj: formula solver 3/7 Conf: (35) Quick Basi --------------------------------------------------------------------------- '>>> Start of page 3. ' simple loop for testing DO INPUT Test$ PRINT funEvaluate(Test$) LOOP FUNCTION fqjFetchVar (VarName$) FOR i% = 1 TO VariPtr IF RTRIM$(VarMem(i%).Nom) = VarName$ THEN fqjFetchVar = VarMem(i%).Valu FLAG% = TRUE EXIT FOR END IF NEXT i% END FUNCTION FUNCTION fqjInOpList (OpTyp$, Op$) SELECT CASE LEN(Op$) CASE 1 FOR i% = 1 TO LEN(OpTyp$) IF MID$(OpTyp$, i%, 1) = Op$ THEN fqjInOpList = -1 EXIT FUNCTION END IF NEXT i% CASE 2 FOR i% = 1 TO LEN(OpTyp$) IF MID$(OpTyp$, i%, 2) = Op$ THEN fqjInOpList = -1 EXIT FUNCTION END IF NEXT i% END SELECT END FUNCTION FUNCTION funEvaluate (Exp$) OPERATOR$ = ADDSUB + MULTDIV + POWER + LOGICAL expression$ = LCASE$(Exp$) Ptr = 1 AssignmentPtr% = INSTR(expression$, ASSIGNMENT) IF AssignmentPtr% = 0 THEN ' just do a simple evaluation CALL sqjGetOp CALL sqjLevel1(r) funEvaluate = r ELSE ' assign a variable! VariableName$ = LTRIM$(RTRIM$(LEFT$(expression$, AssignmentPtr% -_ 1))) Valu = funEvaluate(MID$(expression$, AssignmentPtr% + 2)) CALL sqjAssignVar(VariableName$, Valu) funEvaluate = Valu END IF END FUNCTION '>>> Continued on page 4. --- Maximus/2 2.01wb * Origin: The Nibble's Roost, Richmond BC Canada 604-244-8009 (1:153/918) SEEN-BY: 1/211 11/2 4 13/13 101/1 108/89 109/25 110/69 114/5 123/19 124/1 SEEN-BY: 153/752 154/40 77 157/2 159/100 125 430 950 203/23 209/209 280/1 SEEN-BY: 390/1 396/1 15 397/2 2230/100 3603/20