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$


コメント