<block>
Blocks of Macro Language code defined with <block> allow for
parameterized variables, block-control forms, and code reusability.
Description
The contents of a <block> are executed (after any parameter
substitutions), unless the block appears within a <library> tag (in
which case you must use <import> to make that library available in your
current query). Within a block (and only within a block), special forms such as
<if> and <foreach> may be used.
Blocks can be called using <call> or <insert> and
specifying the name of the block as well as any user-defined variables.
Syntax
<block name="[NAME_OF_BLOCK]"
[USER_DEFINED_VAR_1]="[VALUE_1]" ...
[USER_DEFINED_VAR_N]="[VALUE_N]">
<note>Macro Language code with parameterized variables goes here</note>
</block>
Attributes
name- The name of the block.
The name must begin with an alphabetic character and consist only of alphanumeric characters, digits, and/or underscores. In addition, the name must be unique; that is, no other block in the macro may have the same name.
[USER_DEFINED_VAR_x]- Accepts a string that will act as a user-defined variable. The variable name must
begin with a lowercase alphabetic character and consist only of lowercase alphanumeric
characters, digits, and/or underscores.
The block element may include any number of additional attributes, which may be used as parameters in the Macro Language code contained within the element. The value of a user-defined variable (e.g.,
my_var) is substituted wherever a scalar expression containing a reference to it (e.g.,{@my_var}) appears within the block element.
Example
In this example, the base table is pub.demo.retail.item. To parameterize
the value of our selection for the store column, we declare the variable
storechoice as an attribute in the <block> named
storeselection.
<base table="pub.demo.retail.item"/> <block name="storeselection" storechoice="2"> <sel value="store={@storechoice}"/> </block>
We can then insert this block (using the <insert> operation) and
effectively pass in a value for storechoice.
