GOSUB ... RETURN

Syntax:

gosub <label>
return

The GOSUB command calls a subroutine marked by a label. RETURN will pass control back to the caller. Nesting subroutines are supported (GOSUB and RETURN compiles to just plain JSR and RTS, nothing fancy). Stack overflow is not checked in runtime, but is quite unlikely to encounter. Example:

rem ** subroutines **
gosub first_routine
end

first_routine:
	print "hello world"
	gosub second_routine
	return
	
second_routine:
	print "and hello again"
	return

Note #1: make sure to use the END command before your routines if you don't want them to be executed in the normal program flow (like in the example above).

Note #2: there is no runtime call stack checking (e. g. no ?RETURN WITHOUT GOSUB ERROR). If your call stack is corrupted, the program is likely to break.

Note #3: Unlike procedures, subroutines do not open a new local scope.

This website uses cookies. By using the website, you agree with storing cookies on your computer. Also you acknowledge that you have read and understand our Privacy Policy. If you do not agree leave the website.More information about cookies

Discussion

Enter your comment. Wiki syntax is allowed: