おすすめ本

最近のトラックバック

  • event (夢茶爺&苦茶爺のPC奮戦備忘録)

AccRanking

Ad

« 2016年3月 | メイン | 2016年6月 »

2016年4月

2016年4月 8日 (金)

BHT-BASIC4.0:数値用キー入力関数(ユーザ定義関数)について(BHT-1300)

前回はBHT-BASICのキー入力の INPUT 命令はいまいち使いにくいのを記事にしましたが、 それを補うために汎用的な数値用キー入力関数を作ってみました。

以下のソースがその関数なのですが GfGetNum% の名前で、 引数は入力文字列を返す変数と、入力桁数を指定する変数があります。 この関数の戻り値としては[ENT]キー、[F1]キーのどちらで戻ったかを示す整数値フラグです。

実際のプログラムの実行はラベル Main の次からです。 プログラムの中で使用されるユーザ定義関数は、 使用される位置よりも前に宣言されていなければなりません。 そのため、実行開始がユーザ定義関数より下の方に位置しています。

この件ですが、一般的なコンパイラであれば、同じソース内のローカルなユーザ定義関数の宣言を上の方で出来る様にして、 ユーザ定義関数よりも前に実行している行が在っても良いようにしてほしいものです。 共通関数的なユーザ定義関数は常にソースの最初の方に持ってこないといけないのでソースの位置制限があるのは問題だと思います。 (もっとも、共通関数は別ファイルにして関数定義のみを宣言させる方法もありますが)

このソースの実行の様子は以下の様になります。
81
この関数ですが、[F1]キー戻りはありますが、F2,F3,F4での戻りも必要かとは思いますので、 この関数を利用される場合は、それらの拡張をしてみてください。


楽天市場

転職を本気で考えている方向けのプログラミングスクール!【WebCampPRO】


■関連記事
BHT-BASIC:DENSOのハンディターミナルの開発言語のBHT-BASIC4.0を使ってみた
BHT-BASIC4.0:変数宣言の書き方(BHT-1300)
BHT-BASIC4.0:変数宣言の書き方その2(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等)とのデータファイルの送受信について

デル株式会社

2016年4月 7日 (木)

BHT-BASIC4.0:キー入力について(BHT-1300)

今回はBHT-BASICのキー入力について説明したいと思います。
私が使った BHT-1306B ですが、 商品コードなどはバーコードでスキャンすれば入力できますが、 数量などを入力するにはキー入力が必要になります。

以下のソースは、画面モードを「漢字モード」に設定し、キー入力を数字入力方式に設定して 文字列入力を行います。 カーソル表示の制御は LOCATE 命令で、ブロック表示になる様に行います。

このソースの実行の様子は以下の様になります。
71
この場合、入力はずっとできるのかと思いきや、40文字を入力したところでカーソルが止まります。 BHT-BASICでは INPUT 命令では文字変数の最大文字列長までしか入力できない様です。

当然以下の様に文字列変数の領域を4文字までとすれば、4文字までしか入力できません。

この INPUT 命令の仕様は便利なように思いますが、 キー入力の途中で何かを行いたい場合は別の方法が必要だと思います。


このソースでは桁数が短い場合は問題無く数値入力ができますが、 下図の様に桁数を長く入力すると以下の実行時エラーが発生します。
72
エラーコード(&H06)(演算結果が許容範囲をこえています。)
この結果から業務プログラムでは INPUT 命令は使えない様に思います。
ではどうすればいいのかは今後の記事にご期待ください。

楽天市場

転職を本気で考えている方向けのプログラミングスクール!【WebCampPRO】


■関連記事
BHT-BASIC:DENSOのハンディターミナルの開発言語のBHT-BASIC4.0を使ってみた
BHT-BASIC4.0:変数宣言の書き方(BHT-1300)
BHT-BASIC4.0:変数宣言の書き方その2(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等)とのデータファイルの送受信について


デル株式会社

BHT-BASIC4.0:画面への表示について(BHT-1300)

今回はBHT-BASICの画面への表示について説明したいと思います。
私が使った BHT-1306B ですが、液晶画面の仕様は以下の様になっています。

・ドット数:240(横)×320(縦)ドット

