ON...GOSUB... ============= Function -------- **ON...GOSUB...** allows conditional subroutine calls. Syntax ------ ON expression GOSUB line number 1, line number 2, ....line number n. Examples -------- :: 10 ON A GOSUB100,180 20 PRINT "HELLO" If A=1 then program execution will go to line 100 and will then go to line 20 when a RETURN is encountered. If A=2 then program execution will go to line 180 and will then go to line 20 when a RETURN is encountered. :: 10 B=100:C=300;D=350 20 ON A GOSUB B,C,D 30 PRINT "HELLO" If A=1 then program execution will go to line 100 and revert back to line 30 when a RETURN is encountered. If A=3 then program execution will go to line 350 and revert back to line ?0 when a RETURN is encountered. Remarks ------- ON GOSUB will cause program execution to go to a line number chosen from the list of line numbers positioned immediately after GOSUB. The selection of a particular line number in this list is determined by the value of [expression]. Once program execution has been forced to go to selected one of the line numbers, each statement following that line number will be executed in order until a RETURN is encountered. At this point program execution will revert back to the statement following the list of line numbers. The integer part of [expression] is used so that if A=2.9 program execution will go to line 180 in the example. .. Note:: The value of [expression] is NOT rounded up. If the value of [expression] is zero or greater than the number of line numbers in the list, then program execution will continue with the next statement. In the above example, if A=3 then "HELLO" will be printed **IMMEDIATELY**. The maximum value of [expression] allowed is 255. If the value of [expression] is greater than 255 or negative then a 'Magnitude error' will occur. The line numbers in the list of line numbers may themselves be expressions.