[FIELD] コマンド
ランダムファイルのバッファにフィールド変数を割り当てます。
文法 FIELD [#] <ファイル番号>
, <フィールド幅> AS <文字変数> [,<フィールド幅> AS <文字変数>...]
文例 FIELD #1, 128 AS A$, 64 AS B$, 64 AS C$
FIELD は、OPENで設定済みのランダムFILEのBufferに対して、
入出力を行うためのFieldの変数の名前、およびその長さを割付します。
1つの FIELD文で、Bufferの先頭からのField変数の並びをバイト単位で割り付けをします。
FIELDの実行に先立って、OPENによりFILEをランダムモードでオープンしておかねばなりません。
但し、<ファイル番号>が特殊File(KYBD:、SCRN:、LPT:)の場合には、そのBufferに対して
ランダムFILEの場合のように、FIELDを定義出来ます。FIELD変数で参照が出来ます。
(この件はMBASIC86は対応しておりません。N88BASICと異なります。)
<文字変数>には、割り当てたいフィールドの名前を文字型の変数名として指定します。
この変数は、BufferにDataを代入したり、代入したDataを参照するのに用いられ、
Field変数と呼ばれます。
<ファイル番号>は、OPENによりFileをオープンしたときに指定した番号です。
<フィールド幅>は、<文字変数>で指定したField変数に割り当てる文字数で、
バイト数で指定します。1つのBufferには、文字数合計が256バイトまでならば、
いくつのField変数を割り当ててもかまいません。
ランダムファイルは 1レコード長は、
FIELD文で指定したバッファーの長さです。
Field変数への値の代入は[LSET] 、[RSET]
を用いて行います。
数値DataをField変数にセットする場合、数値Dataの型に応じて
[MKI$ 、[MKS$] 、[MKD$]
の各関数を用いて文字型化したのちLSET/RSETを行います。
このとき、整数型 MKI$ の場合は 2バイト長、単精度型 MKS$の場合は 4バイト長、
倍精度型 MKD$ の場合は 8バイト長にそれぞれ変換されますので、
<フィールド幅>もこれに合わせて設定する必要があります。
尚、1つのBufferに対して、異なった形式で複数のFIELD命令を実行してもかまいません。
この場合、1つのBufferが複数とおりのField変数の並びに割り付けされます。
入力は複数のFIELD文のField変数に割り当てられます。
出力は実行したLSET/RSETのとおりに作成されたバッファーを書き込みます。
ただし、1つのFIELD文のField 変数の並びで1つのBufferの先頭からの並びに対応します。
複数のFIELD文のField変数の並びをつないで、1つのBufferにすることは出来ません。
[注意]Field変数への値の代入は、通常の代入文あるいはINPUTなどで行わないで下さい。
Field変数はバイト数を指定した文字型変数ですので一般の文字変数とは扱いが異なっています。
必ずLSET/RSET により代入をして下さい。
[OPEN] 、[GET] 、[PUT] 参照
サンプル1
10 CLS:DIM IDENT%(200)
20 OPEN "D:\DATA.DAT" AS #1
30 FIELD #1, 2 AS L$, 20 AS N$, 50 AS A$
40 INPUT "会員番号(1-999)" ;L%
50 IF L% = 0 THEN 200
60 IF L% >= 1000 THEN 40
70 INPUT "氏名" ;NAME$
80 INPUT "住所" ;ADR$
100 LSET LF$=MKI$(L%)
110 LSET NF$=NAME$
120 LSET AF$=ADR$
130 PUT #1, L%
140 COUNT = COUNT +1
150 IDENT(COUNT)=L%
160 GOTO 40
200 PRINT "件数 " ; COUNT:PRINT
210 FOR I%=1 TO COUNT
220 PRINT IDENT(I%);"; " ;
230 NEXT I%
240 CLOSE #1
300 OPEN "D:\DATA_KEY.DAT" FOR OUTPUT AS #2
310 PRINT #2,COUNT
320 FOR I%=1 TO COUNT
330 PRINT #2,IDENT(I%)
330 NEXT I%
340 CLOSE #2
990 END
この場合、 "D:\DATA.DAT" ランダムファイルに
データがランダムに書き出されます。
次に、"D:\DATA_KEY.DAT" ランダムファイルに
ランダムな会員番号をRECORD番号として入力Dataを書き込みます。
最後に、入力した会員番号をリストにしています。