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


PIC−USBIO using BASIC

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
USBインターフェースを内蔵したPICを使ってWindowsパソコンで外部回路を制御するための各種I/O基板の製作記事です。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

[第28回]



●REN(リナンバー)

前回は goto ラベル に加えて goto 行番号 の機能も追加しました。
しかし goto 行番号 の機能追加をするためにはどうしても考えなければならない問題をクリアする必要があります。
それはREN(リナンバー)の機能です。
RENは行番号を付け変える機能です。
行番号付きのプログラムを作成していると、その途中で行の削除や追加が必要になることがあります。
行の削除は対象になる行の行番号だけを入力すればその行全体を削除することができます。
これに対して行を追加したい場合には行番号の並びに合わせて間の行番号をつけた行を作成します。
たとえば行番号が10、20、30…と続いているときに行番号20の行と30の行の間に1行追加したい場合には、その行の行番号を25にすれば追加することができます。
この場合にはもちろん25ではなくても21〜29のいずれの数でも構わないのですがさらに追加が必要になったときのことを考えると25にするのが妥当だといえます。
とにかくそのようにすると最初は10、20、30というようにきれいに並んでいた行番号がだんだん不揃いになってきます。
上の例では10、20、25、30…というようになります。
それではいかんということではありませんがきれいに並べ直したいと思うのが人情です。
あるいは特定のところにたくさんの行を追加する必要が出てきてどうしても並べ直さなければならないということもあるかもしれません。
たとえば10、20、21、22、23、24、25、30…と追加をしてきてさらに20と21との間に追加が必要になってしまった場合などは行番号を付け直すしかほかに方法はありません。
そのようなときに使うのがRENコマンドです。
上の例でRENコマンドを使うと10、20、21、22、23、24、25、30…だったものが10、20、30、40、50、60、70、80…のように行番号が付け直されます。

以上RENについて簡単に説明をしましたので、あらためて今回の書き出しのところに戻ります。
今回の書き出しのところでは goto 行番号 を使えるようにした場合にRENが問題になる、と書きました。
それがどういうことなのか。
今までと同様、プログラム例で説明をします。
下は前回 goto 行番号 の説明に使ったプログラムです。

プログラムの先頭に1行追加しました。
このプログラムに対してRENコマンドを使うと先頭に追加した行番号5が10になるため、その次の10が20に20が30にというように行番号が10ずつずれて付け直されます。
すると何が問題になるのかおわかりになりますでしょうか。
50行の goto 20 は goto 30 に直さなければなりません。
40行の goto 60 は goto 70 に直さなければなりません。
それをあとから手作業で直す、なんてわけにはいきませんでしょう。
当然RENコマンドの機能として、影響がある部分の goto 行番号 も同時に直すことが要求されます。
そうしなければならないということがわかっていましたので、当初の仕様では goto 行番号 ではなくて goto ラベル でいくことにしたのです。
ラベルならばRENの問題はおきません。
行番号ではなくてラベルにすると決めたのはテキストエディタを使ってプログラムを作成する場合には行番号は邪魔になるだけだから、という理由も勿論ありました。
まあしかし、気持ちとしては goto 行番号 にするとRENが面倒だなあと思ったことがより大きかったのも事実です。
しかししかし、今更引き返すわけにはいきません。
覚悟を決めてRENもそのように直してしまいました。
なるべく簡単で手間のかからない(私にとっての意味です)BASICを作ろうと考えていたのですけれど、もうめちゃめちゃ手間のかかるBASICになってしまいました。
と過去形で書きましたけれど、正しくは現在進行形なのです(ただでさえ暑い夏ですのにもう暑いったらありませぬ。暑い!)。
下はそのように直したRENコマンドを使ったところです。

行番号が付け直されるとともに goto文のところも番号が付け直されています。

念のためそのように直したプログラムを実行してみました。

もとのプログラムと同じように正しく実行されました。

PIC−USBIO using BASIC[第28回]
2022.7.27upload

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