<lit><zonk while <var><var>expression</var></var>><var>anything</var><zonk endwhile></lit>
<sh>Description</sh>
Tests an <var>expression</var> as defined in <ref genc>general concepts</r> and if <i>the value is not NULL</i> processes all the html (including Zonk commands) upto the endwhile. When the endwhile is reached, if the <var>expression</var> was a simple variable name then an implicit <ref cread>zonk read</r> is performed on this variable, if this provides another value then the condition is still true and the loop is done again. You cannot use static variables as a while control variable.
If the <var>expression</var> is the bracketed form then it is the template writers responsibility to do something inside the loop which might change the value of the <var>expression</var> and so cause the loop to exit when the condition retested. <b>!Beware the infinite loop!</b>
Also note that a NULL value for a variable is <i>NOT</i> the same as an empty string. You only get a NULL value if the variable is not defined or you have read all of the values of a dynamic variable.
Whiles may be nested an indefinite number of times.
<sh>Examples</sh>
<lit><zonk while town><zonk tagvalue town><p><zonk endwhile></lit>