Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Scripting language.
#1
Hi, This post is not meant for QB newbies. You can go ahead and read it. But I doubt many will understand.
This is my code for a calculator in my own scripting language for my Fake OS. Is this too big? Is it difficult to understand? Please let me know about any comments/suggestions.
I indented my program but it seems that it is removed while posting.

APP_ID = CALC
APP_TYPE = APPLICATION

PROC PRIVATE SUB_MAIN()
* Define the calculator window.
DEF_WIN "CALCWIN1", "Calculator", 250, 100, 150, 170, MOVABLE
* Define Objects
DEF_OBJ BTN , "B01", "1", 10, 60, 22, 22, ENABLED
DEF_OBJ BTN , "B02", "2", 37, 60, 22, 22, ENABLED
DEF_OBJ BTN , "B03", "3", 64, 60, 22, 22, ENABLED
DEF_OBJ BTN , "B04", "4", 10, 87, 22, 22, ENABLED
DEF_OBJ BTN , "B05", "5", 37, 87, 22, 22, ENABLED
DEF_OBJ BTN , "B06", "6", 64, 87, 22, 22, ENABLED
DEF_OBJ BTN , "B07", "7", 10, 114, 22, 22, ENABLED
DEF_OBJ BTN , "B08", "8", 37, 114, 22, 22, ENABLED
DEF_OBJ BTN , "B09", "9", 64, 114, 22, 22, ENABLED
DEF_OBJ BTN , "B10", "0", 10, 141, 50, 22, ENABLED
DEF_OBJ BTN , "BDEC11", ".", 64, 141, 22, 22, ENABLED
DEF_OBJ BTN , "PLUS12", "+", 91, 60, 22, 22, ENABLED
DEF_OBJ BTN , "MINUS13", "-", 91, 87, 22, 22, ENABLED
DEF_OBJ BTN , "DIV14", "/", 91, 114, 22, 22, ENABLED
DEF_OBJ BTN , "MUL15", "*", 91, 141, 22, 22, ENABLED
DEF_OBJ BTN , "EQL16", "=", 118, 141, 22, 22, ENABLED
DEF_OBJ BTN , "CLR17", "AC", 118, 60, 22, 22, ENABLED
DEF_OBJ BTN , "PM18", "+/-", 118, 87, 22, 22, ENABLED
DEF_OBJ BTN , "SQRT19", "RT", 118, 114, 22, 22, ENABLED

* Declare some variables
STORE VAR1 , ""
STORE VAR2 , ""
STORE OP3 , ""
STORE FLAG4, 0
STORE ANS5 , 0
STORE LEN6 , 0
STORE MAXLEN7, 8

* Load the window
OPEN_WIN "WIN1"
END_PROC SUB_MAIN

* Procedure that is executed when the window is loaded
PROC PRIVATE CALCWIN1 LOAD ()
PUT_OBJ CALCWIN1, B01
PUT_OBJ CALCWIN1, B02
PUT_OBJ CALCWIN1, B03
PUT_OBJ CALCWIN1, B04
PUT_OBJ CALCWIN1, B05
PUT_OBJ CALCWIN1, B06
PUT_OBJ CALCWIN1, B07
PUT_OBJ CALCWIN1, B08
PUT_OBJ CALCWIN1, B09
PUT_OBJ CALCWIN1, B10
PUT_OBJ CALCWIN1, BDEC11
PUT_OBJ CALCWIN1, PLUS12
PUT_OBJ CALCWIN1, MINUS13
PUT_OBJ CALCWIN1, DIV14
PUT_OBJ CALCWIN1, MUL15
PUT_OBJ CALCWIN1, EQL16
PUT_OBJ CALCWIN1, CLR17
PUT_OBJ CALCWIN1, PM18
PUT_OBJ CALCWIN1, SQRT19

BOX CALCWIN1, 5, 30, 140, 20, 224, 232, 232, 2, 0, 0, 0
WIN_PRN "CALCWIN1","COURIER.FNT", 10, 37, 0, 0, 0, "0", SOLID, LTRIM
LEN6++
END_PROC CALCWIN1 LOAD

