Chapter 7. Statements

Table of Contents
Assignments
Goto Statements
Procedure Statements
Answer Statements
Code Statements
Compound Statements
Blocks
Dummy Statements
Conditional Statements
For Statements


      Statement ::= 
    Label : Statement
      Simplestatement
      Conditionalstatement
      Forstatement
    


      Simplestatement ::= 
    Assignmentstatement
      Gotostatement
      Procedurecall
      Answerstatement
      Codestatement
      Compoundstatement
      Block
      Dummystatement
    

Statements are normally executed in the order in which they were written, except that a goto statement may interrupt this sequence without return, and a conditional statement may cause certain statements to be skipped.

Assignments

The left-hand side of an assignment statement is always a data reference, and the right-hand side an expression for procuring a numerical value. The result of the assignment is that the left-hand side refers to the new value until this is changed by further assignment, or until the value is lost because the reference goes out of scope (but see ). The expression on the right hand side is evaluated to the numeric type of the reference, with automatic scaling and rounding as necessary. The left-hand side may be a word reference as defined in or it may be a part-word reference, i.e. a part-word table-element or some selected field of a word reference. When assignment is made to a part-word reference, the remaining bits of the word are unaltered. As examples of assignment,


[LOCATION(i) + 1] := 3.8

        

has the effect of placing the integer 4 in the location succeeding that allocated to i, and


          BITS[2,6]x := 3

        

has the effect of placing the binary digits 11 in bits 7 and 6 of the word allocated to x. This last assignment statement is treated in a similar manner to an assignment which has on its left-hand side an unsigned integer table-element. The statement


          BITS[1,23][LOCATION(i) + 1] := 1

        

would in a 24-bit machine, force the sign bit in the indicated location to one. The syntax of the assignment statement is


        Assignmentstatement ::= 
    Variable := Expression
      


        Variable ::= 
    Wordreference
        Partwordreference
      


        Partwordreference ::= 
    Id [ Index ]
    BITS [ Totalbits , Bitposition ] Wordreference
      

There is no form of multiple assignment statement.