BHT-BASIC4.0:データファイルの取り扱いについてその2(書込み・読込みの実用的な関数)
データファイルの書き込み、読み込みの処理を行う場合、
その処理を行うそれぞれの場所で PUT命令 、
GET命令 を 行うのも冗長なので、
通常は関数化してそれをコールします。
今回テストデータファイルとして以下の2個のフィールドを持つファイルを想定します。
・第1フィールド:コードデータ(16バイト)
・第2フィールド:数量データ(12バイト)
FIELD命令 は以下の様になります。
フィールドサイズをわざわざCONST命令で定義していますが、 この後でこれを有効に使います。 フィールドサイズをどこかで定義しておけば、 リテラルで FIELD命令 に記述するよりはソースがわかりやすと思います。
データファイルに書き込む関数を以下の様に定義します。
フィールド変数に値を設定するところで、 コードデータは右側に空白を付加してサイズ分のみ設定しています。 また、数値は文字列化後、左側にに空白を付加してサイズ分のみ設定しています。
レコード番号の指定が0の場合は、ファイルの最後尾に追加書込みし、 番号が呈されている場合はその番号で上書きします。
データファイルに書き込む関数を以下の様に定義します。
フィールド変数から値を返す変数に設定するところで、 GfTrim$ ユーザ関数で前後の空白を省いています。
レコード書込関数も読込関数もエラー処理では何もしていませんが、 エラー内容等を表示することも必要ではと思いますので、 実際のシステムで利用される方はご自身で追加してみて下さい。
尚、これらの関数を利用してテストしてみます。以下のソースにテスト処理を記述します。
このソースの実行結果は以下の図の様になります。
MfGetData%関数のコールをレコード番号を1から順次カウントアップして与えています。 実際のレコードが無くなった時点で戻り値としてGcFalse%が返ってくるので、 その時にWHILEループが終わります。
実際にTEST.DAT をMTP接続か何かでパソコンにアップロードし内部を見てみると、 1レコードの区切りとしてCR,LFコードが付加されています。 これはいわゆるテキストファイルの改行コードそのものです)
よって、ファイルのサイズはレコード数×2バイト分増えることになります。
転職を本気で考えている方向けのプログラミングスクール!【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-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:データファイルの検索について(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等)とのデータファイルの送受信について
今回テストデータファイルとして以下の2個のフィールドを持つファイルを想定します。
・第1フィールド:コードデータ(16バイト)
・第2フィールド:数量データ(12バイト)
FIELD命令 は以下の様になります。
フィールドサイズをわざわざCONST命令で定義していますが、 この後でこれを有効に使います。 フィールドサイズをどこかで定義しておけば、 リテラルで FIELD命令 に記述するよりはソースがわかりやすと思います。
■書き込み関数について
データファイルに書き込む関数を以下の様に定義します。
フィールド変数に値を設定するところで、 コードデータは右側に空白を付加してサイズ分のみ設定しています。 また、数値は文字列化後、左側にに空白を付加してサイズ分のみ設定しています。
レコード番号の指定が0の場合は、ファイルの最後尾に追加書込みし、 番号が呈されている場合はその番号で上書きします。
■読み込み関数について
データファイルに書き込む関数を以下の様に定義します。
フィールド変数から値を返す変数に設定するところで、 GfTrim$ ユーザ関数で前後の空白を省いています。
レコード書込関数も読込関数もエラー処理では何もしていませんが、 エラー内容等を表示することも必要ではと思いますので、 実際のシステムで利用される方はご自身で追加してみて下さい。
尚、これらの関数を利用してテストしてみます。以下のソースにテスト処理を記述します。
このソースの実行結果は以下の図の様になります。
MfGetData%関数のコールをレコード番号を1から順次カウントアップして与えています。 実際のレコードが無くなった時点で戻り値としてGcFalse%が返ってくるので、 その時にWHILEループが終わります。
■実際のファイルについて
実際にTEST.DAT をMTP接続か何かでパソコンにアップロードし内部を見てみると、 1レコードの区切りとしてCR,LFコードが付加されています。 これはいわゆるテキストファイルの改行コードそのものです)
よって、ファイルのサイズはレコード数×2バイト分増えることになります。
転職を本気で考えている方向けのプログラミングスクール!【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-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:データファイルの検索について(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等)とのデータファイルの送受信について
コメント