<do> ... <cond>

Purpose The <do> ... <cond> statement is used to loop repeatedly while a condition is true. At each iteration of the loop some Superx++ statements can be executed.
Format <do>
   {iteration statements}
   <cond>
      {loop condition}
   </cond>
</do>
{iteration statements} the statements to be executed with each iteration of the loop.
{loop condition} the condition to be evaluated: if true then the loop will continue; if false then the loop will terminate.
Example #1 <class name="XEmployee" inherit="">
   <construct />
   <scope type="public">
      <var name="MyCount" type="int">0</var>
   </scope>
</class>
<node name="MyEmp" class="XEmployee" />
<do>
   <xout>\r\nDo ... Cond\tinstance = </xout>
   <xout><eval object="MyEmp" member="MyCount" /></xout>
   <eval object="MyEmp" member="MyCount">
      <eval>
         <parm type="int" name="b"><eval object="MyEmp" member="MyCount" /></parm>
         <expr>b + 1</expr>
      </eval>
   </eval>
   <cond>
      <eval>
         <parm type="int" name="b">10</parm>
         <parm type="int" name="a"><eval object="MyEmp" member="MyCount" /></parm>
         <expr>a &lt;= b</expr>
      </eval>
   </cond>
</do>

The loop starts execution with the {iteration statements} and then executes the <cond> clause to see whether or not it should continue processing. In this case the following text is sent to the output stream:

Do ... Cond instance = 0
Do ... Cond instance = 1
Do ... Cond instance = 2
Do ... Cond instance = 3
Do ... Cond instance = 4
Do ... Cond instance = 5
Do ... Cond instance = 6
Do ... Cond instance = 7
Do ... Cond instance = 8
Do ... Cond instance = 9
Do ... Cond instance = 10

Example #2 <class name="XEmployee" inherit="">
   <construct />
   <scope type="public">
      <var name="MyCount" type="int">0</var>
   </scope>
</class>
<node name="MyEmp" class="XEmployee" />
<do>
   <xout>\r\nDo ... Cond\tinstance = </xout>
   <xout><eval object="MyEmp" member="MyCount" /></xout>
   <if>
      <cond>
         <eval>
            <parm type="int" name="a">5</parm>
            <parm type="int" name="b"><eval object="MyEmp" member="MyCount" /></parm>
            <expr>a = b</expr>
         </eval>
      </cond>
      <true>
         <xout>\r\nBreak: If\tinstance = </xout>
         <xout><eval object="MyEmp" member="MyCount" /></xout>
         <break />
      </true>
      <false />
   </if>
   <eval object="MyEmp" member="MyCount">
      <eval>
         <parm type="int" name="b"><eval object="MyEmp" member="MyCount" /></parm>
         <expr>b + 1</expr>
      </eval>
   </eval>
   <cond>
      <eval>
         <parm type="int" name="b">10</parm>
         <parm type="int" name="a"><eval object="MyEmp" member="MyCount" /></parm>
         <expr>a &lt;= b</expr>
      </eval>
   </cond>
</do>

The loop starts execution with the {iteration statements} and then executes the <cond> clause to see whether or not it should continue processing. Please note that the <break> statement will terminate the loop prematurely. In this case the following text is sent to the output stream:

Do ... Cond instance = 0
Do ... Cond instance = 1
Do ... Cond instance = 2
Do ... Cond instance = 3
Do ... Cond instance = 4
Do ... Cond instance = 5
Break: If instance = 5