CONTENTS

 1     Introduction
        1.1     General
        1.2     Language survey
        1.3     Modes and classes
        1.4     Locations and their accesses
        1.5     Values and their operations
        1.6     Actions
        1.7     Input and output
        1.8     Exception handling
        1.9     Time supervision
       1.10     Program structure
       1.11     Concurrent execution
       1.12     General semantic properties
       1.13     Implementation options
 2     Preliminaries
        2.1     The metalanguage
        2.2     Vocabulary
        2.3     The use of spaces
        2.4     Comments
        2.5     Format effectors
        2.6     Compiler directives
        2.7     Names and their defining occurrences
 3     Modes and classes
        3.1     General
        3.2     Mode definitions
        3.3     Mode classification
        3.4     Discrete modes
        3.5     Real modes
        3.6     Powerset modes
        3.7     Reference modes
        3.8     Procedure modes
        3.9     Instance modes
       3.10     Synchronization modes
       3.11     Input-Output Modes
       3.12     Timing modes
       3.13     Composite modes
       3.14     Dynamic modes
       3.15     Moreta Modes
 4     Locations and their accesses
        4.1     Declarations
        4.2     Locations
 5     Values and their operations
        5.1     Synonym definitions
        5.2     Primitive value
        5.3     Values and expressions
 6     Actions
        6.1     General
        6.2     Assignment action
        6.3     If action
        6.4     Case action
        6.5     Do action
        6.6     Exit action
        6.7     Call action
        6.8     Result and return action
        6.9     Goto action
       6.10     Assert action
       6.11     Empty action
       6.12     Cause action
       6.13     Start action
       6.14     Stop action
       6.15     Continue action
       6.16     Delay action
       6.17     Delay case action
       6.18     Send action
       6.19     Receive case action
       6.20     CHILL built-in routine calls
 7     Input and Output
        7.1     I/O reference model
        7.2     Association values
        7.3     Access values
        7.4     Built-in routines for input output
        7.5     Text input output
 8     Exception handling
        8.1     General
        8.2     Handlers
        8.3     Handler identification
 9     Time supervision
        9.1     General
        9.2     Timeoutable processes
        9.3     Timing actions
        9.4     Built-in routines for time
10     Program Structure
       10.1     General
       10.2     Reaches and nesting
       10.3     Begin-end blocks
       10.4     Procedure specifications and definitions
       10.5     Process specifications and definitions
       10.6     Modules
       10.7     Regions
       10.8     Program
       10.9     Storage allocation and lifetime
      10.10     Constructs for piecewise programming
      10.11     Genericity
11     Concurrent execution
       11.1     Processes, tasks, threads and their definitions
       11.2     Mutual exclusion and regions
       11.3     Delaying of a thread
       11.4     Re-activation of a thread
       11.5     Signal definition statements
       11.6     Completion of Region and Task locations
12     General semantic properties
       12.1     Mode rules
       12.2     Visibility and name binding
       12.3     Case selection
       12.4     Definition and summary of semantic categories
13     Implementation options
       13.1     Implementation defined built-in routines
       13.2     Implementation defined integer modes
       13.3     Implementation defined floating point modes
       13.4     Implementation defined process names
       13.5     Implementation defined handlers
       13.6     Implementation defined exception names
       13.7     Other implementation defined features
Appendix I – Character set for CHILL
Appendix II – Special symbols
Appendix III – Special simple name strings
      III.1     Reserved simple name strings
      III.2     Predefined simple name strings
      III.3     Exception names
Appendix IV – Program examples
       IV.1     Operations on integers
       IV.2     Same operations on fractions
       IV.3     Same operations on complex numbers
       IV.4     General order arithmetic
       IV.5     Adding bit by bit and checking the result
       IV.6     Playing with dates
       IV.7     Roman numerals
       IV.8     Counting letters in a character string of arbitrary length
       IV.9     Prime numbers
      IV.10     Implementing stacks in two different ways, transparent to the user
      IV.11     Fragment for playing chess
      IV.12     Building and manipulating a circularly linked list
      IV.13     A region for managing competing accesses to a resource
      IV.14     Queuing calls to a switchboard
      IV.15     Allocating and deallocating a set of resources
      IV.16     Allocating and deallocating a set of resources using buffers
      IV.17     String scanner1
      IV.18     String scanner2
      IV.19     Removing an item from a double linked list
      IV.20     Update a record of a file
      IV.21     Merge two sorted files
      IV.22     Read a file with variable length records
      IV.23     The use of spec modules
      IV.24     Example of a context
      IV.25     The use of prefixing and remote modules
      IV.26     The use of text i/o
      IV.27     A generic stack
      IV.28    An abstract data type
      IV.29     Example of a spec module
      IV.30     Object-Orientation: Modes for Simple, Sequential Stacks
      IV.31     Object-Orientation: Mode Extension: Simple, Sequential Stack with Operation "Top"
      IV.32     Object-Orientation:  Modes for Stacks with Access Synchronization
Appendix V – Decommitted features
        V.1     Free directive
        V.2     Integer modes syntax
        V.3     Set modes with holes
        V.4     Procedure modes syntax
        V.5     String modes syntax
        V.6     Array modes syntax
        V.7     Level structure notation
        V.8     Map reference names
        V.9     Based declarations
       V.10     Character string literals
       V.11     Receive expressions
       V.12     Addr notation
       V.13     Assignment syntax
       V.14     Case action syntax
       V.15     Do for action syntax
       V.16     Explicit loop counters
       V.17     Call action syntax
       V.18     RECURSEFAIL exception
       V.19     Start action syntax
       V.20     Explicit value receive names
       V.21     Blocks
       V.22     Entry statement
       V.23     Register names
       V.24     Recursive attribute
       V.25     Quasi cause statements and quasi handlers
       V.26     Syntax of quasi statements
       V.27     Weakly visible names and visibility statements
       V.28     Weakly visible names and visibility statements
       V.29     Pervasiveness
       V.30     Seizing by modulion name
       V.31     Predefined simple name strings
Appendix VI – Index of production rules