* Procedures for Button Click events
PROC PRIVATE B01 CLICK ()
IF LEN6 > MAXLEN7 THEN GOELSE 3
BREAK 12
ENDIF
LEN6++
IF FLAG4 = 0 THEN GOELSE 5
APPEND_STR_END VAR1, "1"
BOX CALCWIN1, 5, 30, 140, 20, 224, 232, 232, 2, 0, 0, 0
WIN_PRN "CALCWIN1","COURIER.FNT", 10, 37, 0, 0, 0, VARVAL VAR1, SOLID, LTRIM
BREAK 6
ELSE
APPEND_STR_END VAR2, "1"
BOX CALCWIN1, 5, 30, 140, 20, 224, 232, 232, 2, 0, 0, 0
WIN_PRN "CALCWIN1","COURIER.FNT", 10, 37, 0, 0, 0, VARVAL VAR2, SOLID, LTRIM
ENDIF
END_PROC B01 CLICK

PROC PRIVATE B02 CLICK ()
IF LEN6 > MAXLEN7 THEN GOELSE 3
BREAK 12
ENDIF
LEN6++
IF FLAG4 = 0 THEN GOELSE 5
APPEND_STR_END VAR1, "2"
BOX CALCWIN1, 5, 30, 140, 20, 224, 232, 232, 2, 0, 0, 0
WIN_PRN "CALCWIN1","COURIER.FNT", 10, 37, 0, 0, 0, VARVAL VAR1, SOLID, LTRIM
BREAK 6
ELSE
APPEND_STR_END VAR2, "2"
BOX CALCWIN1, 5, 30, 140, 20, 224, 232, 232, 2, 0, 0, 0
WIN_PRN "CALCWIN1","COURIER.FNT", 10, 37, 0, 0, 0, VARVAL VAR2, SOLID, LTRIM
ENDIF
END_PROC B02 CLICK

PROC PRIVATE B03 CLICK ()
IF LEN6 > MAXLEN7 THEN GOELSE 3
BREAK 12
ENDIF
LEN6++
IF FLAG4 = 0 THEN GOELSE 5
APPEND_STR_END VAR1, "3"
BOX CALCWIN1, 5, 30, 140, 20, 224, 232, 232, 2, 0, 0, 0
WIN_PRN "CALCWIN1","COURIER.FNT", 10, 37, 0, 0, 0, VARVAL VAR1, SOLID, LTRIM
BREAK 6
ELSE
APPEND_STR_END VAR2, "3"
BOX CALCWIN1, 5, 30, 140, 20, 224, 232, 232, 2, 0, 0, 0
WIN_PRN "CALCWIN1","COURIER.FNT", 10, 37, 0, 0, 0, VARVAL VAR2, SOLID, LTRIM
ENDIF
END_PROC B03 CLICK

PROC PRIVATE B04 CLICK ()
IF LEN6 > MAXLEN7 THEN GOELSE 3
BREAK 12
ENDIF
LEN6++
IF FLAG4 = 0 THEN GOELSE 5
APPEND_STR_END VAR1, "4"
BOX CALCWIN1, 5, 30, 140, 20, 224, 232, 232, 2, 0, 0, 0
WIN_PRN "CALCWIN1","COURIER.FNT", 10, 37, 0, 0, 0, VARVAL VAR1, SOLID, LTRIM
BREAK 6
ELSE
APPEND_STR_END VAR2, "4"
BOX CALCWIN1, 5, 30, 140, 20, 224, 232, 232, 2, 0, 0, 0
WIN_PRN "CALCWIN1","COURIER.FNT", 10, 37, 0, 0, 0, VARVAL VAR2, SOLID, LTRIM
ENDIF
END_PROC B04 CLICK

PROC PRIVATE B05 CLICK ()
IF LEN6 > MAXLEN7 THEN GOELSE 3
BREAK 12
ENDIF
LEN6++
IF FLAG4 = 0 THEN GOELSE 5
APPEND_STR_END VAR1, "5"
BOX CALCWIN1, 5, 30, 140, 20, 224, 232, 232, 2, 0, 0, 0
WIN_PRN "CALCWIN1","COURIER.FNT", 10, 37, 0, 0, 0, VARVAL VAR1, SOLID, LTRIM
BREAK 6
ELSE
APPEND_STR_END VAR2, "5"
BOX CALCWIN1, 5, 30, 140, 20, 224, 232, 232, 2, 0, 0, 0
WIN_PRN "CALCWIN1","COURIER.FNT", 10, 37, 0, 0, 0, VARVAL VAR2, SOLID, LTRIM
ENDIF
END_PROC B05 CLICK

