Scripting language. - Printable Version +- Qbasicnews.com (http://qbasicnews.com/newforum) +-- Forum: QBasic (http://qbasicnews.com/newforum/forum-4.html) +--- Forum: QB Projects (http://qbasicnews.com/newforum/forum-12.html) +--- Thread: Scripting language. (/thread-951.html) |
Scripting language. - TheBigBasicQ - 05-25-2003 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 Scripting language. - Hard Rock - 05-25-2003 PSsssst, post code in to keep indentation. Scripting language. - Agamemnus - 05-26-2003 What you did is nice, but I'd make it more QB-ish. Well... - TheBigBasicQ - 05-26-2003 I like more of C++ and my own conjuering than using QB. Yet it is similar to QB. |