Now, if a task A reaches an entry call X before an ACCEPT 'amber': status:= stop; statement with the entry name X and another process has been 'green': status:= go reached then A is halted. Similarly, if a task B reaches an ACCEPT statement with entry name X before another task has reached a call to that entry then X is suspended. When the matched entry call and There are three loop constructs: for, while and repeat until. ACCEPT statement have both been reached, the rendezvous can Illustrating the first of these: take place. If no other task is ready to call X in B then task B must wait. The for m:= jan to dec do no.days[m]:=31; SELECT statement allows conditions, known as guards, to be set on ACCEPT statements. These statements encourage the programmer to write clear well When the task reaches the SELECT statement: structured code. The encouragement can, of course, be ignored. As a language for teaching Pascal has served admirably, and it has 1. All the guards are calculated. been used in a wide range of real applications. However, for some 2. One of those ACCEPTS for which the guard is true and for purposes it has deficiencies such as the coding of real-time systems which entry calls are pending is chosen at random, and the demanding concurrent processing, and to cope with issues such as rendezvous occurs. these more complex languages have been defined. Two such are Ada If no rendezvous is possible the task is suspended until one of and CHILL. the open entry calls is made. A comprehensive discussion of ways of expressing parallelism in 25.6.2.2 programming languages is given in Bal (1989). Ada (Pyle, 1981) arose from an initiative by the United States Department of Defence to address the rapidly increasing cost of 25.6.2.3 CHILL software by reducing the number of programming languages in use at the time. It was decided that none of those available was adequate CHILL (CCITT, 1980) was developed at the request of the CCITT. to serve for all tasks and SO a competition was set in place to find a It is also descend