1
1
Fork 0
mirror of https://github.com/QB64Official/qb64.git synced 2024-07-16 10:45:14 +00:00

Moves $NOPREFIX setting to prepass, so TYPEs are properly affected. +

- Fixes FUNCTION dim2 and FUNCTION typname2typ& to properly deal with variable types with no suffix.
- Restores Steve's Set_OrderOfOperations and EvaluateNumbers$ until a fixed version can be provided and tweaked.
This commit is contained in:
FellippeHeitor 2020-01-05 19:31:46 -03:00
parent 060284f9c3
commit fed5798523

View file

@ -24,6 +24,7 @@ DEFLNG A-Z
REDIM SHARED OName(0) AS STRING 'Operation Name REDIM SHARED OName(0) AS STRING 'Operation Name
REDIM SHARED PL(0) AS INTEGER 'Priority Level REDIM SHARED PL(0) AS INTEGER 'Priority Level
DIM SHARED QuickReturn AS INTEGER DIM SHARED QuickReturn AS INTEGER
Set_OrderOfOperations
REDIM EveryCaseSet(100), SelectCaseCounter AS _UNSIGNED LONG REDIM EveryCaseSet(100), SelectCaseCounter AS _UNSIGNED LONG
DIM ExecLevel(255), ExecCounter AS INTEGER DIM ExecLevel(255), ExecCounter AS INTEGER
@ -1535,10 +1536,8 @@ IF idemode = 0 THEN
qberrorhappened = 0 qberrorhappened = 0
END IF END IF
Set_OrderOfOperations
reginternal reginternal
OPEN tmpdir$ + "global.txt" FOR OUTPUT AS #18 OPEN tmpdir$ + "global.txt" FOR OUTPUT AS #18
IF iderecompile THEN IF iderecompile THEN
@ -1554,7 +1553,7 @@ lineinput3load sourcefile$
DO DO
stevewashere: '### STEVE EDIT FOR CONST EXPANSION 10/11/2013 '### STEVE EDIT FOR CONST EXPANSION 10/11/2013
wholeline$ = lineinput3$ wholeline$ = lineinput3$
IF wholeline$ = CHR$(13) THEN EXIT DO IF wholeline$ = CHR$(13) THEN EXIT DO
@ -1587,9 +1586,32 @@ DO
IF LEN(wholeline$) THEN IF LEN(wholeline$) THEN
IF UCASE$(_TRIM$(wholeline$)) = "$NOPREFIX" THEN
qb64prefix$ = ""
qb64prefix_set = 1
're-add internal keywords without the "_" prefix
reginternal
f = HASHFLAG_TYPE + HASHFLAG_RESERVED
HashAdd qb64prefix$ + "UNSIGNED", f, 0
HashAdd qb64prefix$ + "BIT", f, 0
HashAdd qb64prefix$ + "BYTE", f, 0
HashAdd qb64prefix$ + "INTEGER64", f, 0
HashAdd qb64prefix$ + "OFFSET", f, 0
HashAdd qb64prefix$ + "FLOAT", f, 0
f = HASHFLAG_RESERVED + HASHFLAG_CUSTOMSYNTAX
HashAdd qb64prefix$ + "EXPLICIT", f, 0
listOfKeywords$ = listOfKeywords$ + listOfKeywordsWithoutPrefix$
GOTO finishedlinepp
END IF
wholeline$ = lineformat(wholeline$) wholeline$ = lineformat(wholeline$)
IF Error_Happened THEN GOTO errmes IF Error_Happened THEN GOTO errmes
temp$ = LTRIM$(RTRIM$(UCASE$(wholestv$))) temp$ = LTRIM$(RTRIM$(UCASE$(wholestv$)))
@ -1930,7 +1952,7 @@ DO
stevewashere2: ' ### STEVE EDIT ON 10/11/2013 (Const Expansion) ' ### STEVE EDIT ON 10/11/2013 (Const Expansion)
IF n >= 1 AND firstelement$ = "CONST" THEN IF n >= 1 AND firstelement$ = "CONST" THEN
@ -3087,6 +3109,12 @@ DO
GOTO finishednonexec 'we don't check for anything inside lines that we've marked for skipping GOTO finishednonexec 'we don't check for anything inside lines that we've marked for skipping
END IF END IF
IF a3u$ = "$NOPREFIX" THEN
'already set in prepass
layout$ = "$NOPREFIX"
GOTO finishednonexec
END IF
IF a3u$ = "$VIRTUALKEYBOARD:ON" THEN IF a3u$ = "$VIRTUALKEYBOARD:ON" THEN
'Deprecated; does nothing. 'Deprecated; does nothing.
layout$ = "$VIRTUALKEYBOARD:ON" layout$ = "$VIRTUALKEYBOARD:ON"
@ -3137,38 +3165,6 @@ DO
GOTO finishednonexec GOTO finishednonexec
END IF END IF
IF LEFT$(a3u$, 9) = "$NOPREFIX" THEN
IF qb64prefix_set = 0 THEN
IF linenumber > 1 THEN
a$ = "$NOPREFIX must be set in the first line": GOTO errmes
END IF
layout$ = "$NOPREFIX"
qb64prefix$ = ""
qb64prefix_set = 1
're-add internal keywords without the "_" prefix
Set_OrderOfOperations
IF UseGL THEN gl_include_content
reginternal
f = HASHFLAG_TYPE + HASHFLAG_RESERVED
HashAdd qb64prefix$ + "UNSIGNED", f, 0
HashAdd qb64prefix$ + "BIT", f, 0
HashAdd qb64prefix$ + "BYTE", f, 0
HashAdd qb64prefix$ + "INTEGER64", f, 0
HashAdd qb64prefix$ + "OFFSET", f, 0
HashAdd qb64prefix$ + "FLOAT", f, 0
f = HASHFLAG_RESERVED + HASHFLAG_CUSTOMSYNTAX
HashAdd qb64prefix$ + "EXPLICIT", f, 0
listOfKeywords$ = listOfKeywordsWithoutPrefix$
GOTO finishednonexec
ELSE
a$ = "$NOPREFIX can only be set once": GOTO errmes
END IF
END IF
IF a3u$ = "$SCREENHIDE" THEN IF a3u$ = "$SCREENHIDE" THEN
layout$ = "$SCREENHIDE" layout$ = "$SCREENHIDE"
ScreenHide = 1 ScreenHide = 1
@ -13715,10 +13711,10 @@ FUNCTION dim2 (varname$, typ2$, method, elements$)
'check if _UNSIGNED was specified 'check if _UNSIGNED was specified
unsgn = 0 unsgn = 0
IF LEFT$(typ$, 10 + (qb64prefix_set = 1)) = qb64prefix$ + "UNSIGNED " THEN IF LEFT$(typ$, 10) = "_UNSIGNED " OR (LEFT$(typ$, 9) = "UNSIGNED " AND qb64prefix_set = 1) THEN
unsgn = 1 unsgn = 1
typ$ = RIGHT$(typ$, LEN(typ$) - (10 + (qb64prefix_set = 1))) typ$ = MID$(typ$, INSTR(typ$, CHR$(32)) + 1)
IF LEN(typ$) = 0 THEN Give_Error "Expected more type information after _UNSIGNED!": EXIT FUNCTION IF LEN(typ$) = 0 THEN Give_Error "Expected more type information after " + qb64prefix$ + "UNSIGNED!": EXIT FUNCTION
END IF END IF
n$ = "" 'n$ is assumed to be "" after branching into the code for each type n$ = "" 'n$ is assumed to be "" after branching into the code for each type
@ -13963,10 +13959,10 @@ FUNCTION dim2 (varname$, typ2$, method, elements$)
GOTO dim2exitfunc GOTO dim2exitfunc
END IF END IF
IF LEFT$(typ$, 4 + (qb64prefix_set = 1)) = qb64prefix$ + "BIT" THEN IF LEFT$(typ$, 4) = "_BIT" OR (LEFT$(typ$, 3) = "BIT" AND qb64prefix_set = 1) THEN
IF LEN(typ$) > (4 + (qb64prefix_set = 1)) THEN IF (LEFT$(typ$, 4) = "_BIT" AND LEN(typ$) > 4) OR (LEFT$(typ$, 3) = "BIT" AND LEN(typ$) > 3) THEN
IF LEFT$(typ$, 7 + (qb64prefix_set = 1)) <> qb64prefix$ + "BIT * " THEN Give_Error "Expected " + qb64prefix$ + "BIT * number": EXIT FUNCTION IF LEFT$(typ$, 7) <> "_BIT * " AND LEFT$(typ$, 6) <> "BIT * " THEN Give_Error "Expected " + qb64prefix$ + "BIT * number": EXIT FUNCTION
c$ = RIGHT$(typ$, LEN(typ$) - (7 + (qb64prefix_set = 1))) c$ = MID$(typ$, INSTR(typ$, " * ") + 4)
IF isuinteger(c$) = 0 THEN Give_Error "Number expected after *": EXIT FUNCTION IF isuinteger(c$) = 0 THEN Give_Error "Number expected after *": EXIT FUNCTION
IF LEN(c$) > 2 THEN Give_Error "Too many characters in number after *": EXIT FUNCTION IF LEN(c$) > 2 THEN Give_Error "Too many characters in number after *": EXIT FUNCTION
bits = VAL(c$) bits = VAL(c$)
@ -14066,7 +14062,7 @@ FUNCTION dim2 (varname$, typ2$, method, elements$)
GOTO dim2exitfunc GOTO dim2exitfunc
END IF END IF
IF typ$ = qb64prefix$ + "BYTE" THEN IF typ$ = "_BYTE" OR (typ$ = "BYTE" AND qb64prefix_set = 1) THEN
ct$ = "int8" ct$ = "int8"
IF unsgn THEN n$ = "U": ct$ = "u" + ct$ IF unsgn THEN n$ = "U": ct$ = "u" + ct$
n$ = n$ + "BYTE_" + varname$ n$ = n$ + "BYTE_" + varname$
@ -14240,7 +14236,7 @@ FUNCTION dim2 (varname$, typ2$, method, elements$)
IF typ$ = qb64prefix$ + "OFFSET" THEN IF typ$ = "_OFFSET" OR (typ$ = "OFFSET" AND qb64prefix_set = 1) THEN
ct$ = "ptrszint" ct$ = "ptrszint"
IF unsgn THEN n$ = "U": ct$ = "u" + ct$ IF unsgn THEN n$ = "U": ct$ = "u" + ct$
n$ = n$ + "OFFSET_" + varname$ n$ = n$ + "OFFSET_" + varname$
@ -14404,7 +14400,7 @@ FUNCTION dim2 (varname$, typ2$, method, elements$)
GOTO dim2exitfunc GOTO dim2exitfunc
END IF END IF
IF typ$ = qb64prefix$ + "INTEGER64" THEN IF typ$ = "_INTEGER64" OR (typ$ = "INTEGER64" AND qb64prefix_set = 1) THEN
ct$ = "int64" ct$ = "int64"
IF unsgn THEN n$ = "U": ct$ = "u" + ct$ IF unsgn THEN n$ = "U": ct$ = "u" + ct$
n$ = n$ + "INTEGER64_" + varname$ n$ = n$ + "INTEGER64_" + varname$
@ -14654,7 +14650,7 @@ FUNCTION dim2 (varname$, typ2$, method, elements$)
GOTO dim2exitfunc GOTO dim2exitfunc
END IF END IF
IF typ$ = qb64prefix$ + "FLOAT" THEN IF typ$ = "_FLOAT" OR (typ$ = "FLOAT" AND qb64prefix_set = 1) THEN
ct$ = "long double" ct$ = "long double"
n$ = n$ + "FLOAT_" + varname$ n$ = n$ + "FLOAT_" + varname$
IF elements$ <> "" THEN IF elements$ <> "" THEN
@ -21839,7 +21835,7 @@ FUNCTION typname2typ& (t2$)
IF t$ = "_FLOAT" OR (t$ = "FLOAT" AND qb64prefix_set = 1) THEN typname2typ& = FLOATTYPE: EXIT FUNCTION IF t$ = "_FLOAT" OR (t$ = "FLOAT" AND qb64prefix_set = 1) THEN typname2typ& = FLOATTYPE: EXIT FUNCTION
IF LEFT$(t$, 10) = "_UNSIGNED " OR (LEFT$(t$, 9) = "UNSIGNED " AND qb64prefix_set = 1) THEN IF LEFT$(t$, 10) = "_UNSIGNED " OR (LEFT$(t$, 9) = "UNSIGNED " AND qb64prefix_set = 1) THEN
u = 1 u = 1
t$ = MID$(t$, INSTR(t$, CHR$(32))) t$ = MID$(t$, INSTR(t$, CHR$(32)) + 1)
END IF END IF
IF LEFT$(t$, 4) = "_BIT" OR (LEFT$(t$, 3) = "BIT" AND qb64prefix_set = 1) THEN IF LEFT$(t$, 4) = "_BIT" OR (LEFT$(t$, 3) = "BIT" AND qb64prefix_set = 1) THEN
IF t$ = "_BIT" OR (t$ = "BIT" AND qb64prefix_set = 1) THEN IF t$ = "_BIT" OR (t$ = "BIT" AND qb64prefix_set = 1) THEN
@ -23642,28 +23638,28 @@ SUB Set_OrderOfOperations
'OName ended up becoming the name of our commands, as I modified things.... Go figure! LOL! 'OName ended up becoming the name of our commands, as I modified things.... Go figure! LOL!
'Constants get evaluated first, with a Priority Level of 1 'Constants get evaluated first, with a Priority Level of 1
i = i + 1: REDIM _PRESERVE OName(i): OName(i) = qb64prefix$ + "PI" i = i + 1: REDIM _PRESERVE OName(i): OName(i) = "_PI"
REDIM _PRESERVE PL(i): PL(i) = 1 REDIM _PRESERVE PL(i): PL(i) = 1
'I'm not certain where exactly percentages should go. They kind of seem like a special case to me. COS10% should be COS.1 I'd think... 'I'm not certain where exactly percentages should go. They kind of seem like a special case to me. COS10% should be COS.1 I'd think...
'I'm putting it here for now, and if anyone knows someplace better for it in our order of operations, let me know. 'I'm putting it here for now, and if anyone knows someplace better for it in our order of operations, let me know.
i = i + 1: REDIM _PRESERVE OName(i): OName(i) = "%" i = i + 1: REDIM _PRESERVE OName(i): OName(i) = "%"
REDIM _PRESERVE PL(i): PL(i) = 5 REDIM _PRESERVE PL(i): PL(i) = 5
'Then Functions with PL 10 'Then Functions with PL 10
i = i + 1: REDIM _PRESERVE OName(i): OName(i) = qb64prefix$ + "ACOS" i = i + 1: REDIM _PRESERVE OName(i): OName(i) = "_ACOS"
REDIM _PRESERVE PL(i): PL(i) = 10 REDIM _PRESERVE PL(i): PL(i) = 10
i = i + 1: REDIM _PRESERVE OName(i): OName(i) = qb64prefix$ + "ASIN" i = i + 1: REDIM _PRESERVE OName(i): OName(i) = "_ASIN"
REDIM _PRESERVE PL(i): PL(i) = 10 REDIM _PRESERVE PL(i): PL(i) = 10
i = i + 1: REDIM _PRESERVE OName(i): OName(i) = qb64prefix$ + "ARCSEC" i = i + 1: REDIM _PRESERVE OName(i): OName(i) = "_ARCSEC"
REDIM _PRESERVE PL(i): PL(i) = 10 REDIM _PRESERVE PL(i): PL(i) = 10
i = i + 1: REDIM _PRESERVE OName(i): OName(i) = qb64prefix$ + "ARCCSC" i = i + 1: REDIM _PRESERVE OName(i): OName(i) = "_ARCCSC"
REDIM _PRESERVE PL(i): PL(i) = 10 REDIM _PRESERVE PL(i): PL(i) = 10
i = i + 1: REDIM _PRESERVE OName(i): OName(i) = qb64prefix$ + "ARCCOT" i = i + 1: REDIM _PRESERVE OName(i): OName(i) = "_ARCCOT"
REDIM _PRESERVE PL(i): PL(i) = 10 REDIM _PRESERVE PL(i): PL(i) = 10
i = i + 1: REDIM _PRESERVE OName(i): OName(i) = qb64prefix$ + "SECH" i = i + 1: REDIM _PRESERVE OName(i): OName(i) = "_SECH"
REDIM _PRESERVE PL(i): PL(i) = 10 REDIM _PRESERVE PL(i): PL(i) = 10
i = i + 1: REDIM _PRESERVE OName(i): OName(i) = qb64prefix$ + "CSCH" i = i + 1: REDIM _PRESERVE OName(i): OName(i) = "_CSCH"
REDIM _PRESERVE PL(i): PL(i) = 10 REDIM _PRESERVE PL(i): PL(i) = 10
i = i + 1: REDIM _PRESERVE OName(i): OName(i) = qb64prefix$ + "COTH" i = i + 1: REDIM _PRESERVE OName(i): OName(i) = "_COTH"
REDIM _PRESERVE PL(i): PL(i) = 10 REDIM _PRESERVE PL(i): PL(i) = 10
i = i + 1: REDIM _PRESERVE OName(i): OName(i) = "COS" i = i + 1: REDIM _PRESERVE OName(i): OName(i) = "COS"
REDIM _PRESERVE PL(i): PL(i) = 10 REDIM _PRESERVE PL(i): PL(i) = 10
@ -23677,17 +23673,17 @@ SUB Set_OrderOfOperations
REDIM _PRESERVE PL(i): PL(i) = 10 REDIM _PRESERVE PL(i): PL(i) = 10
i = i + 1: REDIM _PRESERVE OName(i): OName(i) = "ATN" i = i + 1: REDIM _PRESERVE OName(i): OName(i) = "ATN"
REDIM _PRESERVE PL(i): PL(i) = 10 REDIM _PRESERVE PL(i): PL(i) = 10
i = i + 1: REDIM _PRESERVE OName(i): OName(i) = qb64prefix$ + "D2R" i = i + 1: REDIM _PRESERVE OName(i): OName(i) = "_D2R"
REDIM _PRESERVE PL(i): PL(i) = 10 REDIM _PRESERVE PL(i): PL(i) = 10
i = i + 1: REDIM _PRESERVE OName(i): OName(i) = qb64prefix$ + "D2G" i = i + 1: REDIM _PRESERVE OName(i): OName(i) = "_D2G"
REDIM _PRESERVE PL(i): PL(i) = 10 REDIM _PRESERVE PL(i): PL(i) = 10
i = i + 1: REDIM _PRESERVE OName(i): OName(i) = qb64prefix$ + "R2D" i = i + 1: REDIM _PRESERVE OName(i): OName(i) = "_R2D"
REDIM _PRESERVE PL(i): PL(i) = 10 REDIM _PRESERVE PL(i): PL(i) = 10
i = i + 1: REDIM _PRESERVE OName(i): OName(i) = qb64prefix$ + "R2G" i = i + 1: REDIM _PRESERVE OName(i): OName(i) = "_R2G"
REDIM _PRESERVE PL(i): PL(i) = 10 REDIM _PRESERVE PL(i): PL(i) = 10
i = i + 1: REDIM _PRESERVE OName(i): OName(i) = qb64prefix$ + "G2D" i = i + 1: REDIM _PRESERVE OName(i): OName(i) = "_G2D"
REDIM _PRESERVE PL(i): PL(i) = 10 REDIM _PRESERVE PL(i): PL(i) = 10
i = i + 1: REDIM _PRESERVE OName(i): OName(i) = qb64prefix$ + "G2R" i = i + 1: REDIM _PRESERVE OName(i): OName(i) = "_G2R"
REDIM _PRESERVE PL(i): PL(i) = 10 REDIM _PRESERVE PL(i): PL(i) = 10
i = i + 1: REDIM _PRESERVE OName(i): OName(i) = "ABS" i = i + 1: REDIM _PRESERVE OName(i): OName(i) = "ABS"
REDIM _PRESERVE PL(i): PL(i) = 10 REDIM _PRESERVE PL(i): PL(i) = 10
@ -23695,15 +23691,15 @@ SUB Set_OrderOfOperations
REDIM _PRESERVE PL(i): PL(i) = 10 REDIM _PRESERVE PL(i): PL(i) = 10
i = i + 1: REDIM _PRESERVE OName(i): OName(i) = "INT" i = i + 1: REDIM _PRESERVE OName(i): OName(i) = "INT"
REDIM _PRESERVE PL(i): PL(i) = 10 REDIM _PRESERVE PL(i): PL(i) = 10
i = i + 1: REDIM _PRESERVE OName(i): OName(i) = qb64prefix$ + "ROUND" i = i + 1: REDIM _PRESERVE OName(i): OName(i) = "_ROUND"
REDIM _PRESERVE PL(i): PL(i) = 10 REDIM _PRESERVE PL(i): PL(i) = 10
i = i + 1: REDIM _PRESERVE OName(i): OName(i) = "FIX" i = i + 1: REDIM _PRESERVE OName(i): OName(i) = "FIX"
REDIM _PRESERVE PL(i): PL(i) = 10 REDIM _PRESERVE PL(i): PL(i) = 10
i = i + 1: REDIM _PRESERVE OName(i): OName(i) = qb64prefix$ + "SEC" i = i + 1: REDIM _PRESERVE OName(i): OName(i) = "_SEC"
REDIM _PRESERVE PL(i): PL(i) = 10 REDIM _PRESERVE PL(i): PL(i) = 10
i = i + 1: REDIM _PRESERVE OName(i): OName(i) = qb64prefix$ + "CSC" i = i + 1: REDIM _PRESERVE OName(i): OName(i) = "_CSC"
REDIM _PRESERVE PL(i): PL(i) = 10 REDIM _PRESERVE PL(i): PL(i) = 10
i = i + 1: REDIM _PRESERVE OName(i): OName(i) = qb64prefix$ + "COT" i = i + 1: REDIM _PRESERVE OName(i): OName(i) = "_COT"
REDIM _PRESERVE PL(i): PL(i) = 10 REDIM _PRESERVE PL(i): PL(i) = 10
i = i + 1: REDIM _PRESERVE OName(i): OName(i) = "ASC" i = i + 1: REDIM _PRESERVE OName(i): OName(i) = "ASC"
REDIM _PRESERVE PL(i): PL(i) = 10 REDIM _PRESERVE PL(i): PL(i) = 10
@ -23772,36 +23768,36 @@ END SUB
FUNCTION EvaluateNumbers$ (p, num() AS STRING) FUNCTION EvaluateNumbers$ (p, num() AS STRING)
DIM n1 AS _FLOAT, n2 AS _FLOAT, n3 AS _FLOAT DIM n1 AS _FLOAT, n2 AS _FLOAT, n3 AS _FLOAT
SELECT CASE OName(p) 'Depending on our operator.. SELECT CASE OName(p) 'Depending on our operator..
CASE qb64prefix$ + "PI": n1 = 3.14159265358979323846264338327950288## 'Future compatible in case something ever stores extra digits for PI CASE "_PI": n1 = 3.14159265358979323846264338327950288## 'Future compatable in case something ever stores extra digits for PI
CASE "%": n1 = (VAL(num(1))) / 100 'Note percent is a special case and works with the number BEFORE the % command and not after CASE "%": n1 = (VAL(num(1))) / 100 'Note percent is a special case and works with the number BEFORE the % command and not after
CASE qb64prefix$ + "ACOS": n1 = _ACOS(VAL(num(2))) CASE "_ACOS": n1 = _ACOS(VAL(num(2)))
CASE qb64prefix$ + "ASIN": n1 = _ASIN(VAL(num(2))) CASE "_ASIN": n1 = _ASIN(VAL(num(2)))
CASE qb64prefix$ + "ARCSEC": n1 = _ARCSEC(VAL(num(2))) CASE "_ARCSEC": n1 = _ARCSEC(VAL(num(2)))
CASE qb64prefix$ + "ARCCSC": n1 = _ARCCSC(VAL(num(2))) CASE "_ARCCSC": n1 = _ARCCSC(VAL(num(2)))
CASE qb64prefix$ + "ARCCOT": n1 = _ARCCOT(VAL(num(2))) CASE "_ARCCOT": n1 = _ARCCOT(VAL(num(2)))
CASE qb64prefix$ + "SECH": n1 = _SECH(VAL(num(2))) CASE "_SECH": n1 = _SECH(VAL(num(2)))
CASE qb64prefix$ + "CSCH": n1 = _CSCH(VAL(num(2))) CASE "_CSCH": n1 = _CSCH(VAL(num(2)))
CASE qb64prefix$ + "COTH": n1 = _COTH(VAL(num(2))) CASE "_COTH": n1 = _COTH(VAL(num(2)))
CASE "COS": n1 = COS(VAL(num(2))) CASE "COS": n1 = COS(VAL(num(2)))
CASE "SIN": n1 = SIN(VAL(num(2))) CASE "SIN": n1 = SIN(VAL(num(2)))
CASE "TAN": n1 = TAN(VAL(num(2))) CASE "TAN": n1 = TAN(VAL(num(2)))
CASE "LOG": n1 = LOG(VAL(num(2))) CASE "LOG": n1 = LOG(VAL(num(2)))
CASE "EXP": n1 = EXP(VAL(num(2))) CASE "EXP": n1 = EXP(VAL(num(2)))
CASE "ATN": n1 = ATN(VAL(num(2))) CASE "ATN": n1 = ATN(VAL(num(2)))
CASE qb64prefix$ + "D2R": n1 = 0.0174532925 * (VAL(num(2))) CASE "_D2R": n1 = 0.0174532925 * (VAL(num(2)))
CASE qb64prefix$ + "D2G": n1 = 1.1111111111 * (VAL(num(2))) CASE "_D2G": n1 = 1.1111111111 * (VAL(num(2)))
CASE qb64prefix$ + "R2D": n1 = 57.2957795 * (VAL(num(2))) CASE "_R2D": n1 = 57.2957795 * (VAL(num(2)))
CASE qb64prefix$ + "R2G": n1 = 0.015707963 * (VAL(num(2))) CASE "_R2G": n1 = 0.015707963 * (VAL(num(2)))
CASE qb64prefix$ + "G2D": n1 = 0.9 * (VAL(num(2))) CASE "_G2D": n1 = 0.9 * (VAL(num(2)))
CASE qb64prefix$ + "G2R": n1 = 63.661977237 * (VAL(num(2))) CASE "_G2R": n1 = 63.661977237 * (VAL(num(2)))
CASE "ABS": n1 = ABS(VAL(num(2))) CASE "ABS": n1 = ABS(VAL(num(2)))
CASE "SGN": n1 = SGN(VAL(num(2))) CASE "SGN": n1 = SGN(VAL(num(2)))
CASE "INT": n1 = INT(VAL(num(2))) CASE "INT": n1 = INT(VAL(num(2)))
CASE qb64prefix$ + "ROUND": n1 = _ROUND(VAL(num(2))) CASE "_ROUND": n1 = _ROUND(VAL(num(2)))
CASE "FIX": n1 = FIX(VAL(num(2))) CASE "FIX": n1 = FIX(VAL(num(2)))
CASE qb64prefix$ + "SEC": n1 = _SEC(VAL(num(2))) CASE "_SEC": n1 = _SEC(VAL(num(2)))
CASE qb64prefix$ + "CSC": n1 = _CSC(VAL(num(2))) CASE "_CSC": n1 = _CSC(VAL(num(2)))
CASE qb64prefix$ + "COT": n1 = _COT(VAL(num(2))) CASE "_COT": n1 = _COT(VAL(num(2)))
CASE "^": n1 = VAL(num(1)) ^ VAL(num(2)) CASE "^": n1 = VAL(num(1)) ^ VAL(num(2))
CASE "SQR": n1 = SQR(VAL(num(2))) CASE "SQR": n1 = SQR(VAL(num(2)))
CASE "ROOT" CASE "ROOT"