LET

Syntax [LET] variable=expression
Location QL ROM

The command LET has only been implemented to make SuperBASIC more compatible with other versions of BASIC. It assigns a specific value to the specified variable, which can be of any type. The command may actually be omitted altogether. Normally any mistake in this command results in an ‘Error in Expression’ report.

Examples

LET x=100+10\*20

Assigns the value 300 to the variable x.

x=100+10\*20

Is exactly the same as above.

LET a$='Hello '&x

This places the string ‘Hello 300’ into the variable a$. The value of x is converted into a string and then appended.

LET position(100)=10

This assigns the value 10 to the 101st element of the array position (see DIM).

NOTE 1

On the AH ROM, you need to be careful of what is being assigned to a numerical variable: LET X=”.” did not produce an error on this ROM. Compare this with LET X=‘0.12’ which in fact assigns the value 0.12 to the variable x due to coercion.

NOTE 2

It may be useful to explain the error codes which may be reported when trying to assign a value to a variable. Under SMS the improved interpreter will report more meaningful errors if you try to use this command incorrectly and therefore it is these errors which are highlighted.

Assignment can only be to a variable or array element

This is reported if you try to assign a value to a Procedure or Function name, eg: PRINT = 100

On other versions this causes an …

Error in Expression
When assigning values to arrays there are four possible error reports:
Only arrays or strings may be indexed
This will be reported if you try to assign a value to an undimensioned array, for example if you used the line: position (100)=10 without having used the line: DIM position (200) beforehand. On other implementations, this causes the error …

Bad Name

Cannot assign to sub-array
We have not been able to find a situation when this error occurs.
Unacceptable array index list

This is reported normally if you try to use too many indices to reference an existing array, for example: DIM x(100) : PRINT x(10,10)

On other implementations this causes an

Out of Range

Array index out of range

This is reported if you try to use an index which is greater than that used when the array was dimensioned, for example: DIM x(100) : x(101)=100

On other implementations this also causes an

Out of Range

WARNING

On SMS, you can easily crash SBASIC by missing out an index on an assignment to a DIMensioned array, for example:

DIM x(100) x (10, ) = 100

Will report Not Complete:

x(10, , ) = 100

Will crash SBASIC.

On Minerva (and possibly other ROM versions) both of these merely report ‘Error In Expression’.

CROSS-REFERENCE

READ and INPUT also allow you to assign a value to a variable.