Difference between revisions of "LOOP/ENDLOOP"
From Zenitel Wiki
Line 29: | Line 29: | ||
This example switches of [[Audio Program]] on own station plus stations in [[Mutual exclusion group]] of own station. | 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) | + | $TPROG L%1.dir U%chg(0,1) |
− | tmp 0 "%ges(%1.phy, 0)" | + | tmp 0 "%ges(%1.phy, 0)" |
− | LOOP | + | LOOP |
− | + | IF %op(%tmp(0),=,0) | |
− | + | STOP | |
− | + | ENDIF | |
− | + | $TPROG N%tmp(0) U%chg(0,1) | |
− | + | tmp 0 "%ges(%1.phy, %tmp(0))" | |
− | ENDLOOP | + | ENDLOOP |
[[Category:Event Handler]] | [[Category:Event Handler]] | ||
[[Category:Built-In Action Commands]] | [[Category:Built-In Action Commands]] |
Revision as of 06: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