Difference between revisions of "Programmer Guide/Command Reference/GOSUBX"

From STX Wiki
Jump to navigation Jump to search
 
Line 1: Line 1:
 
  GOSUBX <var>subrlabel</var> [<var>arguments</var>]
 
  GOSUBX <var>subrlabel</var> [<var>arguments</var>]
Like the <code>[[Programmer Guide/Command Reference/GOSUB|GOSUB ]]</code> statement, <code>GOSUBX</code> will call the local subroutine starting at the <var>subrlabel</var> label, and mandatorily ending with an appropriate [[Programmer_Guide/Command_Reference/EXIT|EXIT]] statement. Note that, unlike the plain <code>[[Programmer Guide/Command Reference/GOSUB|GOSUB]]</code>, <code>GOSUBX</code> will ''not'' create a new local varible space, instead the subroutine use ''in the local variable space of the caller'', meaning that any changes to local variables done in the subroutine will also be visible to the caller.
+
Like the <code>[[Programmer Guide/Command Reference/GOSUB|GOSUB ]]</code> statement, <code>GOSUBX</code> will call the local subroutine starting at the <var>subrlabel</var> [[Programmer_Guide/Source_code#labels|label]], and mandatorily ending with an appropriate [[Programmer_Guide/Command_Reference/EXIT|EXIT]] statement. Note that, unlike the plain <code>[[Programmer Guide/Command Reference/GOSUB|GOSUB]]</code>, <code>GOSUBX</code> will ''not'' create a new local varible space, instead the subroutine use ''in the local variable space of the caller'', meaning that any changes to local variables done in the subroutine will also be visible to the caller.
  
 
For this reason, the <code>GOSUBX</code> statement can be a useful tool if numerous arguments and data need to be passed or also for other reasons, but it should be used with care, because changing the variables of the callers may be done as easily unintentionally.
 
For this reason, the <code>GOSUBX</code> statement can be a useful tool if numerous arguments and data need to be passed or also for other reasons, but it should be used with care, because changing the variables of the callers may be done as easily unintentionally.

Latest revision as of 09:49, 16 August 2019

GOSUBX subrlabel [arguments]

Like the GOSUB statement, GOSUBX will call the local subroutine starting at the subrlabel label, and mandatorily ending with an appropriate EXIT statement. Note that, unlike the plain GOSUB, GOSUBX will not create a new local varible space, instead the subroutine use in the local variable space of the caller, meaning that any changes to local variables done in the subroutine will also be visible to the caller.

For this reason, the GOSUBX statement can be a useful tool if numerous arguments and data need to be passed or also for other reasons, but it should be used with care, because changing the variables of the callers may be done as easily unintentionally.

See also: GOTO, DISPATCH, MACRO