99Basicインタプリタ(手引き書) PRINTの関係 - 画面
![]() |

![]() |
100 PRINT " A=" A " B=" B " C=" C '' WIN互換ベーシックではエラー (; (セミコロン)の省略は不可)
100 PRINT " A=" A " B=" B " C=" C '' 99BasicとDOS-N88BASICではOK
100 PRINT " A=";A ;" B=";B ;" C=";C '' 99BasicとDOS-N88BASIC、WIN互換ベーシックすべてOK
200 PRINT " A+1=" A+1 " B+1=" B+1 " C+1=" C+1 '' DOS-N88BASICではOKだったと記憶?
'' 99Basicでは「データーの型が一致していない」エラー
'' WIN互換ベーシックではエラー (; (セミコロン)の省略は不可)
200 PRINT " A+1="; A+1 ; " B+1="; B+1 ; " C+1="; C+1 '' WIN互換ベーシックOK、DOS-N88BASICもOK?
'' 99Basicでは「データーの型が一致していない」エラー
200 PRINT " A+1=";(A+1); " B+1=";(B+1); " C+1=";(C+1) '' すべてでOK
200 PRINT " A+1=" (A+1) " B+1=" (B+1) " C+1=" (C+1) '' 99BasicとDOS-N88BASICではOK
'' WIN互換ベーシックではエラー (; (セミコロン)の省略は不可)
注:
99Basicでは、
200 PRINT " A+1=" (A+1) " B+1=" (B+1) " C+1=" (C+1)
のように、 PRINT A+1の後にさらプリントが続く場合は、 (A+1) 式に ( )で囲んでおく必要があります。
但し、 (C+1)の後にはプリントが続かないので、
200 PRINT " A+1=" (A+1) " B+1=" (B+1) " C+1=" C+1
となっていても、エラーにはなりません。
★ケース.1
3010 PRINT "操越= " USING "###,###,###";AK# '' DOS-N88BASICのみでOK
3010 PRINT USING "操越= ###,###,###";AK# '' 99BasicとDOS-N88BASIC、WIN互換ベーシックすべてOK
3010 PRINT "操越= ";: PRINT USING "###,###,###";AK# '' 99BasicとDOS-N88BASIC、WIN互換ベーシックすべてOK
★ケース.2
3050 PU1$="###,###,### ###,###,### ###,###,### ###,###,### ###,###,###"
3060 PRINT "事業所得 " USING PU1$ ;A#(1);A#(2);A#(3);A#(4);A#(5)
DOS-N88BASICではOK、99Basicでは「文法どおりに記述されていない」エラー。
3060 PRINT USING "事業所得 " PU1$ ;A#(1);A#(2);A#(3);A#(4);A#(5)
DOS-N88BASICでは不明、99Basicでは「文法どおりに記述されていない」エラー。
3060 PRINT USING "事業所得 "+ PU1$ ;A#(1);A#(2);A#(3);A#(4);A#(5)
DOS-N88BASICでは不明、99BasicではOK。
★ケース.3◇修正の実例(画面) 7000 ' -------- Sub. 科目コード表------ 7010 CLS: CLS 2: COLOR 5: ' width 80,20 7020 FOR N=1 TO 15 7040 GX=N: IF GX=<G1 THEN B_SW=0: GOSUB 7150 ' 資産=1列め 7050 GX=N+G1: IF GX=<G2 THEN B_SW=1: GOSUB 7150 ' 負債資本=2列 7060 GX=N+G2: IF GX=<G3 THEN B_SW=2: GOSUB 7150 ' 収入=3列め 7070 GX=GF(N+G3) : COLOR 4: PRINT GX;: IF GX-G1<G4 THEN B_SW=3: GOSUB 7150 ' 経費=4列め 7080 GX=N+G3+G3-G1: COLOR 5: PRINT GX;: IF GX=<G4 THEN B_SW=4: GX=GF(GX): GOSUB 7150 '経費=5列 7085 PRINT 7090 NEXT N 7100 PRINT "": COLOR 7: RETURN 7110 ' 7150 ' PRINT TAB(14*B_SW);: PRINT USING "###.& &";GX; F$(GX); '' WIN互換ベーシック 7155 LOCATE (14*B_SW) : PRINT USING "###.& &";GX; F$(GX); '' 99Basic 7160 RETURN 7170 ' ◇修正の実例(画面)
上記のプログラムを簡単に書き直すと、以下のようになりものです。 7150 PRINT USING "###.& &";GX; F$(GX);: PRINT TAB(14*1);: PRINT USING "###.& &";GX+G2; F$(GX+G2);: PRINT TAB(14*2);: PRINT USING "###.& &";GX+G2; F$(GX+G2);: PRINT TAB(14*3);: PRINT USING "###.& &";GX+G3; F$(GX+G3);: PRINT TAB(14*4);: PRINT USING "###.& &";GX+G4; F$(GX+G4) '' WIN互換ベーシック 7150 PRINT USING "###.& &";GX; F$(GX);: LOCATE(14*1);: PRINT USING "###.& &";GX+G2; F$(GX+G2);: LOCATE(14*2);: PRINT USING "###.& &";GX+G2; F$(GX+G2);: LOCATE(14*3);: PRINT USING "###.& &";GX+G3; F$(GX+G3);: LOCATE(14*4);: PRINT USING "###.& &";GX+G4; F$(GX+G4) '' 99Basic
◇例3. または、TAB(A)の値が一定の場合なら ↓=TAB(A)の値 ↓=TAB(30) 6000 LPRINT USING " & & ###,###,###";A$(N) ;A# 最初の & は TAB(A) の値の位置に置き、 & &の間隔は、予想されるA$(N)の長さ(=LEN(A$(N)))よりも少し余裕のある長さにしておきます。◇例4.
◇実例1. 200 FOR I=1 TO 30 ' DOS-N88BASICとN88互換BASIC 220 LPRINT TAB(x(I)) A TAB(y(I)) B$(I) TAB(z(I)) C$(I) 230 NEXT I 上記のような場合は、99Basicでは 110 DEFFNS(m,n,o)=SPACE$(m-1)+S1$+SPACE$((n-1)-(m-1)-Len(S1$))+S2$+SPACE$(o-1-(n-1)-Len(S2$))+S3$ 200 FOR I=1 TO 3 ' 30 210 S1$=STR$(A) : S2$=B$(I) : S3$=C$(I) 220 PRINT FNS(x(I),y(I),z(I)) 230 NEXT I ◇実例2. 200 FOR I=1 TO 30 ' DOS-N88BASICとN88互換BASIC 220 LPRINT TAB(x(I)) A TAB(y(I)) B$(I) ;: LPRINT USING " ########, "; N#(I) 230 NEXT I 上記のような場合は、99Basicでは 110 DEFFNS(m,n)=SPACE$(m-1)+S1$+SPACE$((n-1)-(m-1)-Len(S1$))+S2$ 200 FOR I=1 TO 30 210 S1$=STR$(A) : S2$=B$(I) 220 LPRINT FNS(x(I),y(I),z(I)) ; 225 LPRINT USING " ########, "; N#(I) 230 NEXT I ◇実例3. 6010 PRINT TAB(A); A$(N); TAB(B); B$(N); TAB(C); C$(N) ' TAB( )が3つ 6110 PRINT #2, TAB(A); A$(N); TAB(B); B$(N); TAB(C); C$(N) ' TAB( )が3つ 6150 LPRINT TAB(A); A$(N); TAB(B); B$(N); TAB(C); C$(N) ' TAB( )が3つ 6210 PRINT TAB(D); D$(N); TAB(E); E$(N) ' TAB( )が2つ 6220 PRINT #2, TAB(D); D$(N); TAB(E); E$(N) ' TAB( )が2つ 6250 LPRINT TAB(D); D$(N); TAB(E); E$(N) ' TAB( )が2つ 上記のような場合は、99Basicでは 200 DEFFNS(m,n,o)=SPACE$(m-1)+S1$+SPACE$((n-1)-(m-1)-Len(S1$))+S2$+SPACE$(o-1-(n-1)-Len(S2$))+S3$ 6100 S1$=A$(N) : S2$=B$(N) : S3$=C$(N) ' TAB( )が3つ 6110 PRINT #2, FNS(A,B,C) 6150 LPRINT FNS(A,B,C) 6200 S1$=D$(N) : S2$=E$(N) : S3$="" ' TAB( )が2つ 6210 PRINT FNS(D,E,70) ' 3番目のパラメーター70はダミー。大きな数値を 6220 PRINT #2, FNS(D,E,70) 6250 LPRINT FNS(D,E,70) ◇実例4. この実例4.は、コピー・貼り付けをして保存すれば、プログラムとして正常に動くものです。 100 COLOR 6: PRINT "------- 以下は TAB( ) プログラム---------": COLOR 7 150 PRINT " PRINT TAB(A); A$(N); TAB(B); B$(N); TAB(C); C$(N) ' TAB( )が3つ" 160 PRINT " PRINT TAB(D); D$(N); TAB(E); E$(N) ' TAB( )が2つ−1" 170 PRINT " PRINT TAB(D); D$(N); TAB(E); E$(N); C$(N) ' TAB( )が2つ−2" 180 PRINT 200 DEFFNS(m,n,o)=SPACE$(m-1)+S1$+SPACE$((n-1)-(m-1)-Len(S1$))+S2$+SPACE$(o-1-(n-1)-Len(S2$))+S3$ 300 FOR I=0 TO 6: PRINT "1234567890"; : NEXT : PRINT ' TAB位置チェック用インジケーター 500 n=1: a=20: b=40: c=60: d=30: e=50 ' ここから2行はダミーDATA 510 A$(N)="AAAAA": B$(N)="BBBBBBBBBBBBB": C$(N)="CCCCCCCCCCCCCCC": D$(N)="ddddddddddddd": E$(N)="eeeeeeee" 590 ' 600 COLOR 6: PRINT "------- 以下は LOCATE( ) で表示---------": COLOR 7 610 LOCATE(A-1): PRINT A$(N);: LOCATE(B-1): PRINT B$(N);: LOCATE(C-1): PRINT C$(N) ' TAB( )が3つ 630 LOCATE(D-1): PRINT D$(N);: LOCATE(E-1): PRINT E$(N) ' TAB( )が2つ−1 640 LOCATE(D-1): PRINT D$(N);: LOCATE(E-1): PRINT E$(N); C$(N) ' TAB( )が2つ−2 700 COLOR 5: PRINT "------- 以下は FNS(A,B,C) FNS(D,E,?)で表示---------": COLOR 7 710 S1$=A$(N) : S2$=B$(N) : S3$=C$(N) ' TAB( )が3つ 720 PRINT FNS(A,B,C) 730 IF P$="y" THEN LPRINT FNS(A,B,C) 740 IF D$="y" THEN PRINT #2, FNS(A,B,C) 800 S1$=D$(N) : S2$=E$(N) : S3$="" ' TAB( )が2つ−1 810 PRINT FNS(D,E,80) ' 3番目のパラメーター80はダミー。大きな数値を 820 IF P$="y" THEN LPRINT FNS(D,E,80) 830 IF D$="y" THEN PRINT #2, FNS(D,E,80) 900 S1$=D$(N) : S2$=E$(N)+C$(N) : S3$="" ' TAB( )が2つ−2 910 PRINT FNS(D,E,80) ' 3番目のパラメーター80はダミー。大きな数値を 920 IF P$="y" THEN LPRINT FNS(D,E,80) 930 IF D$="y" THEN PRINT #2, FNS(D,E,80) TAB( )が2つの場合は、TAB(3)の部分(o)を=80くらいの大きな数値ダミーを(画面表示の関係で80以下)。 それに続く不要なS3$を=""とすれば、同じDEFFNS( )とFNS( )がそのまま使えます。 少し慣れれば大変に便利です(2004/ 7/09)。 ◇実例5. この実例5.は、コピー・貼り付けをして保存すれば、プログラムとして正常に動くものです。 実例4との違いは、2番目の「TAB(E); E$(N);」の後にも「 PRINT USING ” ##########, ”; N#(I)」が続くことです。 910行の実例4の応用では、N#(I)の表示位置が狂います。 100 COLOR 6: PRINT "------- 以下は TAB( ) プログラム---------": COLOR 7 160 PRINT " PRINT TAB(D); D$(N); TAB(E); E$(N);: PRINT USING ” ##########, ”; N#(I) ' TAB( )が2つ" 170 PRINT 200 DEFFNS(m,n,o)=SPACE$(m-1)+S1$+SPACE$((n-1)-(m-1)-Len(S1$))+S2$+SPACE$(o-1-(n-1)-Len(S2$))+S3$ 210 DEFFNT(m,n)=SPACE$(m-1)+S1$+SPACE$((n-1)-(m-1)-Len(S1$))+S2$ ' DEFFNT(m,n)のパラメーターが2つ 300 FOR I=0 TO 6: PRINT "1234567890"; : NEXT : PRINT ' TAB位置チェック用インジケーター 500 n=1: a=20: b=40: c=60: d=30: e=50: N#(I)=1234567 ' ここから2行はダミーDATA 510 A$(N)="AAAAA": B$(N)="BBBBBBBBBBBBB": C$(N)="CCCCCCCCCCCCCCC": D$(N)="ddddddddddddd": E$(N)="eeeeeeee" 590 ' 600 COLOR 6: PRINT "------- 以下は LOCATE( ) で表示---------": COLOR 7 630 LOCATE(D-1): PRINT D$(N);: LOCATE(E-1): PRINT E$(N); 640 PRINT USING " #########, "; N#(I) 700 COLOR 5: PRINT "------- 以下は FNS(D,E)で表示---------": COLOR 7 800 S1$=D$(N) : S2$=E$(N) 810 PRINT FNT(D,E);: PRINT USING "##########, "; N#(I) 820 IF P$="y" THEN LPRINT FNT(D,E);: LPRINT USING "##########, "; N#(I) 830 IF D$="y" THEN PRINT #2, FNT(D,E);: PRINT #2, USING "##########, "; N#(I) 890 COLOR 4: PRINT "------- 以下は FNT(D,E,70)で表示------ 実例4の応用でN#(I)の表示位置が狂う": COLOR 7 900 S3$="" 910 PRINT FNS(D,E,70);: PRINT USING "##########, "; N#(I) ◇実例6. この実例6.は、コピー・貼り付けをして保存すれば、プログラムとして正常に動くものです。 80 DEFFNS(m,n)=S1$+SPACE$(m-Len(S1$)-Len("### "))+S2$+SPACE$(n-m-Len(S2$)+1)+S3$ 90 DEFFNT(m,n)=SPACE$(m)+S1$+SPACE$(n-m-Len(S1$)+1)+S2$ ' DEFFNT(m,n)のパラメーターが2つ 900 TBX=10: W=1: D$(W)="山田★郎": V$(1,W)="969-3131": V$(2,W)="福島県耶麻郡猪苗代町" 910 V$(3,W)="字大統領123": N2$(W)="": N3$(W)="": V$(4,W)="0242-62-0**0" 920 ' 1000 FOR I=0 TO 6: PRINT "1234567890"; : NEXT : PRINT ' TAB位置チェック用インジケーター 1010 ' PRINT D$(W) TAB(30-TBX) "〒" V$(1,W) TAB(38-TBX) V$(2,W) " " V$(3,W) 1020 ' PRINT TAB(6) N2$(W) " ・ " N3$(W) TAB(38) "TEL." V$(4,W):' LPRINT G$;G$ 1100 COLOR 2: PRINT "------- 以下は LOCATE( ) で表示---------": COLOR 7 1110 PRINT USING "### ";W ; 1120 PRINT D$(W);: LOCATE(28-TBX) 1130 PRINT "〒"; V$(1,W);: LOCATE(39-TBX): PRINT V$(2,W); " "; V$(3,W) 1140 LOCATE(6): PRINT N2$(W); " ・ "; N3$(W);: LOCATE(39): PRINT "TEL."; V$(4,W): PRINT G$; G$ 1200 COLOR 4: PRINT "------- 以下は SPACE$( ) で表示---------": COLOR 7 1210 PRINT USING "### ";W ; 1220 PRINT D$(W); SPACE$((28-TBX)-LEN("### "+D$(W))); "〒"; V$(1,W); 1230 PRINT SPACE$(39-TBX -(28-TBX)-LEN("〒"+V$(1,W))); V$(2,W); " "; V$(3,W) 1240 PRINT SPACE$(6); N2$(W); " ・ "; N3$(W); SPACE$(38 -LEN(SPACE$(6-1)+N2$(W)+" ・ "+N3$(W))) ; "TEL."; V$(4,W) 1300 COLOR 5: PRINT "------- 以下は FNS( )で表示---------": COLOR 7 1310 S1$=D$(W): S2$="〒"+V$(1,W): S3$=V$(2,W)+" "+V$(3,W) 1340 PRINT USING "### ";W ;: PRINT FNS(28-TBX,38-TBX) 1350 COLOR 6: PRINT "------- 以下は FNT( )で表示---------": COLOR 7 1360 S1$= N2$(W)+" ・ "+N3$(W) : S2$= "TEL."+V$(4,W) 1370 PRINT FNT(6,38) 1500 COLOR 5: PRINT " DEFFNS(m,n)=S1$+SPACE$(m-Len(S1$)-Len(”### ”))+S2$+SPACE$(n-m-Len(S2$)+1)+S3$": COLOR 7 1510 COLOR 6: PRINT " DEFFNT(m,n)=SPACE$(m)+S1$+SPACE$(n-m-Len(S1$)+1)+S2$": COLOR 7 |
100 X=10:A$="ABC" 110 Y=20:B$="OPQRS" 120 Z=40:C$="123456789" 130 BUF$=SPACE$(70) '1行を70文字とする 140 MID$(BUF$,X)=A$ 150 MID$(BUF$,Y)=B$ 160 MID$(BUF$,Z)=C$ 170 PRINT BUF$ ' 画面に表示 180 LPRINT BUF$ ' 印字する 190 PRINT #3, BUF$ ' ディスク出力する 1234567890123456789012345678901234567890123456789012345678901234567890 BUF$=" ABC OPQRS 123456789 "140 MID$(BUF$,X,LEN(A$))=A$
▼頭合わせ(左合わせ)の例▼ 磐梯ひじかたスキースクール 春〜秋 〒203-0003 東京都東久留米市金山町 2-6-14 Tel & Fax. 042-475-**** 冬 〒969-3102 福島県耶麻郡猪苗代町字****5 Tel & Fax. 0242-62-****
1270 PRINT #3, TAB(17); Y0$ 1270 PRINT #3, SPACE$(17); Y0$
▼尻合わせ(右合わせ)の例▼ 磐梯ひじかたスキースクール 春〜秋 〒203-0003 東京都東久留米市金山町 2-6-14 Tel & Fax. 042-475-**** 冬 〒969-3102 福島県耶麻郡猪苗代町字****5 Tel & Fax. 0242-62-****例えば上の例の省略形で紹介すると、次のようになります。
100 A1$="磐梯ひじかたスキースクール": A2$="東京都東久留米市金山町 2-6-14": A3$="Tel & Fax. 042-475-****": 110 L1=LEN(A1$) : L2=LEN(A2$) : L3=LEN(A3$) 120 PRINT TAB(A0 +(L2-L1) ) A1$ 130 PRINT TAB(A2) A2$ 140 PRINT TAB(A0 +(L3-L1) ) A3$ または、 SPACE$( )を使うなら、 #120以下が次のように変わります。 120 PRINT SPACE$(A0 +(L2-L1) ) A1$ 130 PRINT SPACE$(A2) A2$ 140 PRINT SPACE$(A0 +(L3-L1) ) A3$
width 80,20 | width 80,25 | |||
固定表示 | スクロール | 固定表示 | スクロール | |
CONSOLE 5,10 | 1〜 5、16〜20の計10行 | 6〜15の計10行 | 1〜 5、16〜25の計15行 | 6〜15の計10行 |
CONSOLE 10, 5 | 1〜10、16〜20の計15行 | 11〜15の計 5行 | 1〜10、16〜25の計15行 | 11〜15の計 5行 |
CONSOLE 10,10 | 1〜10の計10行 | 11〜20の計10行 | 1〜10、21〜25の計15行 | 11〜20の計10行 |
CONSOLE 19,10,0 | 1〜19の計19行 | 20の計 1行 | 1〜19の計19行 | 20〜25の計 6行 |
CONSOLE 19,10,1 | エラー 20行目はファンクションキー表示で使用済み。 スクロール可能な行が存在しないため。 | 1〜19の計19行 | 20〜24の計 5行 | |
CONSOLE 24,10,0 | エラー 画面は20行表示。それ以降の表示命令のため。 | 1〜24の計24行 | 25の計 1行 | |
CONSOLE 24,10,1 | エラー 画面は20行表示。それ以降の表示命令のため。 | エラー 25行目はファンクションキー表示で使用 済み。スクロール可能な行が存在しないため。 |
◇サンプル例1540 LINE (D+X , E+Y )-(F-X , G-Y ) ,6,BF ,0
100 LINE (40, 0)-(560, 390), 0, BF 110 LINE (80, 80)-(500, 80), 7: LINE (100, 20)-(100, 180), 7 120 LINE (500, 20)-(500, 180), 7 500 LINE (XB, YC)-(XB, YB), CL: LINE -(XA, YB - 10), CL: LINE -(XA, YB - 60), CL 200 CLS 2: X=2:Y=3 210 LINE(627, 15)-(541, 465),5 ,BF: LINE(538, 15)-(458, 465),5 ,BF: LINE(180, 15)-(95, 465),5 ,BF 220 LINE(627-X,15+Y)-(541+X,465-Y),0 ,BF: LINE(538-X,15+Y)-(458+X,465-Y),0 ,BF: LINE(180-X,15+Y)-(95+X,465-Y),0 ,BF
◇サンプル例例えば、上記のようにグラフィック画面にラインを引いた場合、 CLS では、テキスト画面だけを消すので、ラインは描かれたままです。99BasicもDOS-N88BASICも同じです。 CLS 2 では、グラフィック画面に描かれたラインだけ消されて、テキスト画面の文字は残ります。99BasicもDOS-N88BASICも同じです。 CLS 3 では、全ての画面を消去するとなっています。DOS-N88BASICにもあった命令なのかも知れませんが、私は知らなかったため、「 CLS : CLS 2 」と併記して使っていました。
100 LINE (40, 0)-(560, 390), 0, BF 110 LINE (80, 80)-(500, 80), 7: LINE (100, 20)-(100, 180), 7 120 LINE (500, 20)-(500, 180), 7
サンプル1 2060 FOR I=B2 TO B3 2065 IF I MOD 5=1 THEN PS=POS(1): CS=CSRLIN: LOCATE 40,0: COLOR 6: PRINT YY$; "年度 "; DR$ ;: PRINT USING "#,###/#,###";I;B3: COLOR 7: LOCATE PS,CS '' WIN互換ベーシック 2065 IF I MOD 5=1 THEN PS=XLOC : CS=YLOC: LOCATE 40,0: COLOR 6: PRINT YY$; "年度 "; DR$ ;: PRINT USING "#,###/#,###";I;B3: COLOR 7: LOCATE PS,CS '' 99Basic サンプル2 5425 PS=POS(1): CS=CSRLIN: GOSUB 3000: LOCATE PS,CS ' タイトル 項目の表示 '' WIN互換ベーシック 5425 PS=XLOC : CS=YLOC: GOSUB 3000: LOCATE PS,CS ' タイトル 項目の表示 '' 99Basicサンプル1は、伝票5枚毎に現在のカーソル行位置を覚えておき(CS=CSRLIN)、一度画面上段の右の方(LOCATE 40,0)にカウンターの数字を書き換えろ、という命令です。
注: WRITE 命令とは、「画面やシーケンシャルファイルに数字や文字を表示します」となっています。 このLOCATE が有効なのは、WRITE 命令の画面表示だけであって、シーケンシャルファイル出力では無効ではないかと想像します。但しテストはしていません。 |
1630 PRINT TAB(B+17);: PRINT USING " ------ (##)";J; '' WIN互換ベーシック 1630 LOCATE(B+17) : PRINT USING " ------ (##)";J; '' 99Basic 7150 PRINT TAB(14*B_SW);: PRINT USING "###.& &";GX; F$(GX); '' WIN互換ベーシック 7155 LOCATE (14*B_SW) : PRINT USING "###.& &";GX; F$(GX); '' 99Basic 110 PRINT TAB(x); A$; TAB(y); B$; TAB(z); C$ '' WIN互換ベーシック 110 LOCATE (x) : PRINT A$; : LOCATE(y) : PRINT B$; : LOCATE (z): PRINT C$ '' 99Basic ちなみにその後にも PRINT が続く場合、 A$; B$; の ; が省かれると、 A$A$A$A$ B$B$B$ C$C$ というように、行が別れて表示されてしまいます。 A$A$A$A$ B$B$B$ C$C$ このように、同一行に表示したい場合は、 A$; B$; の ; が必要です。 または、以下のようにLOCATE(*,n) ,n の挿入が必要になります。(この場合は ; は不要です) 110 LOCATE x,n : PRINT A$ : LOCATE y,n : PRINT B$ : LOCATE z,n: PRINT C$ '' 99Basic もし n の行位置が不明の場合は、 100 n=YLOC '' 99Basic 110 LOCATE x,n : PRINT A$ : LOCATE y,n : PRINT B$ : LOCATE z,n : PRINT C$ '' 99BasicDOS-N88BASICやN88互換BASICでは、POS(1)、CSRLIN関数で画面上の桁、行位置を得ることが出来ますが、99BasicではYLOC、XLOCというシステム変数が用意されています。まったく同じものと考えて良いように思います。
100 ON MOUSE GOSUB 200: MOUSE ON 105 width 80,35: CLS 110 FOR I=1 TO 7: FOR N=0 TO 9: PRINT USING "#";N;: NEXT: NEXT: PRINT 120 FOR N=1 TO 20: PRINT N : NEXT 125 FOR I=1 TO 7: FOR N=0 TO 9: PRINT USING "#";N;: NEXT: NEXT: PRINT 130 PRINT " マウスを移動させ、左クリックするとカーソルが移動します。何度でも。" 150 PRINT " 終了は、ENTERキーなどを押して下さい。" 160 Q$=INKEY$: IF Q$="" THEN GOTO 160 170 PRINT "end ": END 200 ' 220 GET MOUSE 1, , X, Y: TAB=INT((X-60)/8.3): L_INE=INT((Y-120)/16+0.1) 230 LOCATE TAB, L_INE 250 PRINT "LOCATE" TAB "," L_INE 260 RETURN
100 ON MOUSE GOSUB 200: MOUSE ON 105 width 80,35: CLS: PRINT 110 A$(1)="123456": A$(2)="ABCDEF": A$(3)="hijklm": A$(4)="いろは": A$(5)="789": A$(6)="東京都": A$(7)="アジア" 120 FOR N=1 TO 7: FOR M=1 TO 20: PRINT A$(N);: NEXT: PRINT: NEXT: PRINT 130 PRINT " マウスを移動させ左クリックしてから、ENTERキーを" 140 PRINT " → その行のカーソル以降がコピー・入力されます。 何度でも。" 150 PRINT " 終了は、9 を": PRINT 160 Q$=INKEY$: IF Q$="" THEN GOTO 160 170 IF Q$="9" THEN PRINT "end ": END: ELSE GOTO 160 200 ' 210 PS=XLOC : CS=YLOC 220 GET MOUSE 1, , X, Y: TAB=INT((X-60)/8.3): L_INE=INT((Y-120)/16+0.1) 230 LOCATE TAB, L_INE : INPUT Q$ 240 LOCATE PS,CS: COLOR 6: PRINT " 新しいQ$= ";: COLOR 5: PRINT Q$: COLOR 7 260 RETURN
200 ON MOUSE GOSUB 210: MOUSE ON 540 COLOR 7 ' g.640 550 FILES "05*.txt",w : FILES "06*.txt",w ' 候補のファイル名を表示 560 COLOR 6: PRINT " 入力ファイル名= "; FILE$;: COLOR 7 570 PRINT "でOKなら 1 を、" 580 PRINT "上記のどれかに変えるならマウスを移動させ、クリックを利用して、入力を " 590 Q$=INKEY$: IF Q$="" THEN GOTO 590 595 ' #200 ON MOUSE GOSUB → INKEY$が絶対条件、INPUT Q$では割り込み非実行 597 ' 600 IF Q$="1" OR ASC(Q$)=13 THEN GOTO 700 ' ASC(Q$)=13 ENTERキー 610 F1$=Q$ : PRINT: PRINT , X1$ 620 COLOR 6: PRINT , F1$;: COLOR 7: PRINT " で良ければEnter を、" 630 INPUT " 再訂正なら、2 入力を ";Q$ 640 IF Q$<>"" THEN 540 650 FILE$=F1$ 695 ' 700 PRINT ' g.600