Processing Loops
There
are occasions in the XML output where it is desired to have multiple
occurrences of an element filled in from a lookup for each record in
the main file.
To accomplish this in a filePro XML report two
labels are required. The first label is the entry point for the
loop that contains the lookup. The second label is the control
label for the loop. The loop will be executed by filePro as long
as the control label evaluates as true and maxOccurs has not been
reached for any element within the loop.
The evaluation of values assigned to the tags between to loop start
and the loop control labels takes place at the end of each iteration
of the loop.
The fpXmap buttons "Loop Start" and "Loop End" are used to insert loop label rows into the cross mapping table.
Note
that your processing code should not have an explicit loop coded in it.
Rather, the loop is executed implicitly by the XML export engine.
When the export engine encounters the
loop definition, your code is executed as follows:
- The
processing beginning at the label specified in the "loop start"
line is called.
- When
that processing ends, the control label specified in the "loop
end" line is evaluated.
- If
the control label evaluates to "true", then the fields within the
loop are exported, and the loop is executed again.
- If
the control label evaluates to "false", then nothing else is
exported, and the loop is terminated.
There is a new system field, @XL,
which contains the XML loop counter. The
first time the loop is executed, @XL
has a value of "1". This
value is incremented each time the loop is executed. This would allow your code, for example, to execute a LOOKUP
on the first iteration, and a GETNEXT
for all subsequent iterations.
Note that @XL
is reset to "1" each time the loop is restarted.
Also, outside of a loop, @XL
has a value of zero.