・表示文字数:(文字フォントサイズと画面モードで変わります)
フォントサイズ 画面モード 表示文字数(桁×行) 文字ドット数(横×縦)
標準 ANKモード 20桁×20行 12×16
標準 漢字モード 8桁×10行(16桁×10行) 30×30(15×30)
ANKモード 20桁×20行 12×16
漢字モード 10桁×13行(20桁×13行) 24×24(12×24)
40 ANK・漢字 6桁×8行(12桁×8行) 40×40(20×40)
30 ANK・漢字 8桁×10行(16桁×10行) 30×30(15×30)
24 ANK・漢字 10桁×13行(20桁×13行) 24×24(12×24)
16 ANK・漢字 15桁×20行(30桁×20行) 16×16(8×16)

画面モードの切り替えはSCREENステートメント(命令)で行います。
また、フォントサイズの指定は、 OUT命令により&H6080のアドレスに値を出力することで行います。
ソース的には以下の様な感じです。


そこで各モードとフォント設定でどの様な表示なるのかを試してみました。

■標準フォント・ANKモード


ここで、FOR文が出てきましたが、 このステートメントはいろんな言語で既によく使われていますのでFOR文自体の 説明はしませんが、 20文字の文字列を20回画面に表示を行います。 実行結果は以下の様になります。
61


■標準フォント・漢字モード


62


■小フォント・ANKモード


63
シミュレーションでの表示ですが、「標準フォント・ANKモード」と同じになりました。

■小フォント・漢字モード


64

■40ドットフォント


65

■30ドットフォント


66

■24ドットフォント


67
この最後の表示は、「小フォント・漢字モード」と同じ結果になります。

私がBHT-1306Bを使ったシステムを作成した時には、 漢字の文字数などから判断して「小フォント・漢字モード」の表示を採用しました。

楽天市場

転職を本気で考えている方向けのプログラミングスクール!【WebCampPRO】


■関連記事
BHT-BASIC4.0:変数宣言の書き方(BHT-1300)
BHT-BASIC4.0:変数宣言の書き方その2(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等)とのデータファイルの送受信について

デル株式会社

BHT-BASIC4.0:演算子について(BHT-1300)

今回はBHT-BASICの演算子について説明したいと思います。
BHT-BASICには、算術演算子、関係演算子、論理演算子、関数演算子、文字列演算子と 普通の言語にはだいたいそろっている演算子があります。

■演算子の優先順位
優先順位 演算子名称 演算子
1 括弧 ( ) 括弧の中が優先して演算
2 関数演算子 組込み関数,ユーザ関数の実行
3 算術演算子 ※演算子の中で更に優先度がある
優先順位 演算 演算子
1 負号 -
2 乗算、除算 * , /
3 剰余演算 MOD
4 加算、減算 + , -
4 関係演算子 = , <> , >< , < , > , <= , >= , =< , =>
5 論理演算子 ※演算子の中で更に優先度がある
優先順位 演算 演算子
1 否定 NOT
2 論理積 AND
3 論理和 OR
4 排他的論理和 XOR
6 文字列演算子  

演算子は特に目新しいものは無く、よくあるものばかりですので、 各演算子毎に細かくは記しませんが、少し注意するものをピックアップします。

■算術演算子・剰余演算(MOD)

MODは割り算の余りを返すものです。 以下の例の様に数値は四捨五入し整数にしてからMOD演算が行われます。

Basic51

■オーバーフローとゼロによる除算

演算結果がオーバーフローしたり、ゼロで割った場合には実行時エラーが発生します。 以下のソースはその例を示します。

Basic52

■関係演算子について

関係演算子は2個の式を比較して、真「-1」または偽「0」を返します。 この値を使って、プログラムの流れを制御できます。 以下のソースは、IF文を使った各関係演算子の例を示します。

また、関係演算子の計算結果を変数に入れて使うこともできます。

Basic520


■論理演算子を式で使う

論理演算子は、複数の関係演算子での判定結果を関連付ける演算子です。

Basic53

■文字列演算子について

文字列の演算では結合しかなく、+マークで行います。 また、数値の様に文字列の比較ができます。

Basic54

楽天市場

■関連記事
BHT-BASIC:DENSOのハンディターミナルの開発言語のBHT-BASIC4.0を使ってみた
BHT-BASIC4.0:変数宣言の書き方(BHT-1300)
BHT-BASIC4.0:変数宣言の書き方その2(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等)とのデータファイルの送受信について

デル株式会社

2016年4月 6日 (水)

BHT-BASIC4.0:ユーザ定義関数について(BHT-1300)

ハンディターミナルの開発言語であるBHT-BASIC4.0についての4回目になります。 今回はユーザ定義関数について説明したいと思います。

■ユーザ定義関数