PROC PRIVATE B06 CLICK ()
IF LEN6 > MAXLEN7 THEN GOELSE 3
BREAK 12
ENDIF
LEN6++
IF FLAG4 = 0 THEN GOELSE 5
APPEND_STR_END VAR1, "6"
BOX CALCWIN1, 5, 30, 140, 20, 224, 232, 232, 2, 0, 0, 0
WIN_PRN "CALCWIN1","COURIER.FNT", 10, 37, 0, 0, 0, VARVAL VAR1, SOLID, LTRIM
BREAK 6
ELSE
APPEND_STR_END VAR2, "6"
BOX CALCWIN1, 5, 30, 140, 20, 224, 232, 232, 2, 0, 0, 0
WIN_PRN "CALCWIN1","COURIER.FNT", 10, 37, 0, 0, 0, VARVAL VAR2, SOLID, LTRIM
ENDIF
END_PROC B06 CLICK

PROC PRIVATE B07 CLICK ()
IF LEN6 > MAXLEN7 THEN GOELSE 3
BREAK 12
ENDIF
LEN6++
IF FLAG4 = 0 THEN GOELSE 5
APPEND_STR_END VAR1, "7"
BOX CALCWIN1, 5, 30, 140, 20, 224, 232, 232, 2, 0, 0, 0
WIN_PRN "CALCWIN1","COURIER.FNT", 10, 37, 0, 0, 0, VARVAL VAR1, SOLID, LTRIM
BREAK 6
ELSE
APPEND_STR_END VAR2, "7"
BOX CALCWIN1, 5, 30, 140, 20, 224, 232, 232, 2, 0, 0, 0
WIN_PRN "CALCWIN1","COURIER.FNT", 10, 37, 0, 0, 0, VARVAL VAR2, SOLID, LTRIM
ENDIF
END_PROC B07 CLICK

PROC PRIVATE B08 CLICK ()
IF LEN6 > MAXLEN7 THEN GOELSE 3
BREAK 12
ENDIF
LEN6++
IF FLAG4 = 0 THEN GOELSE 5
APPEND_STR_END VAR1, "8"
BOX CALCWIN1, 5, 30, 140, 20, 224, 232, 232, 2, 0, 0, 0
WIN_PRN "CALCWIN1","COURIER.FNT", 10, 37, 0, 0, 0, VARVAL VAR1, SOLID, LTRIM
BREAK 6
ELSE
APPEND_STR_END VAR2, "8"
BOX CALCWIN1, 5, 30, 140, 20, 224, 232, 232, 2, 0, 0, 0
WIN_PRN "CALCWIN1","COURIER.FNT", 10, 37, 0, 0, 0, VARVAL VAR2, SOLID, LTRIM
ENDIF
END_PROC B08 CLICK

PROC PRIVATE B09 CLICK ()
IF LEN6 > MAXLEN7 THEN GOELSE 3
BREAK 12
ENDIF
LEN6++
IF FLAG4 = 0 THEN GOELSE 5
APPEND_STR_END VAR1, "9"
BOX CALCWIN1, 5, 30, 140, 20, 224, 232, 232, 2, 0, 0, 0
WIN_PRN "CALCWIN1","COURIER.FNT", 10, 37, 0, 0, 0, VARVAL VAR1, SOLID, LTRIM
BREAK 6
ELSE
APPEND_STR_END VAR2, "9"
BOX CALCWIN1, 5, 30, 140, 20, 224, 232, 232, 2, 0, 0, 0
WIN_PRN "CALCWIN1","COURIER.FNT", 10, 37, 0, 0, 0, VARVAL VAR2, SOLID, LTRIM
ENDIF
END_PROC B09 CLICK

