A module call is like a function call. The name of the module is followed by parentheses, which enclose a list of parameters. For example:
FeedPump(1, 370, "Feedwater pump 1") { Run a FeedPump module };
This starts a module called FeedPump, and passes 3 parameters to that module: 1, 370 and "Feedwater pump 1". This starts a new instance of module FeedPump.
A module call will have different behaviors depending on where the module call is made from and the structure of the module which is called. Any given module may only be called from certain points in the hierarchical structure (i.e. it must lie within the scope of the calling module)
Typically a module is used as a statement. A module used in this manner is called a "parameterized" module and will update the parameters passed in and remain active until the state calling the module is no longer active. A module call may be used in a script but care should be taken when doing so since what will happen is dependent upon the structure of the called module. If there is a Return statement located anywhere within the module, even in a state that is never switched to, the module will be treated as a "subroutine". If no Return statement exists in the module, it will be "launched". These three different types of modules are discussed in detail in later sections.
If the state containing a module call is active, then that module call is active, and the module which is called will be active (with one exception - see Queued Modules).
The simplest and most convenient way of thinking of a module call is to treat that module call as if it were a statement or function.