Example 12.9. Example of a Rexx Monitor Class
::method init /* Initialize the bounded buffer */ expose size in out n use arg size in = 1 out = 1 n = 0 ::method append unguarded /* Add to the bounded buffer if not full */ expose n size b. in guard on when n < size use arg b.in in = in//size+1 n = n+1 ::method take /* Remove from the bounded buffer if not empty */ expose n b. out size guard on when n > 0 reply b.out out = out//size+1 n = n-1