<insert>
The <insert> element allows you to place a
<block> of Macro Language code into the Macro Language query you are
currently working in, as well as access the encapsulating <block>'s
variables.
Description
The <block> you <insert> must be defined in your
current query or in a <library>. A <library> can be
defined in your current query or stored as part of a Quick Query. If you need a
<block> from a <library> defined outside your
current query, you must use <import> to make that library available in
your current query.
<insert> allows you to access, but not modify, the encapsulating
<block>'s variables or values. <insert> differs
from <call> in that <call> does not have any access
to the encapsulating block's variables. If you want to be able to both access and modify the
encapsulating <block>'s variables, use <expand>.
Syntax
<insert 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 <insert> tag may take any number of additional attributes, which
should match the attributes in the <block> tag that defines the inserted
block. The [VALUE] of a
[VAR]="[VALUE]" attribute is substituted wherever
{@[VAR]} appears within the inserted
<block>.
Example
In this example, assume 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> <insert block="storeSelection" storechoice="3"/>
At the location of the <insert> 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"/>
