Mit Hilfe des WHILE-Blocks können Schleifen in einem Net.Data-Makro durchgeführt werden. Wie der IF-Block bietet der WHILE-Block die Möglichkeit, eine oder mehrere Bedingungen zu testen und anschließend auf der Grundlage des Ergebnisses des Bedingungstests einen Block von Anweisungen auszuführen. Im Gegensatz zum IF-Block kann der Anweisungsblock auf der Grundlage des Ergebnisses des Bedingungstests beliebig oft ausgeführt werden.
Sie können WHILE-Blöcke innerhalb von HTML-Blöcken, REPORT-Blöcken, ROW-Blöcken, MACRO_FUNCTION-Blöcken und HTML-IF-Blöcken angeben, und Sie können sie verschachteln. Die Syntax eines WHILE-Blocks wird im Kapitel über die Sprachkonstrukte im Handbuch Net.Data Reference dargestellt.
Net.Data verarbeitet den WHILE-Block in exakt der gleichen Weise wie auch der IF-Block verarbeitet wird, jedoch wird die Bedingungsliste bei jedem Durchlaufen der Schleife erneut ausgewertet. Und wie bei jedem bedingten Schleifenkonstrukt kann die Verarbeitung zu einer Endlosschleife führen, wenn die Bedingung nicht korrekt codiert wurde.
Beispiel: Dieses Beispiel zeigt eine Makrodatei mit einem WHILE-Block:
%DEFINE loopCounter = "1"
%HTML(build_table) {
%WHILE (loopCounter <= "100") {
%{ generate table tag and column headings %}
%IF (loopCounter == "1")
<TABLE BORDER>
<TR>
<TH>Item #
<TH>Description
%ENDIF
%{ generate individual rows %}
<TR>
<TD>$(loopCounter)
<TD>@getDescription(loopCounter)
%{ generate end table tag %}
%IF (loopCounter == "100")
%ENDIF
%{ increment loop counter %}
@dtw_add(loopCounter, "1", loopCounter)
%}
%}