| Quintiq file version 2.0 | 
| #parent: #root | 
| StaticMethod CheckNoGap ( | 
|   const LibOpt_Scope scope | 
| ) const | 
| { | 
|   TextBody: | 
|   [* | 
|     if ( scope.Run().OptimizationConst().astype( Optimization ).DebugMode() )  | 
|     { | 
|       traverse( scope.GetProductInStockingPointInOptimizerRunConst(), Elements, pisp, pisp.IsLeaf() )  | 
|       { | 
|         current := pisp.FirstPlanningPISPIP(); | 
|         state := 0;   | 
|         while(  not isnull( current ) )  | 
|         { | 
|           if ( scope.Contains( current.PISPIPInOptimizerRun() ) and state = 0 )  | 
|           { | 
|             state := 1; // in scope block started | 
|             assert( current = pisp.EarliestPISPIPInScope(), 'wrong earliest pispip for ', pisp.Name() );   | 
|           } | 
|           if ( not scope.Contains( current.PISPIPInOptimizerRun() )  and state = 1 )  | 
|           { | 
|             state := 2; // in scope block exited - anything encounter in scope now -> error  | 
|             if ( not current.PreviousPlanningPISPIP() = pisp.LatestPISPIPInScope() )  | 
|             { | 
|               traverse( pisp, ProductInStockingPointInPeriodPlanning, pispip )  | 
|               { | 
|                 debuginfo(  pispip.Start(), scope.Contains( pispip.PISPIPInOptimizerRun() ), pispip.DefinitionName() );  | 
|               } | 
|             } | 
|             assert(  current.PreviousPlanningPISPIP() = pisp.LatestPISPIPInScope(), 'wrong latest pispip for ', pisp.Name() );  | 
|           } | 
|           if ( scope.Contains( current.PISPIPInOptimizerRun() ) and state = 2 )  | 
|           { | 
|             error( 'failed no gaps property for ', pisp.Name(), current.Start() );  | 
|           } | 
|           current := current.NextPlanningPISPIP();  | 
|         } | 
|       } | 
|     } | 
|   *] | 
|   InterfaceProperties { Accessibility: 'Module' } | 
| } |