La gestión del peso de la caja se realiza en el proceso Empaquetador. Se utiliza una variable pesoActual para controlar el peso de la caja. Toma una pasta del Mostrador, determina cual seía el pesoActual resultante al sumar el peso de la pasta. Se dan dos casos:
----------------------------------------- TASK Empaquetador; VAR pasta : TipoPasta; pesoActual : CARDINAL; BEGIN pesoActual := 0; LOOP Mostrador.TomarPasta (pasta); INC(pesoActual, Peso(pasta)); IF pesoActual > PesoMaximo THEN CAJA.ExcedePeso; CAJA.AlmacenarPasta (pasta); pesoActual := Peso(pasta); ELSE CAJA.AlmacenarPasta (pasta); END (* IF *) END (* LOOP *) END Empaquetador; -------------------------------------------------------------------------- CAPSULA Caja; VAR pesoActual : CARDINAL (* valor inicial : 0 *); VAR reponer : BOOLEAN (* valor inicial : FALSE *); VAR retirar : BOOLEAN (* valor inicial : FALSE *); OPERACION ExcedePeso; PRE: TRUE POST: retirar OPERACION AlmacenarPasta (pasta : TipoPasta); PRE: NOT (retirar) AND NOT (reponer) POST: << Pone "pasta" en la caja >> OPERACION ReponerCaja (); PRE: reponer POST: NOT (reponer) OPERACION RetirarCaja (); PRE: retirar POST: NOT (retirar) AND reponer --------------------------------------------------------------------------