LET

        [SIC\]LET Variable [=] [Expression]
        [SIC\]LET Variable [=] Expression /CHOICE Value_1 ... Value_n
        [SIC\]LET Variable [=] Expression /FILE Filter
        [SIC\]LET Variable [=] Expression /FORMAT format_string
        [SIC\]LET Variable [=] Expression /FORMULA
        [SIC\]LET Variable [=] Expression /INDEX Value_1 ... Value_n
        [SIC\]LET Variable [=] Expression /LOWER
        [SIC\]LET Variable [=] Expression /NEW Type [Attr]
        [SIC\]LET Variable [=] Expression /PROMPT "Explanatory text"
        [SIC\]LET Variable [=] Expression /RANGE Min Max
        [SIC\]LET Variable [=] OldVariable /REPLACE
        [SIC\]LET Variable [=] Value_1 ... Value_n /RESIZE
        [SIC\]LET Variable [=] Expression /SEXAGESIMAL
        [SIC\]LET Variable [=] Val1 ... ValN /RESIZE
        [SIC\]LET Variable /STATUS Read|Write
        [SIC\]LET Variable [=] Expression /UPPER
        [SIC\]LET Variable [=] Expression /WHERE Condition_mask

    Assign  a value to a variable. The variable must already be defined (see
    HELP DEFINE) unless the /NEW option is present. Logical  expression  re-
    sults  cannot  be assigned to non logical variables, and vice versa. All
    numerical expression evaluations are done in double precision, and auto-
    matically converted to the type of (numerical) variable assigned.

    The  equal sign may be always omitted EXCEPT when using Free Syntax (see
    HELP LET Free_Syntax).

    If no value is assigned to the Variable, the user will be  prompted  for
    the  variable value. The Prompt text can be defined with the /PROMPT Op-
    tion.

    VECTOR OPERATION:

    Operations are vectorial, i.e. a full array  is  computed  at  the  same
    time. The variable name can define a subset of an known array, such as:
        DEFINE REAL A[4,5,6] B[4]
        LET A[,,3]  = 1.0  ! or equivalently  LET A[3] = 1.0
        LET A[,2,2] = B    ! or equivalently  LET A[2,2] = B
    These  commands  assign the value 1.0 to A[i,j,3], with i running from 1
    to 4 and j from 1 to 5, and B[k] to A[k,2,2] for k from 1 to 4.  Implic-
    it  transposition  is  now  allowed, though still somewhat experimental:
    both A[,2,3] and A[2,,3] are valid. A range of indexes can be  specified
    rather than one index: for the above example A[3:5] is a valid 4x5x3 ar-
    ray, A[2:4,,] is a 3x5x6 array.

    IMPLICIT LOOPS:

    In addition to vector computing, it is possible to assign an array using
    "implicit  loops"  with  implicit  (undeclared)  integer variables, i.e.
    functions of the array indices such as
        DEFINE REAL A[4,5]
        LET A[I,J] = (I-J)**2
    A few rules apply:
    - In the assigned array (left-hand side argument),  the  implicit  vari-
      ables  can  only appear as indices. They cannot be mixed with explicit
      index values. For example in the LET A[I,J] assignment, if I  was  de-
      fined  with  DEFINE  INTEGER I (i.e. an explicit variable), then J can
      not be implicit.
    - In the evaluated expression (right-hand side argument),  the  implicit
      variables  can only appear as variables, not indices (e.g.  LET A[I,J]
      B[I] is invalid). They can be omitted if relevant  (e.g.   LET  A[I,J]
      I**2 with no use of J).

    CONDITION MASK (/WHERE option):

    Vector  assignment  can be done only where a specified logical array (or
    logical array expression) is true, using the /WHERE option. See HELP LET
    /WHERE.


Subsections