1
1
Fork 0
mirror of https://github.com/QB64-Phoenix-Edition/QB64pe.git synced 2024-07-26 17:55:52 +00:00
QB64-PE/internal/help/GOSUB.txt
SMcNeill 6e01fc8dce Altered string compare routines (<,<=,>,>=) so they don't give false results with CHR$(0).
Added new _STRCMP and _STRICMP commands for quick string comparisons.
Cleaned up QB64 to finish removing the QUI (quick user insert) code and folders.
Altered UCASE and LCASE routines to be faster in some situations for us.
2014-09-22 08:19:03 -04:00

56 lines
2 KiB
Plaintext

'''GOSUB''' sends the program to a sub program that uses a line number or label.
{{PageSyntax}}
:: GOSUB label
* Label is any [[line number]] or line label designated with a colon after it. Don't use the colon in the call.
* [[RETURN]] at the end of the procedure returns to the next code after the original call. [[END]] or [[SYSTEM]] can also be used to end program.
* A procedure loop may be used to return automatically instead of using return.
* GOSUB and GOTO can be used '''within''' [[SUB]] or [[FUNCTION]] procedures, but cannot refer to a label not in the procedure itself.
* '''Note:''' Too many GOSUBs without a [[RETURN]] can eventually cause &quot;Out of Stack Errors&quot; in Qbasic as each GOSUB uses memory to store the location to return to. Each [[RETURN]] frees the memory of the GOSUB it returns to.
{{PageExamples}}
''Example:''
{{CodeStart}}
start:
a = a + 1
{{Cl|IF...THEN|IF}} a = 1 {{Cl|THEN}} {{Cl|GOSUB}} here: {{Cl|PRINT}} &quot;It returned to IF a = 1&quot;: {{Cl|END}}
{{Cl|IF...THEN|IF}} a = 2 {{Cl|THEN}} {{Cl|GOSUB}} there: {{Cl|PRINT}} &quot;It returned to IF a = 2&quot;: {{Cl|RETURN}}
here:
{{Cl|PRINT}} &quot;It went here.&quot;
{{Cl|GOTO}} start
there:
{{Cl|PRINT}} &quot;It went there.&quot;
{{Cl|RETURN}}
{{CodeEnd}}
{{small|Code by Cyperium}}
{{OutputStart}}
It went here.
It went there.
It returned to IF a = 2
It returned to IF a = 1
{{OutputEnd}}
''Explanation:'' When a = 1 it uses GOSUB to go to &quot;here:&quot;, then it uses GOTO to go back to &quot;start:&quot;. a is increased by one so when a = 2 it uses GOSUB to go to &quot;there:&quot;, and uses RETURN to go the last GOSUB (which is on the IF a = 2 line), it then encounters another RETURN which makes it return to the first GOSUB call we used on the IF a = 1 line.
''See also:''
* [[ON...GOSUB]]
* [[ON...GOTO]], [[GOTO]]
* [[ON ERROR]], [[RESUME]] {{text|{Error handlers only)}}
* [[ON TIMER (n)]]
* [[Line number]] {{text|(removal program)}}
{{PageNavigation}}