DOBON.NET DOBON.NETプログラミング掲示板過去ログ

UNIXフォーマットFDの読み取り

環境/言語:[WindowsXP,98 VB6.0SP5]
分類:[VB6以前]

しまといいます。初めて質問します。よろしくお願いします。
VB6+オラクルで開発をしているのですが、
どうしても既存システムからUNIXフォーマットのフロッピー(5.25&3.5インチ)で
データを受け取らねばならないのですが、
何かDLLを使用するなどしてフロッピー内のテキストファイルを読み取る
方法はありませんでしょうか?
実行端末はWindowsXPもしくはWindows98を想定しています。(XP希望)

ハードのほうは用意できているのですが、読み取りで行き詰ってしまいました。
(OSでフロッピーの読み書きができれば一番ありがたいのですが…)
ご存知の方いらっしゃいましたら、ぜひ教えてください。
よろしくお願いします。
> どうしても既存システムからUNIXフォーマットのフロッピー(5.25&3.5インチ)で
> データを受け取らねばならないのですが、

UNIXフォーマットというのフロッピー自体のフォーマット形式のことですか?
だとして、それはWindowsのExplorerで普通に見れるのでしょうか?
見れるのであれば、「UNIXフォーマット」ということは意識する必要はなく、
単なるファイルI/Oです。

そういうことでなく、フロッピーの中身のファイルのフォーマットのことをおっしゃっているのであれば、
どういうフォーマット(改行コード、文字コード)かはっきりさせて下さい。
UNIXでのごく普通のテキストファイルということなら、
改行コードはLFで、文字コードはEUC-JPでしょう。

> 何かDLLを使用するなどしてフロッピー内のテキストファイルを読み取る
> 方法はありませんでしょうか?

WindowsのExplorerでそのファイルが普通に見れているのなら、
特別なDLLも何も必要ないですし、そうでなければ、VBがどうこうという前に
Windowsからそのフロッピーが見れるようにしないといけません。

文字コードがShift_JISであれば、後は、改行コードの問題だけでしょうから、
Line Inputで読み込んだ後、Split関数でvbLfで分割すればOKです。

文字コードがEUC-JPなら、ADODB.Streamが使えると思います。
(参考リンク)
http://homepage1.nifty.com/MADIA/vb/vb_bbs2/200308_03080100.html
ご丁寧にありがとうございます。

エクスプローラで見れれば一番いいのですが、それができないのです。
既存の、誰がどういう経緯で導入したのか不明なシステム(Windows95+Access95)が動いている
コンピュータはエクスプローラではUNIXから持ってきたFDを見れないのですが、
データの取り込みのACCESSからは読み込めるようになっているので、
何かしらのDLLを使っているのかなと思ったわけです。

> WindowsのExplorerでそのファイルが普通に見れているのなら、
> 特別なDLLも何も必要ないですし、そうでなければ、VBがどうこうという前に
> Windowsからそのフロッピーが見れるようにしないといけません。

Windowsで読めるようにできれば、後は楽々なんですが…
UNIXのシステムは何十年と使っているシステム(入れ替えてくれ…)で
リプレイスするには億単位で費用がかかるので、
オープン側にしわ寄せが来ている状態です…
こちらでは、初めて書き込みさせて頂きます。

> エクスプローラで見れれば一番いいのですが、それができないのです。
> 既存の、誰がどういう経緯で導入したのか不明なシステム(Windows95+Access95)が動いている
> コンピュータはエクスプローラではUNIXから持ってきたFDを見れないのですが、
> データの取り込みのACCESSからは読み込めるようになっているので、
> 何かしらのDLLを使っているのかなと思ったわけです。

  昔、電算写植系システムへ、ワープロ関係のFDをコンバートして
  データの連携ソフトを作成していたことがあるので、大体解っては
  いる話なのですが・・・

  多分、所謂IBMフォーマット形式のFDと思われますので、以前は
  F-TRAN とか、JF-TRAN とか言う名称で呼ばれたFDコンバータソフト
  が、使えるはずです。

  MS-DOSのころは、DISK BIOS を直接呼び出して、片面単密度とか、両
  面倍密とかのFDを読み書きしました。
  現在のWindowsでは、プロテクトモードに完全以降してしまっており
  Windows95のころは、仮想86モードを使えた為、BIOSを直接呼び出した
  りして、対応することがありました。Win32 から、Win16 をDPMI経由
  で呼び出すのです。

  よって、Win95を使っている意味は解ります。
  しかしながら、現時点でのWin2000/XP等で、それらの動作を行えるか
  については、やったことが無いので、FDコンバータとかの商品を検索
  され、お調べになった方がいいと思います。

  因みに、5インチまたは3.5インチFDでは、0 シリンダ、0 サイドは
  単密度フォーマットになっているので、そこを読めないことには、所
  謂、FAT/Directoryに相当するファイル配置テーブルが読み込めないの
  で、単密度を読めるハード・OSで無ければ無理です。

  ※ あくまで、IBMフォーマットとして書いています。

  ご参考までに。

以上。
ご丁寧にありがとうございます。

今回の場合、IBMフォーマットではなく、
unixで「tar cvf …」とコマンドを実行して作らるのと同じ形式のFDです。
データコンバートソフトを探したのですが、今のところ見つかっていない状況です。
開発元に聞いてみると、PC98シリーズでは実例はあるが、DOS/V機では実例が無いとのことで…

今のところ一番有効と思われる方法は、WindowsXp(2000)にCygwinをインストールし、
Cygwinで「tar xvf ・・・」と実行しFD上のファイルをローカルに展開させ、
それを読み込む方法が一番可能性が高いようです。
(Microsoftが提供しているSFUでも試してみようと思っています。)

3.5インチのFDについては上記の方法でうまくいったのですが、
5.25インチのほうについてはI/Oエラーが発生してうまくいきません。
開発元によると、3.5インチのほうは9セクタフォーマットで、5.25インチの方は
8セクタフォーマットなので、それが原因ではないかと言われています。
ドライブはTEACのFD-55GFRを使っています。
しかし、3モードドライバを入れてもうまくいかず、頭を抱えています…
■No2520に返信(しまさんの記事)
> 今回の場合、IBMフォーマットではなく、
> unixで「tar cvf …」とコマンドを実行して作らるのと同じ形式のFDです。
> データコンバートソフトを探したのですが、今のところ見つかっていない状況です。
> 開発元に聞いてみると、PC98シリーズでは実例はあるが、DOS/V機では実例が無いとのことで…

  了解しました。

  反則かもしれませんが・・・
  こんなもの使えませんか?
  FD Clone
  http://hp.vector.co.jp/authors/VA012337/soft/fd/whatsfd.html

  これですと、UNIX側でMS-DOSのフロッピーに落とせるよう
  なので・・・

  ご参考までに。

以上。

DOBON.NET | プログラミング道 | プログラミング掲示板