豊四季Tiny BASIC for Arduino STM32 言語リファレンス
GOSUB
GOSUB サブルーチンの呼び出し(制御命令)
書式
GOSUB
行番号 GOSUB
"ラベル" 説明
プログラムの実行を一旦、行番号またはラベルで指定した行に移ります。
移った先でRETURN命令により、呼び出した
GOSUB
命令の次の位置に戻ります。行番号には数値、式(変数、関数を含む)が利用できます。
ラベルを指定した場合は、行先頭に同じラベルがある行に移ります。
ラベルはダブルクオテーション( " )で囲って指定します。
10 GOSUB "PRN_LOGO"
20 GOSUB "PRN_DATE"
30 GOSUB 200
40 END
50 "PRN_LOGO"
60 PRINT "Tiny BASIC for Arduino STM32"
70 RETURN
80 "PRN_DATE"
90 PRINT "Edition V0.84 2017/08/01"
100 RETURN
200 PRINT "Ready"
210 RETURN
上記の例では、10行、20行でラベルを指定してサブルーチンを呼び出しています。
30行では、行番号を指定してサブルーチンを呼び出しています。
ラベルを使うことで、プログラムの実行がわかりやすくなります。
行の先頭に無いラベルは、
GOSUB
文の呼び出し先としての参照はされません。10 GOSUB "hoge"
20 END
30 ? "Hello":"hoge":?"test":RETURN
run
Undefined line number or label in 10
10 GOSUB "hoge"
OK
行番号には式や変数の指定が可能ですが、RENUMコマンドよる行番号付け替えに対応出来ない場合があります。
①
GOSUB N*100+500
②
GOSUB 500+N*100+500
①ではRENUMコマンドは何もしません。②は
500
を行番号とみなして更新します。ただし①②とも計算結果が正しい行番号となることは保証出来ません。ご注意下さい。
エラーメッセージ
Undefined line number or label
:指定した行、ラベルが存在しない Overflow
:指定した数値が -32768
~ 32767
を超えている GOSUB too many nested
: GOSUB
のネスト数が規定(=10)を超えた Syntax error
:文法エラー、書式と異なる利用を行った 利用例
ラベルを使ったサブルーチンの呼び出し例
100 GOSUB "SUB01"
110 GOSUB "SUB02"
120 N=0
130 "LOOP"
140 PRINT "N=";N
150 N=N+1:IF N<5 GOTO "LOOP"
160 END
170 "SUB01":PRINT "SUB01":RETURN
200 "SUB02":PRINT "SUB02":RETURN
関連項目