ユーザ定義関数とは、BHT-BASICが既に備わっている関数ではなく、ユーザが任意で作成する関数のことです。 ユーザが定義できる関数には大きく分けて2種類のものがあり、 DEF FN及びFUNCTIONで定義される値を返す関数と、 SUBで定義される値を返さない関数があります。
このうちFUNCTION関数SUB関数DECLAREステートメントで宣言することで 別モジュールで使用することができます。

DEF FN関数及びFUNCTION関数には返す値により 関数の最後にデータ型を示す記号を付加します。
ユーザ定義関数のデータ型 DEF FN関数の書式 FUNCTION関数の書式
整数型 FN関数名% 関数名%
長整数型 FN関数名& 関数名&
実数型 FN関数名 関数名
文字型 FN関数名$ 関数名$
文字型
(文字列長指定)
FN関数名$(・・・)[NNN]
(NNN:に文字列長指定)
関数名$(・・・)[NNN]
(NNN:に文字列長指定)

値を返す関数は、私は専らFUNCTION関数を使い、DEF FN関数は殆んど使っていません。 なぜならば、DEF FN関数ではSTATIC変数が使えませんし、 他のモジュールから参照することができないからです。

尚、値を返さない関数は当然のことSUB関数で宣言します。

関数には値を渡さない場合は引数の宣言をしませんが、値が必要な場合には関数の宣言のところで引数の宣言を行います。 この引数の渡し方には、値渡し(call by value)と、参照渡し(call by reference)の2種類があります。

■値渡し・参照渡し

以下のソース「MODULE1.SRC」を見てください。


これを実行すると以下の表示の様になります。 Basic41
FUNCTION関数の宣言はFUNCTIONで始まり、END FUNCTIONで終わります。 関数の引数は仮引数名で宣言し、値渡しはBYVALキーワードで宣言し、 参照渡しはBYREFキーワードで宣言します。 BYVALBYREFが無い場合はデフォルトで値渡しになりますが、 引数の意味合いをはっきりさせるため、必ずこのキーワードを付加すべきだと思います。

関数の戻り値は関数名に値を代入することで戻します。
このソースでは、Func1%は値渡し、Func2%は参照渡しの例です。

楽天市場

■関連記事
BHT-BASIC:DENSOのハンディターミナルの開発言語のBHT-BASIC4.0を使ってみた
BHT-BASIC4.0:変数宣言の書き方(BHT-1300)
BHT-BASIC4.0:変数宣言の書き方その2(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等)とのデータファイルの送受信について


デル株式会社

BHT-BASIC4.0:変数宣言の書き方その2(BHT-1300)

ハンディターミナルの開発言語であるBHT-BASIC4.0についての3回目になります。 前回は変数宣言について説明しましたが、追加でいくつかの内容を記します。

■変数宣言されない変数

コンパイラの指定で「オプション」の「宣言されていない変数をエラーにする」チェックをOFFすると変数の宣言が無くても、 変数を初めて使用した時点で変数が宣言されたことになります。
以下のソース「MODULE1.SRC」を見てください。


これを実行すると以下の表示の様になります。 Basic31
コンパイラはソースの先頭からスキャンするため、 最初に関数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等)とのデータファイルの送受信について


デル株式会社

2016年4月 5日 (火)

BHT-BASIC4.0:変数宣言の書き方(BHT-1300)

ハンディターミナルの開発言語であるBHT-BASIC4.0についての2回目ですが、 今回はデータ型に続いて変数宣言について説明します。

一般的にプログラム言語で存在する、グローバル変数、モジュール変数、ローカル変数がBHT-BASICにもあります。 グローバル変数、モジュール変数とはユーザが宣言する関数の外で静的に存在する変数です。 ローカル変数とはユーザ関数の中で一時的に存在する変数のことです。

それでは各変数それぞれについて詳しくみていきます。

■グローバル変数

ユーザが宣言する関数の外で、PUBLIC または GLOBALの命令語(ステートメント) で変数を宣言すると、グローバル変数として宣言できます。
PUBLIC と GLOBALですがどちらで宣言してもいい様ですが、それぞれ違いがあります。 まずはPUBLIC宣言のソースの例です。 この例では「MODULE1.SRC」と「MODULE2.SRC」の2つのソースがあります。 尚、プロジェクトのプロパティでメインモジュールとして「MODULE1.SRC」を指定してあります。

これを実行すると以下の表示の様になります。
Basic21
PUBLIC宣言はソースファイルのどこか一カ所で行えば、 別のソースでそれを参照する場合は、宣言なしでその変数名を使えば 参照できます。

