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


PIC−USBIO using BASIC

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

[第32回]



●RESUME 行番号

前回はON ERROR GOTO文を行番号に対応するように機能を拡張しました。
今回はRESUME文です。
RESUME文はON ERROR GOTO文と対になる命令です。
プログラムの実行中にエラーが発生してON ERROR GOTO文が指定する行が実行されたあとの戻り先を指定します。
RESUME文については[第25回]で説明しました。
RESUMEだけのときはエラーが発生した行に戻ります。
RESUME NEXT はエラーが発生した行の次の行に戻ります。
そのほかの行に戻りたいときにはその戻り先の行をラベルで指定します。
今回はそのところを行番号でも指定することができるように機能を拡張しました。
以下はそのように機能拡張したRESUME文の動作テストです。

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

もとのプログラムでは最初の10行にON ERROR GOTO *err があります。
そして60行に *errラベル があります。
この部分もついでに行番号で指定するように変更しておきます。
この変更は前回で行なったのと同じです。
今回のRESUME文に対しては70行の resume *l30 のところを行番号に直します。
小文字の l(L)が数字の1に見えてしまいますが130ではなくてl30です。
RESUME文で指定する戻り先は30行です。
そこに*l30ラベルがあります。
そのところを RESUME 行番号 に対応するように書き換えます。

今までと同様にスクリーンエディタの機能を使うことで簡単にプログラムの変更ができます。
カーソルを10行に移動してそこで *err を 60 に書き換えて[Enter]を入力しました。
60行はこれもスクリーンエディタの機能を使ってカーソルを60行まで移動してそこで *errラベル を削除して[Enter]を入力しました。
その次の70行は *l30 のところを 30 に書き換えて[Enter]を入力しました。
そしてカーソルを30行に移動してそこで *l30ラベル を削除して[Enter]を入力しました。
そのように変更したあと/convを実行し中間言語型に変更しました。
そのあとrunコマンドを入力してプログラムを実行しました。

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

ON ERROR GOTO文は特殊なのでダイレクトモードでは実行できません。
しかしRESUME文はON ERROR GOTO文が実行されてエラー処理のところでそのままブレークした場合には、その直後ならダイレクトモードでも使うことができます。
下はダイレクトモードでのRESUME文の実行例です。

上で使ったプログラムを一部書き換えます。
エラー処理後にブレークするように70行のRESUME文を削除しました。
そのようにしておいて/conv、runを実行しました。
ちょっとわかりにくいですけれどrunのあと
a=12345 b=0 c=456
が表示されたあとでエラーが発生して on error goto 60 が実行された結果
60行のprint文が実行されて
ERC=12 ERL=4
が表示されたあと、そこでブレークしました。
その下の
>b=10:resume 30
がダイレクトモードでキーボードから入力した文です(最後に[Enter]を入力しました)。
b=10 と resume 30 が直ちに実行され、30行〜50行が実行されて、そこでブレークしました。

最後にRENで行番号が正しく変更されるかどうかを確認してみました。
今までと同じようにプログラムの先頭に
5’
を追加したあと、RENコマンドを実行してからLISTコマンドを実行しました。

もとのプログラムでは
10 on error goto 60
だったところがREN実行後は
20 on error goto 70
に変更されました。
また
70 b=b+2:resume 30
だったところが
80 b=b+2:resume 40
に変更されました。

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

プログラムが正しく実行されたことが確認できました。
RENを実行する前のプログラムではエラーが発生したときの行No.が4でしたが、1行を追加してRENを実行しましたからエラーが発生したときの行No.が5になりました。
そのあとRESUME文も正しく実行されたことが表示からわかります。

PIC−USBIO using BASIC[第32回]
2022.8.4upload

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