プロが教える店舗&オフィスのセキュリティ対策術

必要にかられ、ベーシックでプログラムを記載していま
す。ファイルに書き出す命令で「PRINT #」を使ってる
のですが、最終のレコードを書き出した一番最後の位置に
化け文字がついてしまいます。
以下のようにコーディングしています。
==================================================
20 OPEN "a" FOR INPUT AS #1
30 OPEN "b" FOR OUTPUT AS #2
32 INCNT=0
40 IF EOF(1)=-1 THEN 100
51 D128A$=INPUT$(128,1):D128B$=INPUT$(128,1):CRLF$=INPUT$(2,1)
52 IF LEFT$(D128A$,1)="S" THEN PRINT #2,LEFT$(D128A$,128);
57 IF LEFT$(D128B$,1)="E" THEN PRINT #2,LEFT$(D128B$,128);
58 INCNT=INCNT+1
90 GOTO 40
100 CLOSE #1,#2
==================================================
バイナリエディタで内容を見ると「1A」となっています。
これをつけたくないのですが、、、、
簡単に言えば、INPUTのファイルから128バイトずつの
データを抜き出し、横一列に並べたいのです。
古い人の作成したもので、資料が手元になくて困って
います。
ご存知の方がいれば教えてください。

A 回答 (6件)

putダメですか...



ツールですが、テキストエディタではなくて
参考URLのようなユーティリティをBASIC上で
DOSコマンドの呼び出しか、BASICを起動している
バッチから呼び出せば良いかと思ったんですが。

参考URL:http://www.vector.co.jp/soft/dos/util/se158075.h …
    • good
    • 0
この回答へのお礼

はやりBASICのみでは難しいですか。
フリーソフトも検討してみます。

お礼日時:2005/06/24 18:00

PRINT #2,LEFT$(D128A$,128)



出力されるのはどう見てもレコードサイズ128バイトの固定長なんですが^^
ファイルサイズとレコードサイズの違いはOKですよね?


もしくは、このプログラムはこのまますすめて
終了後に、別途にツールを起動して除去してはどうでしょう?

この回答への補足

PUT命令を使ってみましたが、やはり最後に同じものが
ついてしまいます。
はまってしまいました・・・

補足日時:2005/06/23 19:49
    • good
    • 0
この回答へのお礼

回答をいただきありがとうございます。
すみません言葉が足りなかったです。
書き出す時が固定長の128バイトであれば
全て書き出された後、最終的なファイルの長さが
固定でなくてよいと言う意味でしたか。(^^ゞ

>終了後に、別途にツールを起動して除去しては
>どうでしょう?

私、個人が使う場合は良いのですが、現場の人に
テキストエディタを開いてそこを消していただくのは
厳しいです。

お礼日時:2005/06/23 19:25

んー、せっかくINCNTをカウントアップしているのだから



PUT #2,INCNT,LEFT$(D128A$,128)

では?

参考URL:http://www.eli.hokkai-s-u.ac.jp/~kusiyama/Inf1_B …
    • good
    • 0
この回答へのお礼

回答をありがとうございます。
ランダムファイルについて少し調べたのですが
固定長のファイルでファイルのように見えます
もともと書き出すファイルが可変で、そのまま
使うのは難しい気がします。
勘違いで指摘してください。m(__)m

お礼日時:2005/06/23 19:12

511 IF EOF(1)=-1 THEN 100


52 IF LEFT$(D128A$,1)="S" THEN PRINT #2,LEFT$(D128A$,128);

の用にプリント命令のまえにエンドオブファイルの
分岐命令を入れては!
    • good
    • 0
この回答へのお礼

回答をありがとうございます。
>プリント命令のまえにエンドオブファイルの
>分岐命令を入れては!
と言いますと・・・・・
すみません、大変、厚かましいのですが
もう少し教えていただけないでしょうか m(_ _)m

お礼日時:2005/06/23 18:50

INPUT #の文の中にスペース、改行、および復帰文字は無視され、それ以外の最初の文字から、読み取られると書かれていました。


最初の文字が(")引用符であれば、引用符付きデータとして割り当てられると書かれていました。
見当違いの回答でしたらごめんなさい。すこしても、やくにたてばと書きました。
    • good
    • 0
この回答へのお礼

回答をありがとうございます。
読み取ったファイルのデータを表示して見て
特に問題はなかったので、書き出すときに自動で
ついてしまうのかなと思いました。
なにか回避する方法があれば、、、
と言った所です。

お礼日時:2005/06/23 18:24

1AはEOF(ファイルの終端を表す)なので、消す事はできないと思います。



シーケンシャルアクセスでなくて、ランダムアクセスで書き出してはどうでしょうか?

参考URL:http://www.geocities.jp/tahrayan/utili/nfcnv.html
    • good
    • 0
この回答へのお礼

回答をありがとうございます。
ランダムファイルにしてしまうと、書き出した時の
並びが崩れてしまわないか心配です。
転送用のデータの組み立てなので、順番が崩れると
困ってしまいます。
もともと、使っていた転送ソフトが、古くて新しい
ものに代えたら、以前よりも、データのチェックが
厳しくなり、困っています。
PRINT#以外でも使える命令があればと思います。

お礼日時:2005/06/23 18:27

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!