──┬─<expression>─────────────────────────────┬─────────────────────────┤ ├─<array designator>───────────────────────┤ ├─<string array designator>────────────────┤ ├─<connection block reference variable>────┤ ├─<connection library instance designator>─┤ ├─<direct file identifier>─────────────────┤ ├─<direct switch file identifier>──────────┤ ├─<event designator>───────────────────────┤ ├─<event array designator>─────────────────┤ ├─<file designator>────────────────────────┤ ├─<switch file identifier>─────────────────┤ ├─<format designator>──────────────────────┤ ├─<switch format identifier>───────────────┤ ├─<interlock designator>───────────────────┤ ├─<interlock array designator>─────────────┤ ├─<label identifier>───────────────────────┤ ├─<switch label identifier>────────────────┤ ├─<list designator>────────────────────────┤ ├─<switch list identifier>─────────────────┤ ├─<null value>─────────────────────────────┤ ├─<picture identifier>─────────────────────┤ ├─<procedure identifier>───────────────────┤ ├─<procedure reference array designator>───┤ ├─<procedure reference array element>──────┤ ├─<procedure reference identifier>─────────┤ ├─<structure block array designator>───────┤ ├─<structure block array element>──────────┤ ├─<structure block reference variable>─────┤ ├─<structure block variable>───────────────┤ ├─<task designator>────────────────────────┤ ├─<task array designator>──────────────────┤ └─<this intrinsic>─────────────────────────┘
The actual parameter part of a PROCEDURE INVOCATION statement must have the same number of entries as the formal parameter list in the declaration of the procedure. Correspondence between the actual parameters and formal parameters is obtained by matching the parameters that occur in the same relative position in the two lists. Corresponding formal and actual parameters must be of compatible types. Parameters can be call-by-name or call-by-value.
For more information on procedures and formal parameters, refer to PROCEDURE Declaration.
If a formal parameter is a call-by-name INTEGER or REAL simple variable, then the actual parameter can be either an INTEGER or a REAL expression; no type conversion is performed. If a formal parameter is a call-by-value INTEGER, REAL, DINTEGER or DOUBLE simple variable, then the actual parameter can be an INTEGER, a REAL, a DINTEGER or a DOUBLE expression, and automatic type conversion is performed on the actual parameter at the time the procedure is invoked.
If the formal parameter of a non-formal procedure is a simple variable of type COMPLEX, then the corresponding actual parameter can be of type INTEGER, REAL, DINTEGER, DOUBLE, or COMPLEX. However, if the COMPLEX formal parameter is call-by-name and the corresponding actual parameter is not of type COMPLEX, an assignment to that formal parameter within the procedure body causes the program to be discontinued with a fault.
The types of actual and formal parameters must match exactly for all cases not mentioned above. For more information, see Type Coercion of One-Word and Two-Word Operands.
Imported events and event arrays cannot be used as actual parameters in a PROCEDURE INVOCATION statement.

