BHT-BASIC4.0:変数宣言の書き方その2(BHT-1300)
ハンディターミナルの開発言語であるBHT-BASIC4.0についての3回目になります。
前回は変数宣言について説明しましたが、追加でいくつかの内容を記します。
■変数宣言されない変数
コンパイラの指定で「オプション」の「宣言されていない変数をエラーにする」チェックをOFFすると変数の宣言が無くても、 変数を初めて使用した時点で変数が宣言されたことになります。
以下のソース「MODULE1.SRC」を見てください。
これを実行すると以下の表示の様になります。
コンパイラはソースの先頭からスキャンするため、 最初に関数Test1の中のWK$が出てきた時に、自動変数として宣言します。 この変数はTest1の中でのみ有効です。
Test1のすぐ下でWK$への値に代入が出てきた時点で、 このモジュール内の変数として、WK$が有効となります。
関数Test2の中でWK$を使用していますが、 これは直前のモジュール変数を参照することになります。
上記のソースを実行すると、考え方としてはCall Test1から走るような感覚です。
この例でも分かるように、自動変数を許可するとどこで変数の値が変化してしまうのかがデバッグ時に混乱してしまいます。 それで通常は、コンパイラオプションの「宣言されていない変数をエラーにする」チェックをONにして、変数は必ず宣言する様にします。
■文字列変数について
今まで気にせずに文字列変数を宣言してきましたが、 実は文字列の格納できる長さについての制限があります。 以下のソースを見てください。
モジュール変数を例にしていますが、最初はWK1$として変数名そのままで宣言しています。 この場合、文字列として格納できる最大の文字数は 40 までです。 暗黙の了解として文字数のMAXを宣言しなければ、40なのです。これは忘れがちなので注意して下さい。
(配列変数の場合は20文字がデフォルトです)
また、この文字数の最大を超えて値を設定すると実行時エラーとして「0Fh:文字列長が範囲外です。」が発生します。 以下のソースでも7行目でエラーが発生します。
さて、2番目の宣言WK2$[10]ですが、 これはWK2$の文字数が最大10であることを宣言しています。 そこで以下のソースの中で7行目をコメント行にして実行すると、当然13行目でエラーが発生します。
ちなみに、文字列の文字数宣言で最大は8192文字までです。
文字列処理はエラーが発生しない様に、文字数宣言を超えない様に文字数を大きくとるか、 または、最大文字数を超えない様な文字列連結の関数を作るかするしかないと思います。
■関連記事
⇒BHT-BASIC:DENSOのハンディターミナルの開発言語のBHT-BASIC4.0を使ってみた
⇒BHT-BASIC4.0:変数宣言の書き方(BHT-1300)
⇒BHT-BASIC4.0:ユーザ定義関数について(BHT-1300)
⇒BHT-BASIC4.0:演算子について(BHT-1300)
⇒BHT-BASIC4.0:画面への表示について(BHT-1300)
⇒BHT-BASIC4.0:キー入力について(BHT-1300)
⇒BHT-BASIC4.0:数値用キー入力関数(ユーザ定義関数)について(BHT-1300)
⇒BHT-BASIC4.0:ユーザ定義関数の値渡し・参照渡しについて(BHT-1300)
⇒BHT-BASIC4.0:文字列を扱うユーザ定義関数について
⇒BHT-BASIC4.0:文字列を扱うユーザ定義関数についてその2
⇒BHT-BASIC4.0:文字列を扱うユーザ定義関数についてその3
⇒BHT-BASIC4.0:TeraTermを使ってDENSOのハンディターミナルにファイル(プログラム)転送を行う方法
⇒BHT-BASIC4.0:I/OポートとWAIT、さらにTIMERについて(BHT-1300)
⇒BHT-BASIC4.0:データファイルの取り扱いについて(BHT-1300)
⇒BHT-BASIC4.0:データファイルの取り扱いについてその2(書込み・読込みの実用的な関数)
⇒BHT-BASIC4.0:データファイルの検索について(SEARCH関数)
⇒BHT-BASIC4.0:ユーザ関数の引数の仮変数に対する代入の注意点
⇒BHT-BASIC4.0:データファイルの削除等について(KILL、CLFILEのラッパ関数)
⇒BHT-BASIC4.0:ファイルの存在確認関数を作ってみました
⇒BHT-BASIC4.0:拡張関数のバイナリサーチ処理関数(BSEARCH.FN3)の使い方
⇒BHT-BASIC4.0:拡張関数のサーチ処理関数(SEARCH.FN3)の使い方
⇒BHT-BASIC4.0:簡単なメニュー表示・選択を行うユーザ関数について
⇒BHT-BASIC4.0:ファイル伝送におけるXFILE命令の使い方
⇒BHT-BASIC4.0:バーコードの読込み(バーコードスキャン)について
⇒BHT-BASIC4.0:Bluetoothデバイスアドレス取得等について
⇒VB.NET:ハンディターミナル(BHT-1300等)とのデータファイルの送受信について
■変数宣言されない変数
コンパイラの指定で「オプション」の「宣言されていない変数をエラーにする」チェックをOFFすると変数の宣言が無くても、 変数を初めて使用した時点で変数が宣言されたことになります。
以下のソース「MODULE1.SRC」を見てください。
これを実行すると以下の表示の様になります。
コンパイラはソースの先頭からスキャンするため、 最初に関数Test1の中のWK$が出てきた時に、自動変数として宣言します。 この変数はTest1の中でのみ有効です。
Test1のすぐ下でWK$への値に代入が出てきた時点で、 このモジュール内の変数として、WK$が有効となります。
関数Test2の中でWK$を使用していますが、 これは直前のモジュール変数を参照することになります。
上記のソースを実行すると、考え方としてはCall Test1から走るような感覚です。
この例でも分かるように、自動変数を許可するとどこで変数の値が変化してしまうのかがデバッグ時に混乱してしまいます。 それで通常は、コンパイラオプションの「宣言されていない変数をエラーにする」チェックをONにして、変数は必ず宣言する様にします。
■文字列変数について
今まで気にせずに文字列変数を宣言してきましたが、 実は文字列の格納できる長さについての制限があります。 以下のソースを見てください。
モジュール変数を例にしていますが、最初はWK1$として変数名そのままで宣言しています。 この場合、文字列として格納できる最大の文字数は 40 までです。 暗黙の了解として文字数のMAXを宣言しなければ、40なのです。これは忘れがちなので注意して下さい。
(配列変数の場合は20文字がデフォルトです)
また、この文字数の最大を超えて値を設定すると実行時エラーとして「0Fh:文字列長が範囲外です。」が発生します。 以下のソースでも7行目でエラーが発生します。
さて、2番目の宣言WK2$[10]ですが、 これはWK2$の文字数が最大10であることを宣言しています。 そこで以下のソースの中で7行目をコメント行にして実行すると、当然13行目でエラーが発生します。
ちなみに、文字列の文字数宣言で最大は8192文字までです。
文字列処理はエラーが発生しない様に、文字数宣言を超えない様に文字数を大きくとるか、 または、最大文字数を超えない様な文字列連結の関数を作るかするしかないと思います。
■関連記事
⇒BHT-BASIC:DENSOのハンディターミナルの開発言語のBHT-BASIC4.0を使ってみた
⇒BHT-BASIC4.0:変数宣言の書き方(BHT-1300)
⇒BHT-BASIC4.0:ユーザ定義関数について(BHT-1300)
⇒BHT-BASIC4.0:演算子について(BHT-1300)
⇒BHT-BASIC4.0:画面への表示について(BHT-1300)
⇒BHT-BASIC4.0:キー入力について(BHT-1300)
⇒BHT-BASIC4.0:数値用キー入力関数(ユーザ定義関数)について(BHT-1300)
⇒BHT-BASIC4.0:ユーザ定義関数の値渡し・参照渡しについて(BHT-1300)
⇒BHT-BASIC4.0:文字列を扱うユーザ定義関数について
⇒BHT-BASIC4.0:文字列を扱うユーザ定義関数についてその2
⇒BHT-BASIC4.0:文字列を扱うユーザ定義関数についてその3
⇒BHT-BASIC4.0:TeraTermを使ってDENSOのハンディターミナルにファイル(プログラム)転送を行う方法
⇒BHT-BASIC4.0:I/OポートとWAIT、さらにTIMERについて(BHT-1300)
⇒BHT-BASIC4.0:データファイルの取り扱いについて(BHT-1300)
⇒BHT-BASIC4.0:データファイルの取り扱いについてその2(書込み・読込みの実用的な関数)
⇒BHT-BASIC4.0:データファイルの検索について(SEARCH関数)
⇒BHT-BASIC4.0:ユーザ関数の引数の仮変数に対する代入の注意点
⇒BHT-BASIC4.0:データファイルの削除等について(KILL、CLFILEのラッパ関数)
⇒BHT-BASIC4.0:ファイルの存在確認関数を作ってみました
⇒BHT-BASIC4.0:拡張関数のバイナリサーチ処理関数(BSEARCH.FN3)の使い方
⇒BHT-BASIC4.0:拡張関数のサーチ処理関数(SEARCH.FN3)の使い方
⇒BHT-BASIC4.0:簡単なメニュー表示・選択を行うユーザ関数について
⇒BHT-BASIC4.0:ファイル伝送におけるXFILE命令の使い方
⇒BHT-BASIC4.0:バーコードの読込み(バーコードスキャン)について
⇒BHT-BASIC4.0:Bluetoothデバイスアドレス取得等について
⇒VB.NET:ハンディターミナル(BHT-1300等)とのデータファイルの送受信について
コメント