同じ変数名で別のソースでPUBLIC宣言すると二重定義エラーがリンク時に発生します。 但し、同じ変数名でもモジュール変数として宣言すれば別の変数として扱われますので、 注意が必要です。

上記のソースで宣言した、「PDT1%」「PDT2$」を今度はGLOBALで宣言します。 今回の場合は「MODULE2.SRC」の方にも同じ宣言をしないと、リンク時に変数宣言エラーが発生します。

どちらの方法でも同じ結果になるのですが、 PUBLIC または GLOBALのどちらがいいとも言えません。
PUBLICの場合は、他のソースで宣言しなくても使えるので楽と言えば楽かもしれませんが、 変数が多くなりソースファイルの数が増えると管理が厄介です。
但し、PUBLICを宣言するところを一カ所に限定し、 変数の命名規則でPUBLICだとわかるプリフィックスを先頭に付けるのも方法かもしれません。

GLOBALはその変数を参照しているソースファイルで同じ宣言を行う必要が在ります。 この宣言を別ファイルにし、変数の宣言のみのソースとして、各ソースファイルでインクルードすることで煩雑ではなくなると思います。 以下のソースがその例です。


■モジュール変数

ユーザが宣言する関数の外で、PRIVATE または DIMのステートメント で変数を宣言すると、モジュール変数として宣言できます。
PRIVATE 、 DIMのどちらでも効果は同じなのですが、 DIMはレジスタ変数としては宣言できない様です。
以下のソースを見てください。「MODULE2.SRC」では同じ変数名でモジュール変数を宣言しています。 「MODULE2.SRC」のモジュール変数は同じ変数名ですが、「MODULE1.SRC」とは全く異なるメモリ領域に確保されます。

これを実行すると以下の表示の様になります。 「MODULE2.SRC」のTest1関数が実行される時には、「MODULE2.SRC」内のモジュール変数として 初期化されたそれぞれの内容が表示されます。

Basic22

■ローカル変数

ユーザが宣言する関数の内で、PRIVATEDIMSTATICの各ステートメント で変数を宣言すると、ローカル変数として宣言できます。

グローバル変数やモジュール変数と同じ名前でローカル変数を宣言しても、 全く別ものとして扱われます。(全く別のメモリ領域に割り当てられます)

この様に組むと、関数の中から同じ名前のモジュール変数が参照できなくなります。 そのため、通常プログラムする時にモジュール変数とローカル変数は、なるべくかぶらない様にしています。


楽天市場

転職を本気で考えている方向けのプログラミングスクール!【WebCampPRO】

■関連記事
BHT-BASIC:DENSOのハンディターミナルの開発言語のBHT-BASIC4.0を使ってみた
BHT-BASIC4.0:変数宣言の書き方その2(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等)とのデータファイルの送受信について


デル株式会社

chmファイル(Microsoft Compiled HTML Help)を開けない場合の対処方法

古いソフトのヘルプファイル(ファイル拡張子は CHM )の場合が開けないことがあります。 chmファイルは古い規格で内部的にHTMLで書かれているようです。 そのため、最近はWindows のセキュリティの関係から直接は見れない様になっています。

Chmhlp0


以下の方法でセキュリティ関係を解除してやれば見ることができます。

chmファイルの名前の所で右クリックをして、「プロパティ」を選択します。 そこで「ブロックの解除」のボタンをクリックします。

Chmhlp1


「ブロックの解除」のボタンがグレー表示になりますので、 「適用」ボタンまたは「OK」ボタンをクリックします。

Chmhlp2


その後、chmファイルをダブルクリックで起動すれば内容が見えるはずです。

Chmhlp3

2016年4月 4日 (月)

BHT-BASIC:DENSOのハンディターミナルの開発言語のBHT-BASIC4.0を使ってみた

DENSOのハンディターミナルBHT-1300を使ったシステムを作成することがあったので、 ハンディターミナルの開発言語であるBHT-BASIC4.0についていろいろ載せていきたいと思います。

このBHT-BASIC4.0ですが言語としてはBASICなのですが、 最近のはやりのVisualBasic.NETとは全然違っています。
一言でいえば相当昔のBASICで、言語仕様的には30数年前の NECのPC8001やPC8801などのROM-BASICと呼ばれていたBASICに近いです。 これらのBASICは元々はMicroSoftが開発したBASICを日本のメーカが採用し ROMの中に入れていたものです。 パソコンの電源ONでいきなりBASICが走る感じになっていました。

なので、昔にBASICを触ったことが有る方ならば懐かしい感じで プログラムできるのではないでしょうか。 実際私も、昔を思い出しながら組みました。

