4:Re:フロッピーディスクの変換について 温泉好きのうさぎ 02/21 19:04 A-VX01形式のフロッピーの実体であるPAFDU000という名の拡張子の無いファイルは、フロッピー一枚をそのまま一つのファイルにした状態です。 ご質問は、このファイルをA-VXを使わずに、Windowsからデータを参照したいということですよね? このためには、 「データ管理説明書」の 第2章 ボリューム形式とラベル 2.2 フロッピィディスク 第4章 ファイル処理機能 4.2.4 フロッピィディスク上のファイル形式 このあたりが、ほぼ完璧に理解できているぐらいのスキルの持ち主でもない限り、Windowsからそのファイルの中が見えたとしても、そこから必要なデータを切り出していくのは非常に困難だと思います。 たいへん失礼ながら、「初心者」とのことですので、まず不可能なのではないでしょうか。 具体的なことを書きますと、PAFDU000はオフコンのデータですから、コードセットはEBCDICとなっています。Windowsのメモ帳等で開いてみても、意味不明の文字列しか見えないのはこのためです。 例えば、スペースを表わすEBCDICコードの ””40”” は、ASCIIでは、「@」なので「@」がたくさん見られると思います。 また、漢字等の2バイト系文字は、A-VX の独自コードになっていますので、それをWindows側のコードセットに変換するのは、工夫がいるかもしれません。 さて、PAFDU000のファイルサイズは、1,355,776 バイトですが、有効なデータは、先頭の998,972 バイトのみです。フロッピーディスクに空き領域ができないようにするために、ダーミーデータが付加されていると思われます。 次に、この先頭からボリュームラベルおよびファイルラベルが記録されている VTOC があります。 A-VXでは、データの単位として「セクタ」というものがあります。通常は、1セクタ = 256バイトであり、磁気ディスクや両面倍密度フロッピー (2HD型) がそうなのですが、フロッピーに関しては片面単密度フロッピーとの互換性のために、VTOCの片面のみ 1セクタ = 128バイトとなっています。 ボリュームラベルは重要では無いですが、ファイルラベルの解析は重要です。 そして、このファイルラベルから目的のファイルをさがし、必要なデータがどのアドレスにあるのかを判断しなければなりません。そのアドレスもシリンダ、トラック、セクタによる表現のため、実際に何バイト目を示しているのかを計算するのは非常にやっかいです。 目的のファイルのレコード長が 256バイトであれば、レコード単位でデータを見ることはまだ容易でしょうが、他のレコード長やブロック化されていたりすると、これを展開させるのがまたやっかいなことになります。 そのファイルが順編成や相対編成であれば、データは順番に入っているので、EOF と削除レコードの判断ができれば、これで終了となります。 しかし、索引順編成ファイルであれば、どれが有効レコードなのか、ほとんど判断不能です。索引ブロックが階層化されるぐらいデータ件数が多くなると、もうお手上げ状態です。 以上はデータファイルについてですが、プログラム等の入っている SUL の中から一本の COBOL のソースを読み出したいというのでしたら、無理と判断したほうが早いです。待機編成ファイルの構造が理解されていないと不可能です。 素直に A-VX で SUL からソースを抽出して #NFCNV で変換するのが最善です。 質問者様が具体的に何をなさりたいのかがわかりませんので、長々と書きましたが、有意義な回答であったかどうか。 あくまで、PAFDU000は、A-VXのみで使うファイルであり、Windows側から参照する必要はないと思います。 |