The concept of procedures in action semantics provides a certain level of modularity. Procedures are self-contained. The execution of a procedure is not allowed to access any global variables or static variables. Instead, all the variables are contained in an object in the form of attributes.
There is no means to explicitly execute part of a procedure from the requesting object. A procedure is regarded as an entity, which accepts input and produces output (like actions). The input is taken from the attributes of the request message. For synchronous invocation, the output serves as the return value; for asynchronous invocation, the output is simply ignored.