BASICです。読み込みの次は書き込みです。
サンプルはファイルコピーをするプログラムです。sample.txtをout.txtへコピーします。
cat open-write-close.bas | nl -ba -i10 -v10 takk@deb9:~/tmp$ cat open-write-close.bas | nl -ba -i10 -v10 10 '$lang: "qb" 20 30 open "sample.txt" for input as #1 40 open "out.txt" for output as #2 50 60 do until eof(1) 70 line input #1, a$ 80 write #2,a$ 90 loop 100 110 close #1 120 close #2 130 takk@deb9:~/tmp$
結果を見てみましょう。
takk@deb9:~/tmp$ fbc open-write-close.bas takk@deb9:~/tmp$ ./open-write-close takk@deb9:~/tmp$ ls open-write-close open-write-close.bas out.txt sample.txt takk@deb9:~/tmp$ ls -l 合計 64 -rwxr-xr-x 1 takk takk 52624 9月 18 20:47 open-write-close -rw-r--r-- 1 takk takk 156 9月 18 20:36 open-write-close.bas -rw-r--r-- 1 takk takk 332 9月 18 20:47 out.txt -rw-r--r-- 1 takk takk 292 9月 18 20:05 sample.txt takk@deb9:~/tmp$
あれ、sample.txtとout.txtのサイズが違います。
diffします。
takk@deb9:~/tmp$ diff *.txt 1,20c1,20 < "1 21 41 61 81" < "2 22 42 62 82" < "3 23 43 63 83" < "4 24 44 64 84" < "5 25 45 65 85" < "6 26 46 66 86" < "7 27 47 67 87" < "8 28 48 68 88" < "9 29 49 69 89" < "10 30 50 70 90" < "11 31 51 71 91" < "12 32 52 72 92" < "13 33 53 73 93" < "14 34 54 74 94" < "15 35 55 75 95" < "16 36 56 76 96" < "17 37 57 77 97" < "18 38 58 78 98" < "19 39 59 79 99" < "20 40 60 80 100" --- > 1 21 41 61 81 > 2 22 42 62 82 > 3 23 43 63 83 > 4 24 44 64 84 > 5 25 45 65 85 > 6 26 46 66 86 > 7 27 47 67 87 > 8 28 48 68 88 > 9 29 49 69 89 > 10 30 50 70 90 > 11 31 51 71 91 > 12 32 52 72 92 > 13 33 53 73 93 > 14 34 54 74 94 > 15 35 55 75 95 > 16 36 56 76 96 > 17 37 57 77 97 > 18 38 58 78 98 > 19 39 59 79 99 > 20 40 60 80 100 takk@deb9:~/tmp$
書き込み時に勝手に””が付与されていますね。実はwriteを使うと、区切り文字とクォートが自動で付与されるようになっています。変数を用意して試してみましょう。
cat write.bas | nl -ba -i10 -v10 takk@deb9:~/tmp$ cat write.bas | nl -ba -i10 -v10 10 '$lang: "qb" 20 30 a$ = "HELLO1" 40 b$ = "HELLO1" 50 c$ = "HELLO3" 60 70 open "out0.txt" for output as #1 80 90 write #1,a$,b$,c$ 100 110 close #1 120 takk@deb9:~/tmp$
以下が結果です。なんとCSV形式ですね。
takk@deb9:~/tmp$ fbc write.bas takk@deb9:~/tmp$ ./write takk@deb9:~/tmp$ cat out0.txt "HELLO1","HELLO1","HELLO3" takk@deb9:~/tmp$
ではwriteをprintに変えてもう一度、ファイルコピーをやってみましょう。
cat open-print-close.bas | nl -ba -i10 -v10 takk@deb9:~/tmp$ cat open-print-close.bas | nl -ba -i10 -v10 10 '$lang: "qb" 20 30 open "sample.txt" for input as #1 40 open "out2.txt" for output as #2 50 60 do until eof(1) 70 line input #1, a$ 80 print #2,a$ 90 loop 100 110 close #1 120 close #2 130 takk@deb9:~/tmp$
結果です。out2とsample.txtが同じサイズです。今度は一致しました。
takk@deb9:~/tmp$ fbc open-print-close.bas takk@deb9:~/tmp$ ./open-print-close takk@deb9:~/tmp$ ls -l *.txt -rw-r--r-- 1 takk takk 332 9月 18 20:47 out.txt -rw-r--r-- 1 takk takk 292 9月 18 20:51 out2.txt -rw-r--r-- 1 takk takk 292 9月 18 20:05 sample.txt takk@deb9:~/tmp$ diff out2.txt sample.txt takk@deb9:~/tmp$
コメント