忍者ブログ

VB.NET-TIPS などプログラミングについて

VB.NETのTIPS(小技集)を中心に、Javascript、PHP その他のプログラミングについて少し役に立つ情報を発信します。いわゆる個人的な忘備録ですが、みなさんのお役に立てれば幸いです。

BHT-BASIC4.0:データファイルのFIELD文での注意点
私事なのですが、最近収めたシステムで客先より「エラーコードが3DHが表示されてデータが登録できない」との連絡在りました。  3DH のエラーコードの内容は取説より

「3Dh:FIELD ステートメントで指定されたフィールド幅が、ファイルと異なっています。」
とのこと、こちらでいくら再現しようとしてもエラーが発生しませんでした。

そこで客先で該当するデータファイルの情報をシステムメニューから表示してもらったところ、 データファイルのフォーマットが昔のままで、そのためにエラーが発生している様でした。
(最初に納入したプログラムで動作させてそのままにしておいて、 フォーマットが変更された最新のプログラムを動作させて為に発生しました)

この FIELD命令 ですが、既に存在するファイルと違っている場合に 新しい FIELD命令 では機能せずにエラーが発生します。

以下に FIELD命令 でエラーが発生するソースを記します。 最初の FIELD命令 で作成された「TEST.DAT」は2個のカラムを持っていますが、 2度目の FIELD命令 でエラーが発生します。
Main
	SCREEN 1				'漢字モード
	LOCATE , , 2			'カーソルをブロック表示

	ON ERROR GOTO MAIN.ERR
	'FIELDのカラム数の定義
	Const COL.CD% = 4
	Const COL.NUM% = 8
	'TEST.DATファイルを、ファイル番号#1としてオープンします
	PRIVATE FILENO%, strCD$, lngNum&, REC.CD$, REC.NUM$
	FILENO% = 1
	OPEN "TEST.DAT" AS FILENO% RECORD 2147483647
	FIELD #FILENO%, COL.CD% AS REC.CD$, COL.NUM% AS REC.NUM$
	strCD$ = "1"
	lngNum& = 1000
	REC.CD$  = LEFT$(strCD$ + "    ", COL.CD%)	'既定の桁数分スペースを付加
	REC.NUM$ = RIGHT$("        " + STR$(lngNum&), COL.NUM%)	'既定の桁数分スペースを付加
	'書込み
	PUT #FILENO%
	'クローズ
	CLOSE #FILENO%
	
	'FIELDのカラム数の追加定義
	Const COL.DTX% = 4
	PRIVATE strDTX$
	OPEN "TEST.DAT" AS FILENO% RECORD 2147483647
	'カラム数を追加してFIELD文
	FIELD #FILENO%, COL.CD% AS REC.CD$, COL.NUM% AS REC.NUM$, COL.DTX% AS strDTX$
	'書込み
	PUT #FILENO%
	'クローズ
	CLOSE #FILENO%
	'
	WAIT 0, &H1
	END
MAIN.ERR
	PRINT "ERL=";ERL;" ERR=";HEX$(ERR);
	WAIT 0, &H1
	END

このプログラムを実行すると以下の画面になります。

エラーコードが「3D」で、 FIELD命令 でのエラーであることがわかります。

データファイルのフォーマットが変更された場合には、手動でハンディターミナル内部の該当ファイルを削除するか、 もしくは、プログラムで判定して削除してから、再度の FIELD命令 を行う必要があると思います。



=====
2016/04/02:の時の情報











PR

コメント

コメントを書く