Actions

Difference between revisions of "LOOP/ENDLOOP"

From Zenitel Wiki

(New page: The '''LOOP''' and '''ENDLOOP''' statements are used in the Event Handler. The LOOP - ENDLOOP statements can not be nested. When the script execution reaches ENDLOOP, the script jump...)
 
Line 4: Line 4:
 
[[IF/ENDIF]] along with [[STOP]] or [[BREAK (Event action)|BREAK ]] must be used to exit from the loop.
 
[[IF/ENDIF]] along with [[STOP]] or [[BREAK (Event action)|BREAK ]] must be used to exit from the loop.
  
Useless example:
+
As a safety precaution, looping will stop after 1000 iterations. Use LOOP with caution. Don't send more than a few dozen Data protocol messages from a single event.
 +
 
 +
 
 +
'''Useless example:'''
  
 
  tmp 0 "0"
 
  tmp 0 "0"
Line 15: Line 18:
 
  ENDLOOP
 
  ENDLOOP
 
  $put 8 "end loop %tmp(0) \n"
 
  $put 8 "end loop %tmp(0) \n"
 +
The script prints the following text on [[TST]]:
 +
loop 0
 +
loop 1
 +
loop 2
 +
loop 3
 +
loop 4
 +
end loop 5
 +
 +
'''Useful example:'''
 +
This example switches of [[Audio Program]] on own station plus stations in [[Mutual exclusion group]] of own station.
  
 +
$TPROG L%1.dir U%chg(0,1)
 +
tmp 0 "%ges(%1.phy, 0)"
 +
LOOP
 +
IF %op(%tmp(0),=,0)
 +
  STOP
 +
ENDIF
 +
$TPROG N%tmp(0) U%chg(0,1)
 +
tmp 0 "%ges(%1.phy, %tmp(0))"
 +
ENDLOOP
  
  
 
[[Category:Event Handler]]
 
[[Category:Event Handler]]
 
[[Category:Built-In Action Commands]]
 
[[Category:Built-In Action Commands]]

Revision as of 07:59, 11 March 2010

The LOOP and ENDLOOP statements are used in the Event Handler. The LOOP - ENDLOOP statements can not be nested. When the script execution reaches ENDLOOP, the script jumps back to the previous LOOP statement.

IF/ENDIF along with STOP or BREAK must be used to exit from the loop.

As a safety precaution, looping will stop after 1000 iterations. Use LOOP with caution. Don't send more than a few dozen Data protocol messages from a single event.


Useless example:

tmp 0 "0"
LOOP
 $put 8 "loop %tmp(0) \n"
 tmp 0 "%op(%tmp(0),+,1)"
 IF %op(%tmp(0),=,5)
  BREAK
 ENDIF
ENDLOOP
$put 8 "end loop %tmp(0) \n"

The script prints the following text on TST:

loop 0
loop 1
loop 2
loop 3
loop 4
end loop 5

Useful example: This example switches of Audio Program on own station plus stations in Mutual exclusion group of own station.

$TPROG L%1.dir U%chg(0,1) tmp 0 "%ges(%1.phy, 0)" LOOP

IF %op(%tmp(0),=,0)
 STOP
ENDIF
$TPROG N%tmp(0) U%chg(0,1)
tmp 0 "%ges(%1.phy, %tmp(0))" 

ENDLOOP