## Miscellaneous Info

### iziBasic Syntax

Legend:
  n is Number or Defined Constant
  v is NumVar (A-Z or a user defined NumVar with the DIM statement)
  f is NumFunction
  c is TextVar (A$-Z$ or a user defined TextVar with the DIM statement)
  t is Text
  s is TextFunction

v|n is either NumVar, Number or Defined Constant
c|t|s is either TextVar, Text or TextFunction
and so on...

Notes:

- v|n are 32 bit float IEEE 754 compatible numbers
- numbers can be passed in integer format ([-]n[n][..]), in float format ([-]n[n][...].n[n][...]) or in exponential format ([-]n.nnnnnnne[-]nn)
- c|t are strings of characters with up to 63 characters
- character "¶" is CR/LF within c and t

Variables Assignment and Calculation:
In statements, v|n or c|t cannot be an aggregate of calculations. So, in iziBasic, you should work this way (with an example):

C=3*COS(B)+5 : D=MAX(A,B)
IF C < D PRINT "OK"
E=MIN(A,B) : E=5*MAX(C,E)

When with some other Basic compilers or interpreters you could do:

IF 3*COS(B)+5 < MAX(A,B) PRINT "OK"
E=5*MAX(C,MIN(A,B))

Compiling directives, statements and functions in GREEN (also marked with a little $ glyph for those using a black & white screen) are only available in the full version of iziBasic.

### iziBasic Source Code Skeleton

iziBasic requires you to put these very few lines to detect and compile a minimum source code:

  ' YourProgramName.ibas
  {CREATORID "XXXX"}
  BEGIN
  END

Notes:

- replace YourProgramName by the name you want for your program. This comment line, with a program name ended by a ".ibas" extension) has to be the very first one of your source code for iziBasic to detect that this is an iziBasic source code
- replace XXXX by the Palm Creator ID of your program

But, you might rather want to use the Source Code Skeleton wizard which is provided by iziBasic to ease this skeleton setup.

### Math Operators and Precedence

iziBasic recognizes the following operators, with their level of precedence given (1=lowest and 6=highest):

  - | 6 unary minus sign
  ^ | 5 exponentiation
  * | 4 multiplication
  / | 4 division
  \ | 4 integer division
  MOD | 4 modulus (remainder) arithmetic
  + | 3 addition
  - | 3 subtraction
  = | 2 equality
  <> | 2 inequality
  < | 2 less than
  > | 2 greater than
  <= | 2 less than or equal to
  >= | 2 greater than or equal to
  AND | 1 conjunction
  OR | 1 disjunction
  XOR | 1 exclusive or

### Defined Constants

  TRUE is 1
  FALSE is 0
  MAYBE is 0.5
  EXP is 2.718281828
  PI is 3.141592654
  VERSION iziBasic version, format is M.m (Major.minor)

### Test Operators

  = equality
  <> inequality
  < less than
  > greater than
  <= less than or equal to
  >= greater than or equal to

### Labels

label:

Notes:

- As from version 5.0 of iziBasic, labels are no more case sensitive, therefore LABEL is now the same thing as Label or label
- You can put up to 255 labels and user defined variables in one source code
- Only the 20 first characters of a label are taken into account by iziBasic

Advice:
Make sure that none of your labels starts with a reserved keyword. For example, CloseMyForm: or GoToMySubRoutine: are not good (and will lead to strange behaviors either at compilation time or at execution time!) when MyFormClose and JumpToMySubRoutine are valid. A good practice/trick to make sure this does not happen is to prefix all your labels with a set of characters like "lbl" (which stands for LaBeL) or the "_" (underscore) character. lblCloseMyForm or _GotoMySubRoutine are valid labels.

### Statements

SingleStatement [: SingleStatement] [...]

Notes:

- a SingleStatement MUST be <62 characters long
- statements are not case sensitive