input (Z.100)

Concrete graphical grammar

<input area> ::=
<basic input area>
| <remote procedure input area>

<basic input area> ::=
<input symbol> contains [ < virtuality >] <input list>
is followed by {[<enabling condition area>] <transition area>

<input symbol> ::=
<plain input symbol>
| <internal input symbol>

<plain input symbol> ::=

<input list> ::=
<asterisk input list>
| <stimulus> { ,<stimulus> }*

<stimulus> ::=
{ <signal identifier> | <timer identifier>}
[( [<variable>] {,[<variable>]}* )]

Timer signals and ordinary signals are distinguished only where appropriate, as in many respects they have similar properties.

Commas may be omitted after the last <variable> in <stimulus>.

An <input area> whose <input list> contains one <stimulus> corresponds to one Input-node. Each of the <signal identifier>s or <timer identifier>s contained in an <input symbol> gives the name of one of the Input-nodes which this <input symbol> represents.

Semantics

An input allows the consumption of the specified input signal instance. The consumption of the input signal makes the information conveyed by the signal available to the process. The variables associated with the input are assigned the values conveyed by the consumed signal.

The values will be assigned to the variables from left to right. If there is no variable associated with the input for a sort specified in the signal, the value of this sort is discarded. If there is no value associated with a sort specified in the signal, the corresponding variable becomes "undefined".

The sender; expression of the consuming process is given the PId value of the originating process, carried by the signal instance.

Signal instances flowing from the environment to a process instance within the system will always carry a PId value different from any in the system.

Model

When the <stimulus>s list of a certain <input part> contains more than one <stimulus>, a copy of the <input part> is created for each such <stimulus>. Then the <input part> is replaced by these copies.

When one or more of the <variable>s of a certain <stimulus> are <indexed variable>s or <field variable>s, then all the <variable>s are replaced by unique, new, implicitly declared, <variable identifier>s. Directly following the <input part>, a <task> is inserted which in its <task body> contains an <assignment statement> for each of the <variable>s, assigning the value of the corresponding new variable to the <variable>. The values will be assigned in the order from left to right of the list of <variable>s. This <task> becomes the first <action> in the <transition>.

A <basic input part> or <basic input area> which contains < virtuality > is called a virtual input transition.