The ON statement allows selective execution of procedural statements on a periodic basis. 
  
 
 
  General Format
 
     
     
 
  Syntax Rules
 
      
    - Identifier-1, identifier-2 and identifier-3 must describe unsigned integer numeric elementary items. 
    
- Literal-1, literal-2 and literal-3 must be unsigned numeric literals. 
    
- The ON statement is not supported in class programs when compiling to managed code. 
    
 General Rules
 
      
    - Prior to the first execution of each ON statement , a counter, implicitly defined for that ON statement (the implicit-ON-counter), is initialized to be zero. 
    
- Identifier-1, identifier-2 and identifier-3 should, if specified, contain positive integer values at the time of execution of the ON statement. Varying these values between executions of the ON statement will affect subsequent executions of the ON statements. 
    
- The implicit ON counter cannot be affected in any way other than by transfer of execution flow to that ON statement. (The ON counter of a called program can only be reset by the canceling of that program; execution of the EXIT PROGRAM statement and subsequent CALL of the program without intervening CANCEL has no effect upon the implicit ON counter value.) 
    
- The following value-list is then evaluated: 
       
        - The current value of identifier-1 or literal-1, 
        
- A sequence of values being the results of repeatedly adding the current value of identifier-2 or literal-2 to the current value of identifier-1 or literal-1 until the value of identifier-3 or literal-3 is reached. 
        
 The implicit-ON-counter is then compared with each of this list of values. If an equality is found, then imperative-statement-1 is executed. If no equality is found, then imperative-statement-2, if specified, is executed.