Utilizzare il blocco WHILE per eseguire operazioni cicliche in una macro di Net.Data. Come nel caso del blocco IF, il blocco WHILE fornisce la possibilità di verificare una o più condizioni e quindi di eseguire un blocco di istruzioni in base al risultato di una prova di condizione. Diversamente dal blocco IF, il blocco di istruzioni può essere eseguito un numero infinito di volte in base al risultato di una prova di condizione.
E' possibile specificare i blocchi WHILE all'interno di blocchi HTML, blocchi REPORT, blocchi ROW, blocchi MACRO_FUNCTION e blocchi HTML IF ed è possibile concatenarli. La sintassi di un blocco WHILE viene riportata nel capitolo sulle strutture del linguaggio in Riferimenti di Net.Data.
Net.Data elabora il blocco WHILE allo stesso modo del blocco IF, ma valuta di nuovo l'elenco di condizioni ogni volta che attraverso il ciclo. Inoltre, come in ogni struttura ciclica condizionale, è possibile durante l'elaborazione eseguire cicli infiniti se la condizione viene codificata in modo non corretto.
Esempio: Un file della macro contenente un blocco WHILE
%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)
%}
%}