| Quintiq file version 2.0 | 
| #parent: #root | 
| Method PTF_ParseLoopActions ( | 
|   String body | 
| ) as String id:Method_LibPTF_pnlTestRunner_PTF_ParseLoopActions | 
| { | 
|   #keys: '[104342.0.866219053]' | 
|   Body: | 
|   [* | 
|     // Specifically for Loops - Perform the prerequisites for treating statements in Loops | 
|     resultbody     := body; | 
|     regnumber      := 0; | 
|     loopindex      := 0; | 
|     largestregnum  := 0; | 
|     keywordloop    := LibPTF_StandardAction::Loop(); | 
|     keywordendloop := LibPTF_StandardAction::EndLoop(); | 
|      | 
|     // Create identifier of each Loop | 
|     while( resultbody.NrOccurrences( keywordloop + " ", 0, true ) > 0 ) | 
|     { | 
|       regnumber++; | 
|       loopindex  := resultbody.FindString( keywordloop + " ", loopindex ); | 
|       resultbody := resultbody.Insert( loopindex + keywordloop.Length(), [String]regnumber ); | 
|     } | 
|      | 
|     largestregnum := regnumber; | 
|      | 
|     // Create identifier of its corresponding EndLoop | 
|     while( regnumber > 0 ) | 
|     { | 
|       loopindex    := resultbody.FindString( keywordloop + [String]regnumber, 0 ); | 
|       endloopindex := resultbody.FindString( keywordendloop + ";", loopindex ); | 
|      | 
|       resultbody := resultbody.Insert( endloopindex + keywordendloop.Length(), [String]regnumber ); | 
|       regnumber--; | 
|     } | 
|      | 
|     // Flatten the nested loop and return the script with the actual execution of actions | 
|     while( largestregnum > 0 ) | 
|     { | 
|       resultbody := this.PTF_FlattenNestedLoop( largestregnum, resultbody ); | 
|       largestregnum--; | 
|     } | 
|      | 
|      | 
|     return resultbody; | 
|   *] | 
| } |