END

From STX Wiki
Jump to navigation Jump to search

The END statement closes a block of commands started with a block IF or with a loop command (FOR, DO, WHILE, FOREVER).

The IF statement

There are two forms of the IF syntax. The first allows the conditional execution of one command:

IF condition singlecommand
IFNOT condition singlecommand

The second allows conditional execution of multiple commands within a block:

IF condition1 THEN
   …
ELSE IF condition2 THEN
   …
ELSE IFNOT conditionn THEN
   …
ELSE
   …
END

Note that only the IF clause is mandatory, all other clauses are optional. Empty clauses (i.e., clauses without commands) are allowed. The last clause must be closed with an END statement. For more information on conditions see Conditional Expressions.

Neither the condition nor the singlecommand should contain the string THEN. If either does, in most cases STx will amazingly mistake the whole command for an ill-formed IFTHENEND block.

The WHILE, or DO WHILE command

WHILE condition
   …
END

or

DO WHILE condition
   …
END

Provided that the conditional expression condition holds true, the commands in the block enclosed by the WHILE, or DO WHILE, and the corresponding END statement are repeatedly executed until condition becomes false.

To put it more bluntly: The condition is always tested on the begin of the loop, that is, before executing the respective block of commands. With STx, there is no explicit loop statement checking its condition at the end of the loop, but if this is what you are longing for, you will find relief by combining the FOREVER statement with an appropriate IF, and BREAK, statement.

Note that it is perfectly legal to prematurely leave a loop with a GOTO statement, though, generally, GOTO is considered harmful.

The FOREVER, or DO FOREVER command

The FOREVER, or DO FOREVER, statement starts a, potentially infinite, loop. The commands between FOREVER or DO FOREVER and the corresponding END statement are being executed forever, or until execution of the loop gets interrupted by other means, e.g. by STx crashing, a BREAK statement being encountered, or an EXIT, or a GOTO statement being executed.

FOREVER

or

DO FOREVER

Cave: If you do not use a BREAK, EXIT, or GOTO command for interrupting the loop, it may run for a really long time.