2020.5.24
前へ
次へ
ホームページトップへ戻る

[新連載]復活!TINY BASIC
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
すべてはここからはじまりました。
中日電工も。
40年前を振り返りつつ新連載です。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜



[第6回]


●TINY BASICの文法(4)

前回に続いて今回もTINY BASICの文法の説明の続きです。
今回も命令の続きです。



GOSUB命令とRETURN命令

GOSUB命令はGOTO命令と似ているが以下の点が異なる。
a)GOSUB命令が置かれた行番号とその行内の位置を記憶している。
b)GOSUB命令の後ろにセミコロン(;)をつけて他の命令を記述することができる。

(例1)GOSUB 120

行番号120の文にジャンプする。

(例2)GOSUB A*10+B

すごい!
計算型のGOSUB命令です!
A*10+Bを計算した結果の値で示される行番号の文にジャンプする。

RETURN命令は行の最後に置かなければならない。
RETURNの後ろにはなにも書いてはいけない(CRで終るべき)。
RETURN命令を実行すると最後に実行されたGOSUB命令の次の行内位置にジャンプする。
最後に実行されたGOSUB命令が行の最後に置かれていた場合にはその次の行にジャンプする。

GOSUB〜RETURNはネスティングが許される。
ネスティングの深さはスタック容量によってのみ制限される。

*英文の原文ではこのあとLIST、NEW、Stopping the Execution、Abbreviation and blanks、Control of Output Device、Error Report、Error Correctionsが続いていますがこれはおそらく編集の手違いかと思われます。
以下想定される正しい順序に直して説明を続けます。



FOR命令とNEXT命令

(例)FOR X=A+1 TO 3*B STEP C−1

変数XにはA+1を計算した結果の値が入れられる。
3*B及びC−1をそれぞれ計算した結果の値が記憶される(記憶されるのは計算式ではなくて計算結果の値である)。
変数名X、このFOR命令が置かれた文の行番号およびその行内の位置もまた記憶される。
そのあとNEXT命令に出会うまでの間は普通に命令の実行が続けられる。
STEP(刻み値)の値は正だけではなくて負の値も指定することができる。
(0も許されるとあるが、その場合には無限ループになってしまうはず)。
刻み値を+1にしたい場合にはSTEPを省略することができる。

(例)NEXT X

変数名Xが最後に実行されたFOR命令の変数名と一致するかが確認される。
もし不一致だった場合最後に実行されたFOR命令はなかったものとされる(無効とされる)。
そしてその前に実行されたFOR命令の変数名と一致するかが確認される。
不一致の場合は一致するまで上記が繰り返される。
一致した場合、その変数(この例ではX)の値にはFOR命令のSTEPで指定した刻み値が加算される(その値がXの新しい値になる)。
そのあと新しいXの値がFOR命令で定義したTOの値と比較される。
新しいXの値がTOの値以内であればFOR命令が置かれた次の位置にジャンプする(FOR命令が文の最後に置かれていた場合にはそのFOR命令の次の行にジャンプする)。
もしXの値がTOの値を超えた場合にはNEXT命令の次の命令が実行される。
FOR〜NEXT命令はネスティングが許される。
ネスティングの深さはスタック容量によってのみ制限される。
もし新しく実行されたFOR命令の変数名がそれ以前に実行された古いFOR命令の変数名と同じである場合には古いFOR命令はなかったものとされる(無効とされる)。



STOP命令

(例)STOP

この命令が実行されるとプログラムの実行が終了され制御がダイレクトコマンドモードに戻される。
STOP命令はプログラム中に何回でも書くことができるが、常に文の最後に置かなければならない。
STOPに続けてセミコロン(;)とその他の命令を書いてはならない。

以上でプログラムに記述できる命令の説明は終わりです。
でもTINY BASICの文法の説明にはまだ続きがあります(なかなかに疲れます)。

次回に続きます。

復活!TINY BASIC[第6回]
2020.5.24upload

前へ
次へ
ホームページトップへ戻る