# DO File Statements
> [HTML Version](dofilestatements.htm)
_Reviewed and reorganized June 2020_
**System Commands in DO Files**
Several system commands are of use mainly or only in the context a command or DO file. Those system commands are:
| **Command** | **Description** |
|------|------|
| [ECHO](echo_lit.htm.md) | Echoes to screen. |
| [ELSE](else_lit.htm.md) | Conditional flow in command file. |
| [ENDIF](else_lit.htm.md) |
| [IF](else_lit.htm.md) |
| [EXIT](exit_lit.htm.md) | Exit command or DO file. |
**IF / ELSE / ENDIF Statements**
These statements are similar to their ASB counterparts. The following functions and expressions are supported by IF, with the same syntax as for ASB:
| | | | | | | |
|------|------|------|------|------|------|------|
| ABS | CHR | FACT | LEFT | MID | SPACE | UCS |
| ACS | COS | FIX | LEN | RIGHT | SQR | VAL |
| ASC | DATN | INSTR | LOG | RND | STR | |
| ASN | DEVICE | INT | LOG10 | SGN | TAN | |
| ATN | EXP | LCS | LOOKUP | SIN | TIME | |
The following operators are supported:
| **Relational Operators** | | **** | **Mathematical Operators** |
|------|------|------|------|------|
| **Symbol** | **Meaning** | **** | **Symbol** | **Meaning** |
| = | Equal | | \+ | Addition |
| <> | Not equal | | \- | Subtraction |
| \# | Not equal | | \* | Multiplication |
| \> | Greater than | | / | Division |
| \>= | Greater than or equal | | ^ | Raise to power |
| < | Less than | | \*\* | Raise to power |
| <= | Less than or equal | | | |
**Comments**
Note that unlike in ASB where many of the above functions could optionally have a \$ suffix (e.g. LEFT or LEFT\$), in DO files the \$ variation is not acceptable.
IF statements frequently operate on the [Special \$ Variables](special$variables.htm.md), which see for further comments and examples.
**GOTO and EXIT Statements**
GOTO is similar to the ASB GOTO statement, except that it can only jump forward in the command file. The syntax of a label consists of a semicolon followed by the label name. See the label ";DONE" in the sample [MAIN.DO](commandfiles.htm.md) file.
EXIT causes an immediate exit to the A-Shell command prompt, even if you are currently nested multiple levels deep in a command file.
**LOOKUP Statement**
The most useful of the above functions, LOOKUP, works slightly differently than the BASIC_plus_ equivalent. Instead of returning the file size, it always returns –1 if the file exists, else 0. The syntax is also different:
**LOOKUP /Optional message if not found**
If the specified file is not found, the optional message (following the /, which is mandatory) is displayed and execution continues with the following line. Otherwise, the following line is skipped. Typically this is used with GOTO to create a conditional branch, as in the following:
LOOKUP \$0/\$0 does not exist\!
GOTO DONE ; (EXIT might also be appropriate here)
VUE \$0
;DONE