Using Custom Execution Modes from the Model
 
 Within a model you can call insightgetmode to get the execution mode.  
 
You can use this in a switch statement to determine which branch of code to run. As a minimum you must check for the LOAD and RUN execution modes using the constants INSIGHT_MODE_LOAD and INSIGHT_MODE_RUN respectively.
 In the example below there are two custom execution modes: 
 
                model mymodel
uses "mminsight" 
uses "mmxprs"
!@insight.execmodes.LOAD_ALL.preferredservice=BACKGROUND_SERVICE 
(!@insight.execmodes.LOAD_ALL.descr=Long running background task to load complete data set from 
external datasource !)
!@insight.execmodes.LOAD_ALL.clearinput=true
!@insight.execmodes.EVALUATE_SEGMENTS.threads=1
!@insight.execmodes.EVALUATE_SEGMENTS.preferredservice=FAST_SERVICE 
(!@insight.execmodes.EVALUATE_SEG MENTS.descr=Quick job to evaluate segments. Does not perform any 
optimization !)
!@mc.flush
forward procedure datainput 
case insightgetmode of
  INSIGHT_MODE_LOAD: do
    datainput 
    exit(0)
  end-do 
  "LOAD_ALL": do
    writeln("load all data from external data source") 
    exit(0)
  end-do 
  "EVALUATE_SEGMENTS": do
    writeln("evaluate segments")
  end-do 
  INSIGHT_MODE_RUN: do
    insightpopulate 
  end-do
else
  datainput 
end-case
! load input data 
procedure datainput
  writeln("loading data") 
end-procedure
! create model constraints
! optimize
! post-process results
end-model 
 
