Post Reply 
From 6 single program blocks make one Program!?
03-27-2017, 10:13 AM
Post: #1
From 6 single program blocks make one Program!?
How can I create from 6 single program blocks a single with jump address like in Basic the GOTO statement?
Find all posts by this user
Quote this message in a reply
03-27-2017, 11:23 AM (This post was last modified: 03-27-2017 11:26 AM by Didier Lachieze.)
Post: #2
RE: From 6 single program blocks make one Program!?
If you want to simulate the GOTO statement you can use a loop like this one:

Code:
EXPORT Test()
BEGIN
  LOCAL Line;
  Line:=1;
  WHILE Line<>0 DO
    CASE
    IF Line==1 THEN <Block1>;Line:=2; END;
    IF Line==2 THEN <Block2>;Line:=3; END; 
    IF Line==3 THEN <Block3>;Line:=4; END; 
    IF Line==4 THEN <Block4>;Line:=5; END;
    IF Line==5 THEN <Block5>;Line:=6; END;
    IF Line==6 THEN <Block6>;Line:=0; END;
    DEFAULT Print("Error, Line: "+Line);
    END;
  END;
END;

The variable Line is simulating the BASIC line number, each bloc is executed depending on the value of Line and at the end of each block you have to set Line to the value of the next bloc to be executed, this way you can “jump” to the line number you want. You exit the sequence by setting Line to 0.

This should work but it is pretty cumbersome. It may be better to change your code to avoid the need of GOTO.

See here for the original idea.
Find all posts by this user
Quote this message in a reply
03-27-2017, 12:22 PM
Post: #3
RE: From 6 single program blocks make one Program!?
Since you have 6 single program blocks, would configuring them as subroutines work for you? You can then "goto" them by using their program name.

Here's a little example:

Code:

// Declare Subroutines Here

clrscrn();   // Clears screen and redraws softmenu

// prog1();  // Your subroutines here ...
// prog2();
// prog3();
// prog4();
// prog5();
// prog6();

EXPORT concept()
BEGIN

  clrscrn;
  RECT_P(G0,0,0,320,220,rgb(0,255,0));
  WAIT(2);

//  Do some things.
//  .
//  prog3; // subroutine might be used here
//  .
//  --------------

  clrscrn;
  RECT_P(G0,0,0,320,220,rgb(255,0,0));
  WAIT(2);

//  Do some more things.
//  .
//  prog5; // subroutine might be used here, etc.
//  .
//  --------------

END;
// ==== End of Main Program ====

// ---- Subroutine Programs ----

clrscrn()
BEGIN
  RECT();           // Clear Screen
  DRAWMENU("Prog1","Prog2","Prog3","Prog4","Prog5","Prog6");     // Menu labels
  RETURN;
END;
// ==== End of clrscrn() Subroutine ====
Find all posts by this user
Quote this message in a reply
03-29-2017, 07:13 AM
Post: #4
RE: From 6 single program blocks make one Program!?
@ Didier, Thanks for your suggestions, which are great!
Find all posts by this user
Quote this message in a reply
Post Reply 




User(s) browsing this thread: 1 Guest(s)