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' } 
 | 
} 
 |