VB6.0用掲示板の過去のログ(No.2)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [管理用]

投稿日: 2007/01/26(Fri) 00:20
投稿者COBOL派プログラマー
Eメール
URL
タイトルマルチ様式でテキストを出力するプログラム

 初めまして。COBOL派プログラマーと申します。よろしくお願いします。
 現在 パソコンで固定長テキストファイルをマルチ様式可変長のテキストファイルに変換する
プログラムをVB6で開発しようとして大いにはまっております。
 このようなプログラムを組む場合、どのように入出力部分を作るべきでしょうか。
                 記
1.処理概要
 (1)伝票ヘッダー、伝票明細、合計の3種類のレコードをランダムにテキストファイルに
    書き出す。それぞれ異なるレコード長を持ち、各レコードの組み合わせはランダムに
    発生する。
 (2)1レコードごとに改行コードで区切って出力する。

2.試行錯誤の経過
 (1)まず 3種類のレコードをバイナリー改行コード付きの構造体で実装し、レコード長
    指定なしでOPENした出力ファイルにPUT文で出力しようとするとエラーになってしまい
    ました。
 (2)次に (1)のOPEN文をレコード長指定付きに改めると書き込みはできました。
    PUT文については (1)のエラーの原因は レコード長指定がなかったことと
    推定しました。この時点ではとりあえずレコード長を最も長い伝票ヘッダーの長さに
    していました。
    書き込みまでは確かに出来たのですが、ファイルのレングスより短い伝票明細の2
    レコード目移行がきっちり左詰めされず、改行コードの次に余計な余白が出現する
    状態で書き込まれてしまいました。
 (3)そこで、次に レコード種類の変わり目で一旦出力ファイルをCLOSEし、新しいレコード
    長でOPENし直すように改めてみました。
    ところが、これではレコード長さが替わる直前のレコードの開始位置から次のレコード
    位置が計算されているらしく、既に書き込んだレコードが破壊される事態となってしま
    いました。
 (4)今度は書き込み命令を Put からWriteに変えてみました。
    ようやくマルチ様式のレコードイメージにかなり近づいたかに見えました。
    しかし・・・・今度は勝手にレコードの開始と終了の部分に '"' が付いた形で
    書き込まれてしまいました。
    テキストに引用符が着かず、改行マークだけで区切られた状態での出力が欲しいので
    す。

  イメージとしては(4)が一番近いのです。
  このような場合、どう作りこめばよかったのでしょうか。
  できればサンプルコーディングも見せていただければ幸いです。
  よろしくお願いします。


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- VBレスキュー(花ちゃん) - - Web Forum -