DENSO製ハンディターミナルで使用するDSL、「BHT-BASIC」の話。
BHT-BASICで自分がハマった処をメモ。
PD4ファイル(実行バイナリ)
ファイル名は8byte以下にする。9byte以上だと、実行時に「ファイル名エラー」となり、動作しない。コンパイルは正常終了するので、原因が特定しづらい。
DATファイル作成
ファイルを新規作成する時、必ずフィールド情報も同時に作成する。そうしない場合、不正なFLDファイルが作成され、ファイルが使用不可となる事がある。そうなった場合は意図せず作成されたFLDファイルを削除する。(「フィールドサイズエラー」というエラーメッセージが出て、にっちもさっちも行かなくなった場合は、大概これが原因だと思う。)
ファイルIO
フィールド情報を指定しなければ、DATファイルを使用できない。また、ファイル名が長いとエラーが発生する。条件によってエラー上限が変わる? 上記同様、8byte以下にしておくのが無難。エラーメッセージが不親切すぎて原因が特定しづらい。
ファンクション
includeファイルの関数や定数を使用する場合、呼び出し元の関数だけでなく、呼び出し元のメイン関数にも宣言が必要となる。また、ファンクション名に「_(アンダーバー)」を使用すると、コンパイルエラーが発生する。エラーメッセージが不親切すぎて原因が特定しづらい。
コーディング時、サブルーチンを先に記述し、メイン関数を最下段に記述するようにする。メイン関数を先に記述すると、サブルーチンは関数でなく変数として扱われる。(同様の現象はPower Shellでも発生する。確か、Delphiでも発生したはず。) ビルド時、「プロジェクト設定」タブのリンクオプション「未定義変数をエラーにする」をONにする事で、コンパイル時にエラー検出可。
キー入力内容読み込み
「キー」と「キーデータ」という概念がある。ユーザが入力する [1] のキー(ボタン)のキーデータは「1」となるが、キーとキーデータが一致しないボタンもある。( [ENT]キーとか [BS/C]キーとか)
ハンディ to ハンディのデータコピー
ハンディ to ハンディでデータをコピーする時、ハンディIDも同様にコピーされる。(4:SETSYSTEM→5:COMMUNICATION→PROTOCOL TYPE→3:BHT-Ir Protocolで確認できる値) アプリ側で、この値をハンディ識別子として使用している場合は要注意。意外と忘れがち。