<call>
The <call> element allows you to place a
<block> of Macro Language code into the Macro Language query you are
currently working in, but not access the encapsulating <block>'s
variables.
Description
The <call> element inserts a <block> of Macro
Language at the location in the query where the <call> element appears.
<call> can be used in the context of a <block>.
When <call> is used to reference a <block>, the
<block> being called has no access to the encapsulating
<block>'s variables or values.
If you want access to the encapsulating <block>'s variables or values,
use <insert> instead of <call>. If you want to be
able to both access and modify the encapsulating <block>'s variables,
use <expand>.
Syntax
<call block="[NAME_OF_BLOCK]" [[VAR_1]="[VALUE_1]"
[VAR_2]="[VALUE_2]"...
[VAR_N]="[VALUE_N]"]/>
Attributes
block- Specifies the
<block>(code and defined variables) to insert into the current query.
The <call> element may take any number of additional attributes, which
should match the attributes in the <block> opening tag that defines the
called <block>. The [VALUE] of a
[VAR]="[VALUE]" attribute is substituted wherever
{@[VAR]} appears within the called
<block>.
Example
In this example, the base table is pub.demo.retail.item.
<base table="pub.demo.retail.item"/> <library> <block name="storeSelection" storechoice=""> <sel value="store={@storechoice}"/> </block> </library> <call block="storeSelection" storechoice="3"/>
At the location of the <call> statement, the
<block> named storeSelection is expanded using the
storechoice attribute, and the value for storechoice (3)
is substituted for {@storechoice} within the <block>,
effectively resulting in the following operation:
<sel value="store=3"/>
