DATAとINPUT
-2005年6月5日改訂-


・文字列表記の話

BASICのカンマは区切り

DATAに関わる命令
 データ文は初期設定に使う
 READ命令
 RESTORE命令
INPUTに関わる命令
 INPUTとLINEINPUT
 INPUT#とLINEINPUT#
USINGに関わる命令
 
USINGとUSING#
・表計算サンプル

・文字列表記の話

 領収書などで\1,000,000円という表記をしますね。
これは区切りすることで、数値の間違えを防ぐ役割がカンマ(,)にはあります。
 しかし、BASICでこのようなプログラムを組むとT=1,000という表記ではなく、T=1000というふうになります。
表を計算する場合はこのように1000となります。<USINGとUSING#参照>

BASICのカンマは区切り

 BASICでは”で文字列の始まりと終わり、カンマでデータとデータの区切りになっています。
ところが、DATA文で”をつけなくても処理してくれます。
 また、PRINT A$,B$で水平タブのような役割もあります。

PRINT"Width","Height":PRINT"30","50"

 このようにBASICは遊びから仕事まで何にでも利用できる汎用の高級言語と言われてきました。
しかし、インタープリタ型という特性から処理がどうしても遅くなる欠点があり、
テキストにソースを書くコンパイラ型のC言語、MSXではマシン語になってきたわけですが。

■DATAに関わる命令

1.デー タ文は初期設定に使う

 例えば絵文字などのパターンデータ、メッセージなど大きなデータをDATA文としておき、プログラムとデータを分け見やすくすることができます。

2.READ命令

 READ命令はこのDATA文をロードする命令です。

10 FOR I=0 TO 3
20    READ I$
30 NEXT
40 DATA 1,2,3,4

 上のプログラムの場合、0から1、2、3と4回のDATAの読み込みを行います。

READ I1$,I2$

 この場合はI1$="1"とI2$="2"と入ります。

3.RESTORE命令

 RESTORE命令は読み込みたいDATAの行を指定します。

50 DATA 3
35 RESTORE

 このように省略するとDATAの最初の行から読み込むこともできます。

■INPUTに関わる命令

1. INPUTとLINEINPUT

 カンマの話をしてみましょう。

INPUT A,B

 このような命令で1<リターン>をすると?Redo from startとなります。
入力方法に誤りがある場合に表示されます。A=2とB=3と入力するならば

? 2,3

と入力します。
この記述はプログラムを見ないとユーザーがわからない欠点があり最近はあまり使われていません。

LINEINPUT"FILE:";I$

 この命令はよく、ファイル名などに使います。?がなくなりFILE:と表示されます。
文字列であればカンマを入力できます。
ただし、文字列を数値にする場合、カンマまでが数値化されるだけでカンマ以降は数値になりません。


2.INPUT#と LINEINPUT#

 ファイルアクセスにも使う事ができます。
カンマは区切る特性を利用すれば表にも利用は可能です。

テキストで打つとき

名前,電話番号,FAX,ケイタイ,備考

というふうな行があればINPUT#を使って名前と電話番号と区切ってする事も可能です。
逆に区切らないでいい場合はLINEINPUT#を使います。

■USINGに関わる命令

1. USINGとUSING#

USINGはPRINT USING命令のことで、この命令は特殊な表記に用います。
 この命令は数を右揃えにして、カンマ、@などを数値に付けたい場合などに使用します。

T=1000:PRINT USING"#,###",T

では100万にして桁あふれさせてみましょう。

T=1000000:PRINT USING"#,###",T

お、すごいMicrosoftExcelみたいですね。次の表記方法もやってみてください。

PRINT USING"#,#",T
PRINT USING"#,###",T

表示する文字数を制限することもできます。

これはMicrosoftExcelで

2月のミナカン 参加者数

2月のミナ参加者数

このように列を縮めると表示されないようになりますね。これもできます。

T$="abcdef":PRINT USING"&  &";T$

■表計算サンプル

 MSX2+以降の漢字BASICでやってみてください。

10 FOR I=1 TO 3
20     READ A$(I),B$(I)
30     PRINT A$(I),B$(I)
40 NEXT
50 DATA "区間名","料金"
60 DATA "神奈川線","600"
70 DATA "東京線","700"

なお、MSX2の場合は漢字部分をカタカナに書き換えればできます。

例えばMicrosoftExcelの場合=B2+B3のセルは
AA=VAL(B$(2))+VAL(B$(3))
これで合計がAAに入ります
? AA

で解答です。VALは文字列を数値に変える処理をしています。
文字列変数が9までであればDIMは宣言しなくてもよいです。

(c)2005 U-YAN’S