2023.12.21
前へ
次へ
ホームページトップへ戻る


PICBASICコンパイラ

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
まるでインタプリタ。でもコンパイラです。超カンタン超シンプルです。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

[第115回]



●SDカードIF(35)SDカードをWindows7に接続(8)CSVファイル(6)EXCELがオーバーフロー

前回はバイナリデータファイルを読み込んで十進数データのファイルを作成し、そのファイルをTeraPadとExcelで開いてみました。
うまく開くことができましたのでバイナリから十進への変換についてはそれで終るつもりだったのですが。
作業を終えて自宅に戻る道すがら、あることに気が付きました。
「ちょいと待てよ。それで終るのはまだ早いのでは」

バイナリから十進数への変換のために使ったバイナリファイルはコードが20〜7F(16進数表記)のデータファイルです。
テストが簡単に行なえるようにということで、普通のテキストエディタでもエラーにならずに開くことができるASCII文字コードの範囲に限ったデータです。
しかし前回はそのデータを文字コードとしてではなく、計算できる数値として扱えるように十進数への変換プログラムを作ったのでした。
8ビットのバイナリデータは00〜FF(16進数表記)です。
それを十進数に変換すると0〜255の数になります。
すると。
00〜1F(0〜31)と80〜FF(128〜255)の範囲のデータについてはまだ試してないことに気が付いたのでした。
そこまでしなくてもいいんじゃないの?
そのようにも思ったのですけれど。
バイナリから十進数への変換には気を付けなければならない点があります。
00〜FFは0〜255であると同時にそれを符号付の数と考えると00〜7Fは0〜127ですが80〜FFは−128〜−1になります。
いまのところPICBASICコンパイラでは00〜FFは符号なしの数と考えていますがバイナリから十進数への変換プログラムもそのようになっているかどうかは念のために確認しておく必要があると考えました。

そのためにはデータが00〜FFであるようなバイナリファイルが必要です。
前回までテストに使ったTEST29.BINファイルは[第107回]で00〜FFの範囲のデータのうちの20〜7Fだけを取り出して作成したデータファイルです。
そこで一部のデータを取り出すのではなくて00〜FFの全部を読み込んでデータファイルとしてセーブすれば今回の目的に合ったデータファイルができます。
そのようにして新たに作成したバイナリデータファイルはTEST31.BINです。
さっそくテストをしてみました。

いままでは変換プログラムを実行したときに確認のためにデータを読み込む都度それを表示していましたが、もうその必要は無いと考えたのでプログラムのその部分は削除しました。
変更後のプログラム名はBINDECB.EXEです。
プログラムの実行によって作成されたTEST31.CSVをTYPEコマンドで開いてみました。
0〜255まで正しく十進数に変換されていることが確認できました。

念のためにTEST31.CSVをExcelでも開いてみることにしました。
ところが。
こんなメッセージが表示されました。

どういうこと?
{OK]をクリックしたところExcelが開きました。

ちゃんと最後の255まで読み込まれています。
この画像はデータの最後のところですが、データの先頭の0からちゃんとセルに格納されています。
それなのに「全体が読めなかった」とは?
ひょっとしたら…。

実はバイナリから十進数に変換するプログラムではちょいと手抜きをしていてファイルの最後が「,」で終っています(上の方のTYPEコマンドでの表示参照)。
そのためExcelはその最後の「,」の次に「スペース」というデータがあると解釈したのかもしれません。
今回Excelを実行してはじめて気が付いたのですが横方向のセルは256しかありません。
そこに0〜255を入れたためちょうど横方向のセルの終わりまできてしまいました。
その次に「スペース」がくるともうそれを格納するセルがない、ということかもしれません。
それを確認するために最後の「,」を削除してみました。
その作業はTeraPadを使えば簡単にできます。
TeraPadでTEST31.CSVを開きました。

最後の「,」を削除します。

最後の「,」を削除しました。

最後の「,」を削除したファイルはTEST31B.CSVという名前でセーブしました。

TEST31B.CSVをExcelで開いたところ今度は何もメッセージは表示されずに普通にExcelが開きました。


前回はExcelでデータを表示するときに横方向に表示するのではなくて縦方向に表示させたい場合もあるかもしれないということで、データを縦方向に表示する変換プログラムも作成しました。
しかし今回のテストでわかったことはExcelでは横方向の表示はわずか256データしか表示できないので、一般的にはやはり縦方向に表示するのを主にすべきということです。
私が使っているExcelはかなり昔のものなので(多分Excel2000)、今のExcelは横方向のセルの数ももっと多いかもしれません。
それでもおそらく縦方向のセルのほうがずっと多いと思います。

念のために縦方向に表示させるためのバイナリから十進数への変換プログラムをTEST31.BINに対して実行してみました。

前回作成した変換プログラムはBINDEC2.EXEですが、読み込んだデータを表示している部分を削除したプログラムBINDECB2.EXEを作成しましたのでそれを実行しました。
実行後作成されたTEST31.CSVファイルをTYPEコマンドで表示させてみます。

最後の255まで縦方向に表示されました。


Excelで開いてみました。


PICBASICコンパイラ[第115回]
2023.12.21upload

前へ
次へ
ホームページトップへ戻る