BASIC(OPEN/INPUT/CLOSE)

BASICでファイル読み込みをします。
子供の頃にN88 BASIC触ってた時は、ファイルという概念がどうしても理解できなかったと記憶してます。パソコンを起動すると、BASICインタプリタが起動するのが当たり前だったので、BASICが起動するのがパソコンだと思い込んでいました。OSって何? BASICあればいいじゃん状態。ずっと避けて通ってきたファイル読み込み、大人になったら余裕で理解できるので、子供の頃のリベンジです。

ファイルを開き、読み込み、閉じる。ファイルを扱うのはこの手順ですね。
サンプルソースです。

takk@deb9:~/tmp$ cat open-input-close.bas | nl -ba -i10 -v10
    10  '$lang: "qb"
    20
    30  open "sample.txt" for input access read as #1
    40
    50  do until eof(1)
    60    line input #1, a$
    70    print a$
    80  loop
    90  close #1
takk@deb9:~/tmp$

openで#番号に、ファイルを割り付けて、input #番号でファイルを読み込みます。
EOFを見つけるまで繰り返し読むため、do~loopを使っています。

読み込むデータを作成。

takk@deb9:~/tmp$ seq 100 | pr -t5J | tee sample.txt
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$

では、ビルドして、ファイルを読み込んでみましょう。
処理は、読み込んでそのまま表示するだけです。

takk@deb9:~/tmp$ fbc open-input-close.bas
takk@deb9:~/tmp$ ./open-input-close
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$

ファイルと結果を比較してみます。

takk@deb9:~/tmp$ !! | diff - sample.txt
./open-input-close | diff - sample.txt
takk@deb9:~/tmp$

何も表示されてませんので、一致しましたね。

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA