   %routine Sort Hash(%integer a, b)
      %integer Dump
      %integer l, u
      %while a < b %cycle
         l = a;  u = b
         dump = Hash(u);  ->find

up:      l = l+1;  ->found %if l = u
find:    ->up %unless Hash(l) > dump
         Hash(u) = Hash(l)
down:    u = u-1;  ->found %if l = u
         ->down %unless Hash(u) < dump
         Hash(l) = Hash(u)
         ->up

found:   Hash(u) = dump
         l = l-1;  u = u+1
         %if l-a > b-l %start
            Sort Hash(u, b);  b = l
         %else
            Sort Hash(a, l);  a = u
         %finish
      %repeat
   %end
