OOC is a high-level (OSI application layer and above) controls communication protocol. While natural languages are too complex for the controls environment, computer protocols are often insufficiently expressive. OOC is an attempt to balance simplicity and expressivity, and is sufficiently flexible to express data acquisition, control requests, alarm messages and error messages in a straightforward generic way. OOC supports dynamic creation of objects. It can be used in networks, for intertask and even for intratask communication. OOC, the protocol, is supported by OOC, the code, written in portable C. The lower level of this code supports a tagged-data scheme, with tags as elementary as INTEGER and BOOLEAN and as complex as OBJECT and MESSAGE. These tagged data can be evaluated in a LISP-like way.