◇ 最大20までファイルが開ける CLEAR , , , 20 を宣言しておくと、OPEN ファイル番号#は 1〜20になるそうです。 (但しその分、メモリを多く消費します。) プログラム修正後にこれを発見したので、私はテストしていませんが、、。 |
8720 OPEN DR$+"カイケイ."+YY$ AS #2
8730 FIELD #2, STEP 51, 51 AS W$
9020 FOR I=B2 TO B3
9030 GET #2, I-1 : PRINT W$
OPEN と FIELD宣言で使った変数(この場合は8730行のW$)を、それ以降でW$の変更は厳禁です。330 I=LOF(2): IF DR2$="WIN互換ベーシック" THEN I=LOF(2)/51 330 I=LOF(2): ' 99Basic 6030 I=LOF(2): IF DR2$="WIN互換ベーシック" THEN I=LOF(2)/51 6030 I=LOF(2): ' 99Basic
この時、「ファイルは、すでに最後まで読み込まれている」のメッセージが出ます。 ちなみに PRINT ERR を実行すると、その時のエラー番号、 PRINT ERL を実行すると、その時のエラー発生行の番号が表示されます。 99Basicのヘルプで「エラーコード」を調べると、次のようになっています。 55 File OPEN failure ファイルがオープンできなかった 56 Input past end ファイルは、すでに最後まで読み込まれている ![]() しかしある時に出た私のエラーでは、日本語メッセージは「ファイルは、すでに最後まで読み込まれている」でした。 ところが PRINT ERRで調べると、55になっていました。 大したことではありませんが、発生した ERRとヘルプファイルのエラー番号のにズレがありました。これが全体的なことなのか、この55など一部だけなのかは不明ですが、、 |
▼ N88互換BASICでは、GET #ファイル番号に変数を使うことが出来ません。そのため、以下のように書く必要があったのですが、 645 IF VV=1 THEN GET #1,R ELSE IF VV=2 THEN GET #2,R ELSE IF VV=3 THEN GET #3,R '' N88互換BASIC 650 IF VV=4 THEN GET #4,R ELSE IF VV=5 THEN GET #5,R ELSE IF VV=6 THEN GET #6,R '' N88互換BASIC 655 IF VV=7 THEN GET #7,R ELSE IF VV=8 THEN GET #8,R '' N88互換BASIC ▼ 99BasicではDOS-N88BASICと同様に、GET #ファイル番号に変数を使うことが出来て便利です。 500 FOR VV=1 TO 8 645 GET #VV , R -1 '' 99Basic = -1 6050 ' FOR WI=0 TO 4: GET #2,I-WI: IF VAL(MID$(W$,1,5))=9999 THEN I=I-WI -1 ELSE NEXT WI '' WIN互換ベーシック 6060 FOR WI=0 TO 4: GET #2,I-WI: IF VAL(MID$(W$,1,5))=9999 THEN I=I-WI -2 ELSE NEXT WI '' 99Basic 9730 ' GET #2,I '' N88互換BASIC と DOS-N88BASIC 9735 GET #2,I -1 '' 99Basic
8720 OPEN DR$+"カイケイ."+YY$ AS #2
8730 FIELD #2, STEP 51, 51 AS W$
9020 FOR I=B2 TO B3
9030 GET #2, I-1 : PRINT W$
OPEN と FIELD宣言で使った変数(この場合は8730行のW$)を、それ以降でW$の変更は厳禁です。
▼ N88互換BASICでは、PUT #ファイル番号に変数を使うことが出来ません。そのため、以下のように書く必要があったのですが、
5615 IF VV=1 THEN PUT #1,R ELSE IF VV=2 THEN PUT #2,R ELSE IF VV=3 THEN PUT #3,R ELSE IF VV=4 THEN PUT #4,R '' N88互換BASIC
5620 IF VV=5 THEN PUT #5,R ELSE IF VV=6 THEN PUT #6,R ELSE IF VV=7 THEN PUT #7,R ELSE IF VV=8 THEN PUT #8,R '' N88互換BASIC
▼ 99BasicではDOS-N88BASICと同様に、PUT #ファイル番号に変数を使うことが出来て便利です。
5500 FOR VV=1 TO 8
5610 PUT #VV , R '' N88互換BASIC と DOS-N88BASIC
5615 PUT #VV , R -1 '' 99Basic = -1
例文 1220 PRINT #3, " ": PRINT #3, "** ";YMD$ ; "年度 スキー学校 決算 ** ";DATE$ 1235 PRINT #3, USING PU0$;" 科 目";: PRINT #3, " "; Y0$; " ";Y1$ ;A4$ ; " 合 計" 1245 FOR G=G2+1 TO G4 ' 収入科目〜支出科目 1250 PRINT #3, USING PU0$; F$(G);: PRINT #3, USING PU3$; H#(0,G); H#(1,G); H#(2,G) 1255 NEXT G 1265 PRINT #3, X1$; X1$ 1270 PRINT #3, TAB(17); Y0$; " ";Y1$ ;A4$ ; " 合 計" ' DOS-N88BASICとN88互換BASIC 1270 PRINT #3, SPACE$(17); Y0$; " ";Y1$ ;A4$ ; " 合 計" ' 99Basic 1280 PRINT #3, USING PU0$;"> 収 入 <";: PRINT #3, USING PU3$ ;H3#(0) ;H3#(1) ;H3#(0)+H3#(1) 1285 PRINT #3, USING PU0$;"> 支 出 <";: PRINT #3, USING PU3$ ;H4#(0) ;H4#(1) ;H4#(0)+H4#(1)基本的には、PRINT #については、99Basicだからという変更は無いように思います。
3030 OPEN DR$+ FILE_O$ FOR OUTPUT AS #2 3040 FOR I=1 TO 500 3070 シーケンシャルファイル用の出力命令行 3150 NEXT I例えば上記のようなプログラムで、出力命令行を
6000 ' ---------- Sub. FILED Open #2 ---- 870,20005 6005 CLOSE #1: CLOSE #2 6010 OPEN DR$+"カイケイ."+YY$ AS #2 6025 '' FIELD #2, 51 AS W$ '' WIN互換ベーシック 6025 FIELD #2, STEP 51, 51 AS W$ '' 99Basic 6027 ' 6030 I=LOF(2)/51 '' WIN互換ベーシック 6030 I=LOF(2) '' /51 '' 99Basic 6040 IF I=0 THEN 6110 6050 ' FOR WI=0 TO 4: GET #2,I-WI: IF VAL(MID$(W$,1,5))=9999 THEN I=I-WI -1 ELSE NEXT WI '' WIN互換ベーシック 6060 FOR WI=0 TO 4: GET #2,I-WI: IF VAL(MID$(W$,1,5))=9999 THEN I=I-WI -2 ELSE NEXT WI '' 99Basic 6110 IL0F=I 2070 ' GET #2,I '' WIN互換ベーシック 2080 GET #2,I -1 '' 99Basic 5500 FOR VV=1 TO 8 5610 PUT #VV , R '' N88互換BASIC と DOS-N88BASIC 5615 PUT #VV , R -1 '' 99Basic = -1上記の赤文字が、要修正の部分です。