PROC PRIVATE B10 CLICK ()
IF LEN6 > MAXLEN7 THEN GOELSE 3
BREAK 12
ENDIF
LEN6++
IF FLAG4 = 0 THEN GOELSE 5
APPEND_STR_END VAR1, "0"
BOX CALCWIN1, 5, 30, 140, 20, 224, 232, 232, 2, 0, 0, 0
WIN_PRN "CALCWIN1","COURIER.FNT", 10, 37, 0, 0, 0, VARVAL VAR1, SOLID, LTRIM
BREAK 6
ELSE
APPEND_STR_END VAR2, "0"
BOX CALCWIN1, 5, 30, 140, 20, 224, 232, 232, 2, 0, 0, 0
WIN_PRN "CALCWIN1","COURIER.FNT", 10, 37, 0, 0, 0, VARVAL VAR2, SOLID, LTRIM
ENDIF
END_PROC B10 CLICK

PROC PRIVATE BDEC11 CLICK ()
IF LEN6 > MAXLEN7 THEN GOELSE 3
BREAK 12
ENDIF
LEN6++
IF FLAG4 = 0 THEN GOELSE 5
APPEND_STR_END VAR1, "."
BOX CALCWIN1, 5, 30, 140, 20, 224, 232, 232, 2, 0, 0, 0
WIN_PRN "CALCWIN1","COURIER.FNT", 10, 37, 0, 0, 0, VARVAL VAR1, SOLID, LTRIM
BREAK 6
ELSE
APPEND_STR_END VAR2, "."
BOX CALCWIN1, 5, 30, 140, 20, 224, 232, 232, 2, 0, 0, 0
WIN_PRN "CALCWIN1","COURIER.FNT", 10, 37, 0, 0, 0, VARVAL VAR2, SOLID, LTRIM
ENDIF
END_PROC BDEC11 CLICK

PROC PRIVATE PLUS12 CLICK ()
STORE LEN6, 0
IF FLAG4 = 0 THEN GOELSE 4
FLAG4++
STORE OP3, "+"
BREAK 7
ELSE
CALL DO_CALCULATIONS
BOX CALCWIN1, 5, 30, 140, 20, 224, 232, 232, 2, 0, 0, 0
WIN_PRN "CALCWIN1","COURIER.FNT", 10, 37, 0, 0, 0, VARVAL ANS5, SOLID, LTRIM
STORE OP3, "+"
ENDIF
END_PROC PLUS12 CLICK

PROC PRIVATE MINUS13 CLICK ()
STORE LEN6, 0
IF FLAG4 = 0 THEN GOELSE 4
FLAG4++
STORE OP3, "-"
BREAK 7
ELSE
CALL DO_CALCULATIONS
BOX CALCWIN1, 5, 30, 140, 20, 224, 232, 232, 2, 0, 0, 0
WIN_PRN "CALCWIN1","COURIER.FNT", 10, 37, 0, 0, 0, VARVAL ANS5, SOLID, LTRIM
STORE OP3, "-"
ENDIF
END_PROC MINUS13 CLICK

PROC PRIVATE DIV14 CLICK ()
STORE LEN6, 0
IF FLAG4 = 0 THEN GOELSE 4
FLAG4++
STORE OP3, "/"
BREAK 7
ELSE
CALL DO_CALCULATIONS
BOX CALCWIN1, 5, 30, 140, 20, 224, 232, 232, 2, 0, 0, 0
WIN_PRN "CALCWIN1","COURIER.FNT", 10, 37, 0, 0, 0, VARVAL ANS5, SOLID, LTRIM
STORE OP3, "/"
ENDIF
END_PROC DIV14 CLICK

PROC PRIVATE MUL15 CLICK ()
IF OP3 = "*" THEN GOELSE 11
FLAG4++
VAR2 = VAR1
IF VAR1 > 11111111 GOELSE 3
BREAK 19
ENDIF
CALL DO_CALCULATIONS
BOX CALCWIN1, 5, 30, 140, 20, 224, 232, 232, 2, 0, 0, 0
WIN_PRN "CALCWIN1","COURIER.FNT", 10, 37, 0, 0, 0, VARVAL ANS5, SOLID, LTRIM
STORE OP3, "="
BREAK 14
ENDIF
IF FLAG4 = 0 THEN GOELSE 5
FLAG4++
STORE OP3, "*"
STORE LEN6, 0
BREAK 8
ELSE
CALL DO_CALCULATIONS
BOX CALCWIN1, 5, 30, 140, 20, 224, 232, 232, 2, 0, 0, 0
WIN_PRN "CALCWIN1","COURIER.FNT", 10, 37, 0, 0, 0, VARVAL ANS5, SOLID, LTRIM
STORE OP3, "*"
STORE LEN6, 0
ENDIF
END_PROC MUL15 CLICK

