【Mind】CSVライブラリを書いてみる(つくりはじめた…)

PC-9801時代にちょっとかじった日本語プログラミング言語Mindというのがあります。
すべて日本語で記述可能なForthの流れを汲むスタック型の言語です。
Forthは触ったことないんですけど、書式が日本語の語順と合うのです。
UNIX版はフリーになっていて、macでもインストールしたら動いたのでちょっと触ってみようと思いつつ….放置気味でした…(ソースの日本語はEUC-JPにする必要がありますが)
今日思い立って、CSVのライブラリがあれば色々とツール作成に使えるかなぁというわけで作ってみました。
まだ試作品でちょっとインターフェースはダサいのでMindの素振りを再開したというところですど..
こちらのスクリプツ・ラボさんのページに日本語プログラミング言語 Mindがあります。興味のある方はインストールしてみてネ。

http://www.scripts-lab.co.jp/mind/whatsmind.html
さて、CSVライブラリですが…
項目数が256までだとか、分割後の配列オーバーフロー検査してないだとか、まぁ作ってみただけですけど、ソースを晒しちゃいますw ついでに、テストプログラムもね。
コンパイルするときは csvライブラリをfileライブラリとリンクしてコンパイルして、つぎにテストフログラムをCSVライブラリとリンクしてコンパイルする必要があります。
まずは、テストプログラムから…
同じディレクトリに test.csv というCSVテキストファイル(1行)を用意しておいてください

※
※ CSVライブラリのテスト
※
メインとは
  "test.csv"で CSVファイルの読み出し準備して 
  CSVファイルから一行読みだし
  CSVデータ(1個目)を 表示して "/"を 表示し
  CSVデータ(2個目)を 表示して "/"を 表示し
  CSVデータ(3個目)を 表示して "/"を 表示し
  CSVデータ(4個目)を 表示して "/"を 表示し
  改行し
  CSVファイルをクローズする。

つぎにCSVライブラリです。
ソースコードというより仕様書みたいですよね。ちょっと冗長なとこはあるけど。

※
※ CSVライブラリ
※ 2012/1/28 kuni
※
CSVファイルは ファイル。
CSVデータは 256個の 文字列実体。
CSVファイルの読み出し準備とは (文字列->・)
ファイル名は 文字列
ファイル名に 入れ
ファイル名で CSVファイルを オープンして
エラー? ならば
  「!! ファイルのオープンに失敗しました !!:」と ファイル名を 合成して 重大エラーする
   表示し 実行終わり
つぎに
CSVデータを クリアする。
CSV文字列を分解とは (文字列->・)
分解元文字列は 文字列実体
発見位置は 変数
カウンタは 変数
分解元文字列に 入れ
カウンタに 1を 入れ
ここから
','で 分解元文字列から 一文字検索し 発見位置に 入れ
発見位置が ゼロ以外 ならば
  発見位置で 分解元文字列を 分断して 
  CSVデータ(カウンタ)へ 入れ
  カウンタを 一つ増加し
さもなければ
  分解元文字列の 文字数が ゼロ以外 ならば
    分解元文字列を CSVデータ(カウンタ)へ 入れ
  つぎに
  打ち切り
つぎに
繰り返す。
CSVファイルから一行読みだしとは (文字列->・)
ワーク文字列は 文字列
ここから
  CSVファイルから 一行読み出し ワーク文字列に 入れ
  データ終わり? ならば 
    打ち切り
つぎに
ワーク文字列で CSV文字列を分解し
繰り返す。
CSVファイルをクローズとは
  CSVファイルを クローズする。

コメント

  1. kuni より:

    CSVライブラリはしっかりエンバグしているわけだが、今後直すことにしまする。
    「CSVデータを クリアする」の場所がイカンよなぁ。
    あと、文字列実体配列なのがイカしてないので、せめて構造体にしよう。
    いまのままだと、CSVが何項目切り出されたかがわかんないもなー