This repository has been archived on 2024-09-22. You can view files and clone it, but cannot push or open issues or pull requests.
pbi-ide/help/BasicStampHelp/Content/LanguageTopics/Commands/ON_GOSUB.htm

107 lines
7.2 KiB
HTML

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns:MadCap="http://www.madcapsoftware.com/Schemas/MadCap.xsd" MadCap:lastBlockDepth="6" MadCap:lastHeight="94" MadCap:lastWidth="853" MadCap:disableMasterStylesheet="true" MadCap:tocPath="" MadCap:InPreviewMode="false" MadCap:PreloadImages="false" MadCap:RuntimeFileType="Topic" MadCap:TargetType="WebHelp" lang="en-us" xml:lang="en-us" MadCap:PathToHelpSystem="../../../" MadCap:HelpSystemFileName="Default.xml" MadCap:SearchType="Stem">
<head><title>ON...GOSUB</title>
<link href="../../SkinSupport/MadCap.css" rel="stylesheet" />
<link href="../../Resources/Stylesheets/BSE_Help.css" rel="stylesheet" />
<script src="../../SkinSupport/MadCapAll.js" type="text/javascript">
</script>
</head>
<body>
<h1 class="code">ON...GOSUB</h1>
<div class="ImagePlusCaption">
<div class="Col2">
<p>
<img src="../../graphics/pgm_icon2.gif" border="0" alt="BS2 icon" title="BS2 icon" />
<img src="../../graphics/pgm_icon2e.gif" border="0" alt="BS2e icon" title="BS2e icon" />
<img src="../../graphics/pgm_icon2sx.gif" border="0" alt="BS2sx icon" title="BS2sx icon" />
<img src="../../graphics/pgm_icon2p.gif" border="0" alt="BS2p icon" title="BS2p icon" />
<img src="../../graphics/pgm_icon2pe.gif" border="0" alt="BS2pe icon" title="BS2pe icon" />
<img src="../../graphics/pgm_icon2px.gif" border="0" alt="BS2px icon" title="BS2px icon" /><span class="code_in_text"> {PBASIC&#160;2.5}</span>
</p>
</div>
<p style="text-align: right;"><a href="../ExampleTopics/OnGosubEx.htm" target="" title="" alt="" class="MCXref_0" xrefformat="{paratext}">ON...GOSUB Example</a>
</p>
<p>&#160;</p>
</div>
<p class="clear">&#160;</p>
<p>&#160;</p>
<p class="PlainText">Syntax: <span class="keyword_in_text">ON</span> <![CDATA[ ]]><i>Offset</i> <![CDATA[ ]]><span class="keyword_in_text">GOSUB</span> <![CDATA[ ]]><i>Address1</i>, <i>Address2</i>, ...<i>AddressN</i></p>
<h2>Function</h2>
<p class="PlainText">Store the address of the next instruction after <span class="keyword_in_text">ON..GOSUB</span>, then go to the
<i>Address</i> specified by offset (if in range) with the intention of returning
to the stored address. If <i>Offset</i>-1 is greater than the number of elements in
the address table, the program continues at the line following <span class="keyword_in_text">ON..GOSUB</span>.</p>
<ul>
<li value="1"><b><i>Offset</i></b> is a variable/constant/expression (0 - 255) that
specifies the index of the address, in the list, to branch to (0 - N).</li>
<li value="2"><b><i>Addresses</i></b> are labels that specify where to go for a given <i>Offset</i>. <span class="keyword_in_text">ON...GOSUB</span>
will ignore any list entries beyond offset 255.</li>
</ul>
<h2>Quick Facts</h2>
<table width="100%" cellpadding="4" cellspacing="0" border="1">
<tr>
<td align="center" width="25%" bgcolor="#CFCFCF">&#160;</td>
<td align="center" bgcolor="#CFCFCF">BS2 Family</td>
</tr>
<tr>
<td align="center" bgcolor="#CFCFCF">Limit of <i>Address</i> entries</td>
<td align="center">256</td>
</tr>
<tr>
<td align="center" bgcolor="#CFCFCF">Maximum nested <span class="keyword_in_text">GOSUB</span>s </td>
<td align="center">4</td>
</tr>
<tr>
<td align="center" bgcolor="#CFCFCF">Maximum <span class="keyword_in_text">GOSUB</span>s per Program</td>
<td align="center">255 (each <span class="keyword_in_text">ON...GOSUB</span> counts as as a <span class="keyword_in_text">GOSUB </span>regardless of number of address list entries)</td>
</tr>
<tr>
<td align="center" bgcolor="#CFCFCF">Related Commands</td>
<td align="center" colspan="1">
<p colspan="1" align="center"><a href="BRANCH.htm" target="" title="" alt="" class="MCXref_0" xrefformat="{paratext}">BRANCH</a>, <a href="GOSUB.htm" target="" title="" alt="" class="MCXref_0" xrefformat="{paratext}">GOSUB</a>, <a href="GOTO.htm" target="" title="" alt="" class="MCXref_0" xrefformat="{paratext}">GOTO</a>, <a href="ON_GOTO.htm" target="" title="" alt="" class="MCXref_0" xrefformat="{paratext}">ON...GOTO</a></p>
</td>
</tr>
</table>
<h2>Explanation</h2>
<p class="PlainText">The <span class="keyword_in_text">ON...GOSUB</span> instruction is useful when you want to write something like
this:</p><pre class="BScode" xml:space="preserve">
IF (value = 0) THEN GOSUB Case_0
IF (value = 1) THEN GOSUB Case_1
IF (value = 2) THEN GOSUB Case_2
</pre>
<p class="PlainText">You can use <span class="keyword_in_text">ON...GOSUB</span> to organize this into a single statement:</p><pre class="BScode" xml:space="preserve">
ON value GOSUB Case_0, Case_1, Case_2
</pre>
<p class="PlainText">This works exactly the same as the previous <a href="IF_THEN.htm" target="" title="" alt="" class="MCXref_0" xrefformat="{paratext}">IF…THEN</a> example. If the value isn't in range (in this case if <span class="code_in_text">value</span> is greater than 2), <span class="keyword_in_text">ON...GOSUB</span> does nothing and the program continues with the next instruction after <span class="keyword_in_text">ON</span>.</p>
<div class="Col2">
<div class="MasterFoot">
<p MadCap:conditions="BSEconditions.BSEWebHelp (Primary)-INCLUDE"><a href="../../HomeTopics/HomePage.htm">Go to Welcome page</a>
</p>
</div>
</div>
<div class="Col2">
<div class="MasterFoot">
<p style="text-align: right;"><span class="ContactInfoProjectName">BASIC Stamp Help</span> <![CDATA[ ]]><span class="ContactInfoVersion#">Version 2.5.4</span> <![CDATA[ ]]></p>
<p style="text-align: right;">Copyright ©&#160;<span class="ContactInfoCompanyName">Parallax Inc.</span></p>
<p style="text-align: right;"><span class="SystemShortDate">8/8/2012</span>
</p>
</div>
</div>
<script type="text/javascript">/* <![CDATA[ */
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-285614-1']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
/* ]]> */</script>
<script type="text/javascript" src="../../SkinSupport/MadCapBodyEnd.js">
</script>
</body>
</html>