PROC PRIVATE CLR17 CLICK ()
CALL DO_CALCULATIONS
BOX CALCWIN1, 5, 30, 140, 20, 224, 232, 232, 2, 0, 0, 0
WIN_PRN "CALCWIN1","COURIER.FNT", 10, 37, 0, 0, 0, "0", SOLID, LTRIM
STORE OP3, ""
STORE VAR1, ""
STORE VAR2, ""
STORE ANS5, 0
STORE FLAG4, 0
STORE LEN6, 1
END_PROC CLR17 CLICK

PROC PRIVATE EQL16 CLICK ()
STORE LEN6, 0
CALL DO_CALCULATIONS
BOX CALCWIN1, 5, 30, 140, 20, 224, 232, 232, 2, 0, 0, 0
IF ANS5 = 0 THEN GOELSE 3
WIN_PRN "CALCWIN1","COURIER.FNT", 10, 37, 0, 0, 0, "0", SOLID
BREAK 3
ELSE
WIN_PRN "CALCWIN1","COURIER.FNT", 10, 37, 0, 0, 0, VARVAL ANS5, SOLID, LTRIM
ENDIF

STORE OP3, "="
END_PROC EQL15 CLICK

PROC PRIVATE PM18 CLICK ()
IF FLAG4 = 0 THEN GOELSE 5
NEG VAR1
BOX CALCWIN1, 5, 30, 140, 20, 224, 232, 232, 2, 0, 0, 0
WIN_PRN "CALCWIN1","COURIER.FNT", 10, 37, 0, 0, 0, VARVAL VAR1, SOLID, LTRIM
ENDIF
END_PROC PM18 CLICK

PROC PRIVATE SQRT19 CLICK ()
IF FLAG4 = 0 THEN GOELSE 5
VAR1 = VAR1 ^ 0.5
BOX CALCWIN1, 5, 30, 140, 20, 224, 232, 232, 2, 0, 0, 0
WIN_PRN "CALCWIN1","COURIER.FNT", 10, 37, 0, 0, 0, VARVAL VAR1, SOLID, LTRIM
ENDIF
END_PROC SQRT19 CLICK

* User defined procedure to calculate the result
PROC DO_CALCULATIONS
IF OP3 = "+" THEN GOELSE 5
ANS5 = VAR1 + VAR2
VAR1 = ANS5
STORE VAR2, ""
BREAK 2
ENDIF
IF OP3 = "-" THEN GOELSE 5
ANS5 = VAR1 - VAR2
VAR1 = ANS5
STORE VAR2, ""
BREAK 2
ENDIF
IF OP3 = "*" THEN GOELSE 5
ANS5 = VAR1 * VAR2
VAR1 = ANS5
STORE VAR2, ""
BREAK 2
ENDIF
IF OP3 = "/" THEN GOELSE 5
ANS5 = VAR1 / VAR2
VAR1 = ANS5
STORE VAR2, ""
BREAK 2
ENDIF
IF OP3 = "=" THEN GOELSE 3
STORE VAR2, ""
ENDIF
IF ANS5 > 9999999999 THEN GOELSE 2
LEN6 = MAXLEN7 + 1
ENDIF
END_PROC
Reply
#2
PSsssst, post code in


to keep indentation.
b]Hard Rock[/b]
[The Stars Dev Company] [Metal Qb flopped] [The Terror]
Stop Double Posts!
Whats better? HTML or Variables?
Reply
#3
What you did is nice, but I'd make it more QB-ish. Smile
Peace cannot be obtained without war. Why? If there is already peace, it is unnecessary for war. If there is no peace, there is already war."

Visit www.neobasic.net to see rubbish in all its finest.
Reply
#4
I like more of C++ and my own conjuering than using QB. Yet it is similar to QB.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)