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


PIC−USBIO using BASIC

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

[第29回]



●GOSUB 行番号

前回までのところではGOTO文の機能を拡張して GOTO 行番号 も使えるようにしました。
普通のブログラムの中でも、またダイレクトモードでも GOTO ラベル だけではなくて GOTO 行番号 も使えるようになりました。
そのように機能を拡張したことに伴って、RENコマンドで行番号を変更したときに、関係する GOTO 行番号 の行番号部分も同時に変更するようにしました。
そこまではGOTO文について書いてきたのですが、GOTO 行番号 は使えるようになったけれど、GOSUB 行番号 は使えないのか?という当然の疑問が出てきてしまいます。
そういうことになるので、当初は行番号に対応するようにはしないでおこうと決めていたのですが、ここまで来てしまいましたので、もうやるしかありません。
GOSUB文についても行番号が使えるように直しました。
以下はそのように機能拡張したGOSUB文についての動作テストです。

下のプログラムは[第19回]でテストに使ったサンプルプログラムです。

もとのプログラムでは50行に GOSUB *ABC があります。
そして80行に *ABCラベル があってここがサブルーチンの先頭行になっています。
そこのところを GOSUB 行番号 に対応するように書き換えます。

スクリーンエディタの機能が使えますからこの程度のプログラムの変更は簡単にできます。
カーソルを50行に移動してそこで *ABC を 80 に書き換えて[Enter]を入力するだけで書き換えできます。
80行はこれもスクリーンエディタの機能を使ってカーソルを80行まで移動してそこで *ABC の前に ’ を書いて行全体をコメント行にしてしまいました。
このように変更したあと/convを実行し中間言語型に変更しました。
そのあとrunコマンドを入力してプログラムを実行しました。

[第19回]と同じ結果になりました。
これでGOSUB 行番号 が正しく実行されることが確認できました。

GOTO 行番号 のテストではダイレクトモードについてのテストも行ないました。
GOSUB文をダイレクトモードで実行することは余りないと思いますができないわけではありません。
GOSUB 行番号 をダイレクトモードで実行してみました。

今回のテストで使ったプログラムでは行番号80から始まるサブルーチンは画面に”SUBROUTINE”と表示したあとRETURNするだけの簡単なものです。
上の画面の下から4行目で
a=123:gosub 80:c=a+B:print c
と入力したあと[Enter]を入力しました。
80行のサブルーチンがCALLされそこで SUBROUTINE と表示されたあとc=a+Bの計算結果が表示されました。
PIC−USBIO用BASICではコマンドや命令は英小文字と英大文字は区別されません(どちらも使えます)が変数名は大文字と小文字は区別して認識されます。
上の例ではc=a+Bとc=a+bとでは異なる計算結果になります。

GOTO文ではRENでの対応についてのテストも行ないました。
GOSUB文についても同じようにテストして行番号が正しく変更されるかどうかを確認してみます。

RENで行番号が付け直しされるようにプログラムの先頭に
5’
を追加しました。

そのあとRENコマンドを実行してからLISTコマンドを実行しました。

もとのプログラムでは
50 GOSUB 80
だったところがREN実行後は
60 GOSUB 90
に変更されました。

念のため/convを実行して中間言語型に翻訳したあとrunコマンドを実行しました。

プログラムが正しく実行されたことが確認できました。

PIC−USBIO using BASIC[第29回]
2022.7.29upload

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