12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- #include "dec.ocm"
- -- This file contains a recursive call to sorter, so this is not really Occam.
- var c:
- seq
- c:='*s'
- proc comparator(value num, chan in, out)=
- var old.num, new.num:
- seq
- old.num:=num
- in ? new.num
- while new.num
- seq
- in ? new.num
- if
- new.num<=old.num
- out ! true; new.num
- new.num>old.num
- seq
- out ! true; old.num
- old.num:=new.num
- in ? new.num
- out ! true; old.num; false
- :
- proc sorter(chan out)=
- chan in:
- var num:
- seq
- decin(input, num, c)
- if
- c<0
- out ! false
- c>=0
- par
- sorter(in)
- comparator(num, in, out)
- :
- chan out:
- var num:
- par
- sorter(out)
- seq
- out ? num
- while num
- seq
- out ? num
- decout(output, num, 0)
- output ! '*n'
- out ? num
|