Programmer Guide/Command Reference/GOSUBX: Difference between revisions

From STX Wiki
Jump to navigationJump to search
No edit summary
No edit summary
 
(2 intermediate revisions by one other user not shown)
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 can be a useful tool if numerous arguments and data need to be passed or 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.
 
See also:
[[../GOTO|GOTO]], [[../DISPATCH|DISPATCH]], [[../MACRO|MACRO]]

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

Navigation menu

Personal tools