INPUT #>ファイル番号>,>変数>,----
機能:シーケンシャルファイルからデータを読み込みます。
文例:INPUT #1,SNAME$,AGE,SEX
解説:>ファイル番号>で指定するファイルは、あらかじめINPUTモードでオープンしておきます。
>変数>が数値変数の場合、ファイル中の空白、コンマ、改行文字がデータの区切りとな
ります。>変数>が文字型変数の場合、コンマ、改行文字がデータの区切りとなります。
N88互換BASICでは、1行にデーターを幾つも並べて書く場合、最終行の最初のデーターを最後のものと判断してしまう。1行しかない場合、最初の1データーのみしか読み込まない。
◇シーケンシャルファイル 例1
155 CLOSE: OPEN "ケイリビコウ.DAT" FOR INPUT AS #1 ' 備考メニューDATA1
160 FOR N=1 TO 110: IF EOF(1) OR FA$(N-1)="**" THEN ELSE INPUT #1,FA$(N): NEXT N
ケイリビコウ.DATの内容=
(この前に60個のデーターが存在し、以下はそれに続く)
61保険料,
62治療費,青色申告会費, 源泉所得税, **
上記の場合、
61保険料までしか読み込まれない。=最終行の最初のデーター
61保険料までで、残りの
62治療費,青色申告会費, 源泉所得税, **は読み込まれない。
◇解決策
61保険料,62治療費,青色申告会費, 源泉所得税
(改行)
**
上記のように、最終データーを最終行に一つだけ置くようにしてOK。または次の「
◇シーケンシャルファイル 例2」のように、「データーの最後に改行コードを追加」でも良い。
◇シーケンシャルファイル 例2
140 CLOSE: OPEN "ケイリカモクG.DAT" FOR INPUT AS #1 ' 経費の音別 並べ換え用
145 FOR G=G3+1 TO G4: IF NOT EOF(1) THEN INPUT #1,GF(G): NEXT
"ケイリカモクG.DAT"の内容=
55,33,31,32,39,52,46,42,53,30,29,45,37,41,48,36,43,44,49,40,47,50,51,38,34,35,54
最初の
55のみを読み、EOF(1)と判断してしまう。

"ケイリカモクG.DAT"の内容を以下のように変更した場合=
55,
33,
31,
32,39,52,46,42,53,30,29,45,37,41,48,36,43,44,49,40,47,50,51,38
最初の
55から32までの4つしか読み込まれない。
◇解決策
以下のように、
改行コードのみで良いから、データーの最後(行末)に1行を追加することで、解決。これがもっとも簡単でベスト。
55,33,31,32,39,52,46,42,53,30,29,45,37,41,48,36,43,44,49,40,47,50,51,38,34,35,54
改行コード

または
"ケイリカモクG.DAT"の全てを改行していく
または
145 FOR G=G3+1 TO G4: IF
NOT EOF(1) THEN INPUT #1,GF(G): NEXT
を
145 FOR G=G3+1 TO G4: IF
EOF(1)=0 THEN INPUT #1,GF(G): NEXT G
このようにプログラムを修正する。(注:この最後の方法は、まだ知識レベルの浅い時点でのメモ。本当に正しいかどうか、再チェックをしていないので注意!)
◇シーケンシャルファイル 例3
120 CLOSE: OPEN "ケイリカモク.DAT" FOR INPUT AS #1 ' 科目の読み込み
125 FOR G=1 TO G4: IF NOT EOF(1) THEN INPUT #1,F$(G)
"ケイリカモク.DAT"の内容=
商 品 , 有価証券, 前払費用, 前払金 , 汁器備品
,
引当金 , 売 上 , 特別売上, 雑収入 , 受取利息
,
dosでは、
,に改行コードが続く場合、そこに中味の無い(空白)データーが1つあると判断する。データーは、汁器備品 空白データー 引当金 と続くと理解する。
N88互換BASICでは、これを存在しないと判断する。データーは、汁器備品 引当金 と続いているものと理解する。
◇解決策
対策としては、以下のように空白データー(=
" ")、または
ダミーを正式に挿入しておけば解決される。
商 品 , 有価証券, 前払費用, 前払金 , 汁器備品
, " "
引当金 , 売 上 , 特別売上, 雑収入 , 受取利息
, ダミー
(← 注:この最終行に改行コードを1つ追加しておくこと)
但し、例2.で記したように最終行は最初のデーター(=引当金)でEOF(1)と判断して、続く「売 上〜受取利息」は読み込まれない。その対処が、上記の改行コードの追加です。
Top 88Menu