昔語りはこの辺にしまして、BHT-BASIC4.0に話を戻します。 BHT-BASIC4.0(以降はBHT-BASICと称します)はハンディターミナルの上で動作させるためなのか、 昔のBASICよりは制約がいろいろあります。 変数の名前の長さであったり、文字列のMAX長であったりそこは ハンディターミナルなのでメモリの制約があると思われます。

それでは今回は初回なので、変数などについて記します。

■BHT-BASICのハンディターミナル内での構成

ハンディターミナルのメモリにはフラッシュメモリとRAMがあり、 フラッシュメモリの中では以下の構成部分からなります。
・システムプログラム
 (BHT-BASICインタプリタ、拡張ライブラリ、拡張関数、システムドライバ等)
・ユーザプログラム
 (ユーザが作成した実行可能なプログラムファイル)
・ユーザデータファイル
 (ユーザプログラムで作成・使用されるデータファイル等)


■BHT-BASICの開発など

・BASICの文法はほぼMicroSoftのBASICと同じです。
・専用のコンパイラ・リンケージエディタで開発します。
・コンパイラ言語なので行番号は不要です。
・実行可能プログラムファイルは中間言語に変換される。
 (ファイル拡張子は PD4 
・開発環境はWindows7,Windows8などの32bitパソコンが必要です。
・実行プログラムをハンディターミナルに転送する通信ユニットが必要です。
 (通信ユニットにはUSBまたはRS-232Cでパソコンと接続)


■BHT-BASICの特徴など

・プログラムの1行は512文字(バイト)
・変数名に使用できるのは、英数字とピリオドのみ
・変数名は大文字と小文字の区別は無く、255文字まで
 (但し、文字列変数を表す $ 、 整数変数を表す % は文字数に含めない)
・変数のデータ型には以下の4種類がある。
データ型 型宣言文字 値の範囲
整数型 % -32,768 ~ 32,767
長整数型 & -2,147,483,648 ~ 2,147,483,647
実数型 無し (ゼロ)0
(正数)0.1000000000E-64 ~ 0.9999999999E+63
(負数)-0.1000000000E-64 ~ -0.9999999999E+63
文字型 $ 0文字 ~ 8192文字

文字列型の文字数のMAXが8192文字(バイト)なのは注意が必要です。 また、文字列型は他にも注意する点があるのですが、それはまた次回に記します。

今回はこの辺りまでで、終わります。
次回は、変数の宣言の仕方や、式の書き方などにします。

転職を本気で考えている方向けのプログラミングスクール!【WebCampPRO】


■関連記事
BHT-BASIC4.0:変数宣言の書き方(BHT-1300)
BHT-BASIC4.0:変数宣言の書き方その2(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等)とのデータファイルの送受信について


BHT-BASIC4.0BHT用 転送ユーティリティ DLLパック【送料無料・代引手数料無料】【02P05Nov16】

価格: 48,600円
(2016/11/26 21:56時点 )



楽天市場

VB.NET:VisualBasicで役立つ情報が載っているサイト

私自身もプログラムを組んでいて調べ物をするときには、よくGoogleで検索しています。 でもなかなかほしい情報にたどり着くことは難しいものです。 既に先人が解決していて、ネットに載せていればそれを参考にできるのですが。

さて、そんな時に最初に調べるサイトを紹介します。以下のサイトでVisualBasicでの大抵の問題は解決すると思います。

■VBレスキュー(花ちゃん)

http://hanatyan.sakura.ne.jp/

ここは初心者から中級辺りまでの情報が満載です。掲示板もありますので質問もできます。


■DOBON.NET

http://dobon.net/

ここは初心者から上級辺りまでの情報が満載ですし、ソースも完備しています。 掲示板もありますので質問もできます。


■Visual Basic 中学校

http://homepage1.nifty.com/rucio/main/main.htm

このサイトによれば 「対象者はVB初心者。特に小学生、中学生、高校生プログラマを念頭に置いています」 とのことですが、解説はVisualBasicを初めて学ぶ方にとっては非常に分かりやすいと思います。 ここは初心者から中級辺りまでの内容ですが、改めて勉強しなおすには良いサイトです。

■CodeProject

http://www.codeproject.com/

このサイトは英語なのですが、英語だとひるまずに、必要な単語を検索ボックスに入力し検索してみてください。 ほしい情報がヒットするかもしれません。 結構な情報量です。私もたまに利用させてもらっています。
デル株式会社

楽天市場