DroidDB Tip of the Month
DroidDB® Tip for September 2019
"IF...THEN...ELSE", "FOR...NEXT", "WHILE...DO", and "REPEAT...UNTIL" in a Macro
When writing computer programs, "real" computer progammers control the sequence of operations using "IF...THEN...ELSE", "FOR...NEXT", "WHILE...DO", and "REPEAT...UNTIL". You can build these sort of consructs in a Visual CE macro.
First some background information...
DroidDB has a SKIP command. The SKIP command tells DroidDB to skip commands in a sequence. For example, if the commands are:
Command 1: << operation 1 >> Command 2: SKIP 2 Command 3: << operation 3 >> Command 4: << operation 4 >> Command 5: << operation 5 >> Command 6: << operation 6 >>then operations 1, 5, and 6 will be performed.
The number of buttons to skip can be an expresssion. For example
SKIP (3 + 5)would skip 8 operations.
This expression can be in the form
if << condition >> then << expression_1 >> else << expression_2 >>
In this example:
Command 1: << operation 1 >> Command 2: SKIP (if @var(34) = 18 then 0 else 2) Command 3: << operation 3 >> Command 4: << operation 4 >> Command 5: << operation 5 >> Command 6: << operation 6 >>operations 1, 3, 4, 5, and 6 will be done if @var(34) is 18. Otherwise only operations 1, 5, and 6 will be done.
Negative numbers can be used to skip backwards in the sequence. In this example:
Command 1: << operation 1 >> Command 2: << operation 2 >> Command 3: << operation 3 >> Command 4: SKIP -2operations 1, 2, 3, 2, 3, 2, 3, ... will be done (as an infinite loop).
So, here's how to create the control constructs:
if << condition >> then ... else ...
Command 1: SKIP (if << condition >> then 0 else 3) Command 2: << operation 2 >> Command 3: << operation 3 >> Command 4: SKIP 2 Command 5: << operation 5 >> Command 6: << operation 6 >> Command 7: << operation 7 >>
for @var(45) = 1 to 10 ... next
Command 1: ASSIGN 1 to @var(45) Command 2: SKIP (if @var(45) > 10 then 4 else 0) Command 3: << operation 3 >> Command 4: << operation 4 >> Command 5: assign @var(45) + 1 to @var(45) Command 6: SKIP -4 Command 7: << operation 6 >>
while (<< condition >>) do
Command 1: SKIP (if << condition >> then 0 else 3) Command 2: << operation 2 >> Command 3: << operation 3 >> Command 4: SKIP -3 Command 5: << operation 5 >>
repeat until << condition >>
Command 1: << operation 1 >> Command 2: << operation 2 >> Command 3: SKIP (if << condition >> then 0 else -2) Command 4: << operation 4 >>