-- This file contains a recursive call to sorter, so this is not really Occam. #include "dec.ocm" 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