BHT-BASIC4.0:データファイルの取り扱いについてその2(書込み・読込みの実用的な関数)

データファイルの書き込み、読み込みの処理を行う場合、 その処理を行うそれぞれの場所で PUT命令  GET命令 を 行うのも冗長なので、 通常は関数化してそれをコールします。

今回テストデータファイルとして以下の2個のフィールドを持つファイルを想定します。

・第1フィールド:コードデータ(16バイト)
・第2フィールド:数量データ(12バイト)

 FIELD命令 は以下の様になります。
フィールドサイズをわざわざCONST命令で定義していますが、 この後でこれを有効に使います。 フィールドサイズをどこかで定義しておけば、 リテラルで FIELD命令 に記述するよりはソースがわかりやすと思います。

■書き込み関数について

データファイルに書き込む関数を以下の様に定義します。

フィールド変数に値を設定するところで、 コードデータは右側に空白を付加してサイズ分のみ設定しています。 また、数値は文字列化後、左側にに空白を付加してサイズ分のみ設定しています。

レコード番号の指定が0の場合は、ファイルの最後尾に追加書込みし、 番号が呈されている場合はその番号で上書きします。

■読み込み関数について

データファイルに書き込む関数を以下の様に定義します。

フィールド変数から値を返す変数に設定するところで、 GfTrim$ ユーザ関数で前後の空白を省いています。
レコード書込関数も読込関数もエラー処理では何もしていませんが、 エラー内容等を表示することも必要ではと思いますので、 実際のシステムで利用される方はご自身で追加してみて下さい。

尚、これらの関数を利用してテストしてみます。以下のソースにテスト処理を記述します。

このソースの実行結果は以下の図の様になります。
131
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等)とのデータファイルの送受信について


デル株式会社
コメント(0)