(Ada newbie warning still in effect...) If you don't allow clairvoyance or semaphores to indicate the beginning and end of the transaction, how about building a "transaction request" (could be a list or a set of ON bits in a modular type) and passing this request to the protected object. Then, each requested entry could, upon finishing, examine the transaction request and requeue on the next requested entry (requeue is an atomic action). You'd also need to pass a parameter that could accomodate all the requested transactions (e.g. an IN OUT record ), since each requeued entry must have either the same (original) parameters or no parameters. Ada experts are of course invited to comment on the correctness of the above... Mike Karel Th�nissen wrote in message <385984BC.1FB1@hello.nl>... >.... >I am wondering whether there is a clean solution to the problem that Mr >Kylheku presented: how can we combine several protected type services >into one transaction-like construct without requiring clairvoyance or >retrofitting. Of course we can always go back and change the code in the >protected type and offer the combined invocation of the multiplicity of >services as a single integrated service, but this option requires >recoding, recompilation and re-verification. > >Solutions that do not use protected types are also welcome, if they are >safe and clean. So bluntly providing the services without any >concurrency protection and counting for the caller's willingness to use >a semaphore is outside the competition. > >-- > >Groeten, Karel Th�nissen > >Hello Technologies develops high integrity software for complex systems