[BASICの文法の説明...]HELP
[(1)文]
[(2)行]
[(3)行番号]
[(4)BASICで使用する文字、特殊文字]
[(5)定数]
[(6)変数]
[(7)配列変数]
[(8)予約語]
[(9)型変換]
[(10)式と演算]
[(11)ファイル]
[(12)割り込み]
[(13)ラベル名]



(1) 文
  文は1つの命令からなります。
  命令はコマンドとパラメータからなります。
  例えば、
  PRINT ゛This is MBASICW.゛
  で、命令コマンドはPRINT、パラメータは゛This is MBASICW.゛です。

[頁の始めに戻る]



(2) 行
行はProgramモードで実行する場合の、文からなる1行の記述です。
  行の先頭には行番号を付けます。1行には255Byte以内の記述ができます。
  普通は1行に1つの文ですが、コロン(:)で区切れば複数の文を記述できます。
  例えば、
  100 CLS 3
  110 DIM A%(100),B(100):A%(0)=0:B(0)=0
  などです。
  尚、1つの文(1行と呼ぶ)が画面の2,3,4行に渡る場合、矢印キー、制御キー以外の
  記述を連続して入力してください。

[頁の始めに戻る]


(3) 行番号
行番号は1から65529までの整数です。実行は行番号順に行います。
行の入力は行番号順でなくても、内部で番号順に並びかえます。
Programは[RUN] コマンドで実行します。
行番号は[LIST][DELETE]
などで参照するときにも使用します。
[GOTO][GOTO] 、[GOSUB][GOSUB] などで参照するときは行番号の代わりに
[ラベル] を使用することも出来ます。

[頁の始めに戻る]


(4) BASICで使用する文字、特殊文字
文字は1Byte文字と2Byte文字があります。
1Byte文字は英数大文字、小文字、カナ、特殊記号、制御文字、
2Byte文字は漢字です。
制御文字はESC(BREAK実行の一時停止)、CTRL、PAUSE、STOP、↓キーなどです。

[頁の始めに戻る]


(5)定数



(5.1)文字型定数 
255Byte以内の文字列で、前後をダブルクオテーション(")で囲みます。
なお、文字型定数を算術演算」に使うことはできません。
例)"Good Morning"
  "1 2 3 4 5 6 7 8 9"
  "日本語BASIC"
ダブルクオテーション(")自体を文字列内に入れることはできません。この場合、
  [CHR$] を用いてCHR$(&H22)とします。
  CHR$(&H22)+ "TEST" + CHR$(&H22)

(5.2)数値型定数 
算術演算を行うことのできる数値データで、整数型と実数型があります。
(5.3)整数型 
表記上 8進・10進・16進の形式があります。
■10進形式
 2Byteの整数値で-32768〜+32767です。負の整数の場合、数値の前には
必ずマイナス符号をつけなければなりませんが、正の数の前の符号は省略できます。
例)32767
  -123
  +753

■8進形式
 & または &O(オー)に続き 0〜7の数字の並びで&0〜&177777の範囲。
例)&12345
  &O7777

■16進形式
 &Hに続き 0〜Fの数字の並びで&H0〜&HFFFFの範囲。
 例)&H100
   &HCFFF

注意:8進、16進は中に入れば、2バイトの整数ですので、
ー32768〜32767として扱われます。
例えば、i%=&HFFFFとしてもPRINT I%では-1と表示されます。
[PRINT] の文などでは 10進表示となります。
8進表示は [OCT$] 、16進表示は[HEX$] を使用します。

(5.4)実数型定数 
単精度実数型と倍精度実数型があります。

(5.5)単精度実数型
有効桁 7桁で表示は 6桁以下で、-1.7014E+38〜1.7014E+38の範囲。
BASICでは、変数は、特に型宣言をしない場合は単精度実数型と扱います。
MBASIC86では、定数は内部では倍精度演算をしています。
 例)3579.13
   -7.53E-09

(5.6)倍精度実数型
有効桁 16桁で表示は 16桁以下で、-1.701411834604692D+38〜
1.701411834604692D+38の範囲。
 例)123456.89
   -1.09432D-38
MBASIC86では内部では倍精度演算をしています。

[頁の始めに戻る]



(6)[変数]
変数はプログラム中で変化するデータを格納します。名前は半角の英字から始まる英数字の
並びで、長さはあまり長くない 40文字以内程度。変数は定数と同様に型分類されます。
変数は、演算、参照などに使うことができます。
なお、変数に値を格納する(入れる)前は、数値変数の値は 0、文字変数は
ヌルストリング(空の文字列)であるものとみなされます。
 
  (6.1)変数名 
変数名は長さ 40文字以内の、1バイト系英数字とピリオド(.)の組み合わせで表されます。
ただし、変数名の始めの 1文字は英字でなくてはなりません。
この規約に従って名前をつけられた変数は、すべて区別されます。
例えば次の2つの変数は異なった変数名として解釈されます。
 COUNTER.OF.TABLE.DATA.001
 COUNTER.OF.TABLE.DATA.002

さらに、BASICの予約語や半角英数字文字以外は使用できません。
および、FNで始まる変数名は許されません。(DEF FNのコマンド参照)

  (6.2)変数の型
Variable type.
   型宣言の接尾文字は文字型は$ 、整数型は% 、単精度実数型は! 、倍精度実数型は#です。
   これは型宣言命令の文字型宣言文より優先します。


型宣言命令の文字型宣言文[DEFSTR]
整数型宣言文[DEFINT]
単精度実数型宣言文[DEFSNG]
倍精度型宣言文[DEFDBL]
に指定された文字から始まる変数の型は、型宣言の接尾文字の次に優先します。
 なお、宣言をしない変数は単精度型と扱います。
 例えば、DEFINT I-L      これは、整数型のInitial宣言文
     L#=1234567.891    これは、DEFINT I-L 文より優先
     S=-123.45       これは、宣言無きため単精度実数型
     I1=12*3        これは、DEFINT I-L 文に従う

[頁の始めに戻る]
 


(7)配列変数
  配列変数は、たくさんのデータを変数に代入したり、参照する場合に使います。たとえば、
 データの数が100個あるとき、100個の別の変数を用意するのはたいへんです。このようなとき
 に、A(0)〜A(99)のように変数名の後ろにカッコつきの番号をつけた形で配列として扱うと、
 100個のデータを1つの変数名で処理することができます。
  カッコ内の番号は添字といい、配列のなかの何番目の要素であるかを表します。たとえば、
 A(0)は、Aという配列変数の0番目の要素という意味になります。添字には整数定数、また
 は整数型の変数を使うことができます。
  配列変数の型(すなわち配列変数内の各要素の型)は、通常の変数と同様、その配列変数名の
 最後(カッコの直前)につけられた型宣言文字によって決まります。ただし、型宣言命令で一括
 指定を行った場合は、この限りではありません。詳しくは「第2章 6.2 変数の型」を参照
 してください。
  プログラム内で配列を使うには、あらかじめDIMによる”配列の宣言”が必要です。配列の
 宣言とは、変数の名前と配列に入れる要素の個数を決めてやることです。
  DIMでは次のように、その配列で使用可能な添字の最大値を指定することにより、要素の
 個数を決めます

   DIM A(5)  添字の最大値が5で、名前が"A"という配列変数を宣言

 添字は、原則として0から始まりますので、実際の要素数は添字の値+1となります。この
 れいでは、5+1で、要素数は6個となります。
  ”添字が0から始まる”ということを、”添字の最小値(OPTION BASE)が0である”と
 いい、BASICの起動時にはこの状態になっています。なお、OPTION BASEという命令を使う
 ことにより、添字の最小値を1にすることもできます。
  また、DIM中で配列変数を宣言する際、複数の添字をコンマで区切って指定すると、その
 配列変数は、添字の個数に応じた”次元”数をもつことになります。
  たとえば、添字の最小値が0であるとして次のような配列を宣言した場合の、各配列の
 次元数および要素の合計数を示してみます。

DIM A(10)
1次元配列、要素数は11
DIM TA(2,3)
2次元配列、要素数は3×4=12
DIM NAME$(2,5,3)
3次元配列、要素数は3×6×4=72


  2番目の例の場合、次のような2次元(縦方向と横方向の2次元)の配列が
 とられます。

TA(0,0)
TA(0,1)
TA(0,2)
TA(0,3)
TA(1,0)
TA(1,1)
TA(1,2)
TA(1,3)
TA(2,0)
TA(2,1)
TA(2,2)
TA(2,3)



  配列変数の次元および添字の最大値は、メモリ容量が許す限り、いくつでも設定することが
 できます。ただし、次元については、DIMで1行(255文字)中に記述できる範囲内、という
 制限もありますので注意してください。

  なお、添字の最大値が10以下(添字の最小値が0でも1でもかまわない)のときは、
 DIMによる宣言を行わなくとも、配列変数を用いることができます。
 

[頁の始めに戻る]
 


(8)予約語
  N88-BASIC(86)は、命令(関数も含む)の名前、演算子の名前などを、処理上、特殊なものと
 して扱います。これは”予約語”と呼ばれ、文字どおりBAASICによってその使用方法を予約さ
 れているものです。したがって、予約語をそのまま変数名として使用したりすることはできま
 せん。
  予約語を使用する場合には、BASICがその語を予約語であるか否か認識できるようにする
 ため、語の前、後ろ、またはその両方に、BASIC文法上で許された、あるいは規定された特殊
 文字(スペース、ダブルクオテーション(")、ナンバー記号(#)、コロン(:)など)を
 挿入しなくてはなりません。
  BASICの予約語は、[予約語一覧表]を参照してください。
 

[頁の始めに戻る]
 


(9)型変換
  数値データは、必要に応じて他の型に変換することができます。型の変換は次の規則にした
 がって行われます。
  なお、文字型と数値型の間では型変換を行うことはできませんが、数値表記の文字列に限り、
 数値との相互変換を関数によって行うことができます(第3章中のSTR$、VALの項参照)。

  (1) ある型の数値データが、違った型の数値変数に代入された場合、数値は、その変数名に
    よって宣言された型に変換されます。
    例) 10 ABC%=1.234
       20 PRINT ABC%
       RUN
       1

  (2) 精度の違う数値間の演算の場合、精度の高い方に変換されて、演算が行われます。
    例) 10 A#=10#/3
       20 B#=10#/3#
       30 PRINT A#,B#
       RUN
       3.333333333333333 3.333333333333333

  (3) 論理演算の場合、扱われる数値はすべて整数に変換され、結果は整数で与えられます。
    例) 10 A=12.34
       20 B=NOT A
       30 PRINT B,A
       RUN
       -13    12.34

  (4) 実数が整数に変換される場合は、小数点以下は4捨5入されます。このとき、整数型で3
    扱える範囲を超えた場合はエラーが起こります。

    例)

10 A%=34.4
10 A#=1.234E+07

20 B%=34.5
20 B%=A#

30 PRINT A%,B%
30 PRINT B%,A#

RUN
RUN

34    35
Overflow in 20



  (5) 倍精度実数型変数が単精度実数型変数に代入されたときは、変数の値は有効数字7桁に
    丸めたものとなります。単精度実数型変数の精度は7桁であり、もとの倍精度の数値と
    の誤差の絶対値は、5.96E-8以下となります。
    例) 10 A#=1.23456789#
       20 B!=A#
       30 PRINT A#,B!
       RUN
       1.23456789  1.23457

  倍精度実数型変数(あるいは倍精度実数型定数)と単精度実数型変数(あるいは単精度
 実数型定数)を混合して演算したり、単精度の値を倍精度実数型変数に代入したりする
 と、単精度値に変換する際、有効桁以降の桁に変換誤差が混入しますので注意してくだ
 さい。
  例1) 精度の異なる数値による演算
     ●好ましくない例(演算結果に変換誤差が混入する)
       A#=1.41421356+0.12
     ●改良例
       A#=1.41421356+0.12#

  例2) 精度の高い変数に対する精度の低い値の代入
     ●好ましくない例(演算結果に変換誤差が混入する)
       A#=3.1415
     ●改良例
       A#=3.1415#


[頁の始めに戻る]
 

 (10)式と演算
(10.1)算術演算
  算術演算には次のようなものがあり、示された順序に基づいて演算を行います。
  尚、算術式の中に文字定数や文字変数が入ってはいけません。

実行優先順序

算術演算子

演算内容

1.

^

指数(べき乗)演算

X^Y  3^2

2.

-

負号

-3.7

3.

*
/

乗算
実数の除算

X*Y  3*7
X/Y  3/7

4.

+
-

加算
減算

X+Y  3+7
X-Y  3-7

整数の除算と剰余の計算

実行優先順序

算術演算子

演算内容

1.

\

整数の除算

10\3 =3

2.

MOD

整数の剰余

10 MOD 3 =1



(10.2)関係演算
2つの数値を比較するときに使用。関係演算結果は、真(-1)、偽(0)で得られ、
IF文に使用します。
[IF_THEN〜ELSEコマンド][IF_GOTO〜ELSEコマンド] を参照。

関係演算子

演算内容

=

等しい

X=Y

<>または><

等しくない

X<>Y または X><Y

<

小さい

X<Y

>

大きい

X>Y

<= または =<

以下

X<=Y または X=<Y

>= または =>

以上

X>=Y または X=>Y



例えば IF X=0 THEN 100
    IF (A+B)<>0 THEN X=X+1:Y=Y+1
   
(10.3)論理演算
Bit操作や2進演算を行います。複数の関係演算子を結合して複合条件を判定した
りするのに使用します。
  NOT、AND、OR、XOR、IMP、EQVがあります。
  論理演算子は、扱う数値を-32768〜+32767の 2の補数表示の整数に変換し、Bit演
算をします。この範囲外の数値はOverflow Errorとなります。
  2Byte、16Bitの 2進表記に対して、各Bitごとに以下の演算を行います。

NOT

(否定)

X

NOT X

0

1

1

0




AND

 

and
(論理積)

X

Y

X AND Y

1

1

1

1

0

0

0

1

0

0

0

0




OR

 

or
(論理和)

X

Y

X OR Y

1

1

1

1

0

1

0

1

1

0

0

0




XOR

 

exclusive or
(排他的論理和)

X

Y

X XOR Y

1

1

0

1

0

1

0

1

1

0

0

0




IMP

 

implication
(包含)

X

Y

X IMP Y

1

1

1

1

0

0

0

1

1

0

0

1




EQV

 

equivalence
(同値)

X

Y

X IMP Y

1

1

1

1

0

0

0

1

0

0

0

1




論理演算を利用することにより、バイトデータをあるビットパターンに照らし合わせて
調べることができます。
例えば、AND演算子は機器の入出力ポートのステータスバイトの必要なビット以外の
すべてのビットをマスクするのに使用出来ます。
また OR演算子はある2進数を作るために 2つのビットパターンを混合するのに使うことが
できます。
以下に、論理演算子がどのように働くかの例を示します。演算がビットごとに行われている
ようすに注意してください。

-1 OR 0 = -1 -1= (1111 1111 1111 1111) 2進表示
  0= (0000 0000 0000 0000) 2進表示
  -1 OR 0= (1111 1111 1111 1111) 2進表示
48 AND 24 = 16 48= (0000 0000 0011 0000) 2進表示
  24= (0000 0000 0001 1000) 2進表示
  48 AND 24= (0000 0000 0001 0000) 2進表示
15 XOR 60 = 51 15= (0000 0000 0000 1111) 2進表示
  60= (0000 0000 0011 1100) 2進表示
  15 XOR 60= (0000 0000 0011 0011) 2進表示
17 EQV 12 = -30 17= (0000 0000 0001 0001) 2進表示
  12= (0000 0000 0000 1100) 2進表示
  17 EQV 12= (1111 1111 1110 0010) 2進表示
28 IMP  9= -21 28= (0000 0000 0001 1100) 2進表示
  9= (0000 0000 0000 1001) 2進表示
  28 IMP  9= (1111 1111 1110 1011) 2進表示
NOT 23 =-24 23= (0000 0000 0001 0111) 2進表示
  NOT 23= (1111 1111 1110 1000) 2進表示

 
 論理演算で、もし、0(偽)と-1(真)しか与えられなかったなら、扱う整数値の
16ビット全部について同一の演算が行われることになり、演算の結果は 0か -1のどちらかと
となります(前例の -1 OR 0を参照)。
 0は全ビット 0、-1は全ビット 1 です。
したがって、論理演算子で2つ以上の関係演算を結ぶようにして使用することにより、
複合条件によってプログラムの流れを変えるのに用いることができます。
例)
 IF X<0 OR X>99 THEN 200   これは、X<0 か X>99 のとき行番号200に分岐
 
 IF 0<X AND X<100 THEN X=0  これは、0 < X < 100のとき、Xに0を代入する。
 
 IF NOT ( A=0) THEN 400    これは、A が 0以外のとき400に分岐
 
 
 (10.4)関数 Function.
関数とは、指定されたある値(これを関数の引数(ひきすう)という)に対して、ある決まった
演算を行い、その演算の結果を得ることができるものです(ただし、関数によっては、引数を
必要としないものもあります)。
 関数は、演算子を使用する他の演算とは異なり、実行後にそれ自身が値をもつ、一種の命令
として扱われます。したがって、ふつうの命令のように機能別に決められた名前をもっていま
す。
N88-BASIC(86)には、SIN (正弦)、SQR (平方根)などの数値関数や、CHR$、LEFT$などの
文字列関数といった"組み込み関数"が用意されています。これらの関数については第3章で
通常の命令とともに詳しく説明されています。
 また、"ユーザー定義関数"としてユーザーが自由に定義できる関数機能もあります。これは
第3章 DEF FN の項で説明します。
 なお、初等関数(SIN関数などの数学関数)では、引数が整数や単精度のときは単精度の結果
が得られますが、引数が倍精度のときは倍精度の結果を得ることができます。
ただし、MBASIC86では、数値関数では、内部では倍精度実数値で計算されています。
 例)
  A=SIN(3.1416)+COS(3.13416)
  PRINT 2, 2*2, SQR(2)

 
 (10.5)文字列の演算
 BASICでは、文字列に対して、演算を行うことができます。
 ◆文字列の連結
 例)
 10 A$="SUPER":B$="PERSONAL":C$="COMPUTER"
 20 D$=A$+"-""+B$+"-"+C$
 30 PRINT D$
 RUN
 SUPER-PERSONAL-COMPUTER
 
 ◆文字列の比較
 文字も、数値の比較と同様に比較出来ます。
 =, <, >, <>, ><, <=, =<, >=, =>

 文字列の場合、文字列の最初から1文字ずつ比較します。両者が全く同じ文字列の
場合は等しく、1個所でも違う場合、文字のキャラクターコードにより大小を決めます。
文字列の片方が短くて比較が途中で終わった場合は、短い文字列の方が小さくなります。
 文字列の比較においては、空白なども意味をもちますから注意してください。
次の例は、すべて真(-1)となります。
 例)
 "AA"<"AB"
 "BASIC"="BASIC"
 "X&">"X#"
 "PEN&nbst">"PEN"
 "cm">"CM"
 "DESK"<"DESKS"
 
 文字列の比較は、文字列の内容を調べたり、文字をアルファベット順に並べたり(ソート)す
るのに使います。
 
 (10.6)演算の優先順位
 

1.

カッコで囲まれた式

 

2.

関数

 

3.

^

指数

4.

-

負号

5.

*
/

乗算
除算

6.

\

整数の除算の商

7.

MOD

整数の除算の剰余

8.

+
-

加算
減算

9.

関係演算子

<,>,= など

10.

NOT

 

11.

AND

 

12.

OR

 

13.

XOR

 

14.

IMP

 

15.

EQV

 


 
 

[頁の始めに戻る]


 

(11)ファイル
 11.1 ファイルとは
 ファイルとは、意味を持つ情報の集まりです。ディスクに保存したプログラムやデータは、
 ファイルとして扱われます。また他の周辺機器との入出力も、まとまったデータの入出力とい
 う意味で、ファイルというとらえかたで扱うことができます。
 MBASIC86(N88-BASIC(86))では、このとらえかたにもとずき、ディスク装置をはじめとして、その他の
 周辺機器をも一括してファイルとしてみなすことにより、統一された入出力操作が可能となっています。
  ファイルは”ファイルディスクリプタ”という一定の規則に従ってつけられた
 名前によって区別されます。
 11.2 ファイルディスクリプタ
  ファイルディスクリプタは、周辺機器をも含むファイルを区別する名前で、次のような構成の
 文字列で表されます。
  ”[<デバイス名>>:]<ファイル名>”
 ファイルディスクリプタは文字列ですから、必ず、文字の並びをダブルクオテーション(”)
 で囲んだ文字定数、または文字列を代入した文字変数の、いずれかでなければなりません。

 ■デバイス名
 <デバイス名>はディスク装置や他の周辺機器(まとめて入出力機器という)の名称を表すも
 ので、アルファベット4文字、もしくはアルファベット3文字と数字1文字に、”:”(コロン)
 をつけたものを原則としています。ただし、ディスク装置については、ドライブ番号を示す
 アルファベットに”:”をつけた形が用いられます。
 N88-BASIC(86)で定義されているデバイス名は、次のとおりです。

デバイス名
入出力機器名
入力 出力
KYBD:
キーボード

×
SCRN:
スクリーン
×

LPT1:
プリンタ
×

A:
B:

Z:
ディスクドライブ1
ディスクドライブ2

ディスクドライブ26








COM1:
COM2:
COM3:
RS-232C第1回線
RS-232C第2回線
RS-232C第3回線








 注意:
 ●A:〜Z:はディスク装置の実装数分だけ指定可能です。
 ●COM2:、COM3:〜は専用のRS-232Cインターフェースボードを実装している
 場合のみ指定可能です。

 なお、RS-232C回線(COMn:)をファイルとして指定する場合は、OPENコマンド
 により、ワード長やパリティチェックの有無などの、種々のモードを設定しなければ
 なりません。詳しくは[OPENコマンド] を参照して下さい。

■ファイル名
 <ファイル名>とは、プログラムファイルやデータファイルにつける名前で、これはユーザー
 が指定します。ファイル名を必要とするのは、ディスクなどの補助記憶装置
 との入出力を行う場合のみで、その他の場合は省略することができます。
 ファイル名は次のような書式をとります。
    <ファイル名>[.][<拡張ファイル名>] 
 最初の<ファイル名>は6文字、ピリオドに続く<拡張ファイル名>は、もしあれば3文字
 までの文字列より構成されます。それぞれの文字数がそれ以下の場合には空いた部分に
 空白が埋められます。一般的には、<ファイル名>がファイルの名前を、<拡張ファイル名>が
 ファイルの性質を表すようにしますが、とくにこれにこだわることなく自由に名前を
 つけてかまいません。
  ふつうファイル名と言う場合は、<拡張ファイル名>まで含んだものを意味します。
  ファイル名には1バイト系の英数カナ文字を使用できますが、コロン(:)
 およびキャラクターコード0と255で表される文字は使えません。
  最初の<ファイル名>が6文字を超えて使用された場合、先頭から6文字目
 までの6文字が<ファイル名>として、続く9文字目までの3文字が<拡張ファイル名>として
 みなされます。10文字目移行の文字は無視されます。
 注意:
 Windowsでは<ファイル名>はかなり柔軟です。6文字の制限も半角の制限も有りません。


 11.3 データファイルとファイル番号
  プログラム中で、データファイルを扱うときには、まず、OPENコマンドによって
 ファイルの使用を宣言します。
  OPENでは、扱うファイルを<ファイルディスクリプタ>で指定して、<ファイル番号>
 を割り当てます。ファイル番号は入出力のために必要なメモリ領域(バッファ)に対して
 つける固有の番号であり、以後、OPENされたファイルへの入出力はこのファイル番号
 を指示することによって行います。
 同時にOPENすることのできるファイル数は非常識で無い範囲で使用できます。

[頁の始めに戻る]
 



(12)割り込み
   コンピュータの頭脳であるCPU(Central Processing Unit)は、一般に2つ以上の
 処理をすることができません。したがって、1つ仕事を処理している間は他で何が起ころうと、
 CPUはその処理に移ることはできませんし、それを知ることさえできないのです。このことは、
 1つの決まった一連の流れを頭から処理するようなプログラムの場合、さほど問題にはなりま
 せんが、1つのプログラムの処理中に、即実行しなければならないような特別なことがら(”事
 象”と呼ぶ)が起きたときに、その処理を先に実行させるようなプログラムを必要とする場合が
 あります。
 ”割り込み”とは、このような処理を実現するための手段です。たとえば、CPUがある処理を
 実行しているとき、ファンクションキーが押されたなどの特別な事象が発生したとします。こ
 のような場合、専用のハードウェアーはCPUにその事象が起きたことを、ハーdpウェアー的手段で
 伝えます。そこでCPUは、現在実行中の処理を一時停止し、特別な事情の処理を優先的に実行
 し、その処理の終了後、元の処理に復帰するのです。
  以上のような流れを、”割り込み”と呼ぶわけですが、PC-9801では、多くの周辺装置でこの
 割り込みを使える(すなわち、割り込みの事象を発生させることができる)ようになっており、
 N88-BASIC(86)もこれらの割り込みをサポートしています。
  次に、N88-BASICがサポートしている割り込み機能を示します。

   
(1) STOPキー
(ON STOP GOSUB 参照)
(2) HELPキー
(ON HELP GOSUB 参照)
(3) リアルタイム・タイマ
(ON TIME$ GOSUB 参照)
(4) ファンクションキー
(ON KEY GOSUB 参照)
(5) RS-232C回線
(ON COM GOSUB 参照)
(6) ライトペン
(ON PEN GOSUB 参照)



[頁の始めに戻る]
 



 (13)ラベル名

 N88-BASIC(86)では、プログラムの分岐先として使用する行番号の代わりに
"ラベル名" を使用できます。
あるルーチンの始まりなどに意味のあるラベル名をつけておけば、いちいち行番号を
覚えておかなくともよく、またRENUM で行番号のつけ替えを行ってもそのたびに新しい
行番号を確かめる必要もなくなるため、プログラムの作成を非常に楽に行うことができます。
後でプログラムの修正などを行うときにもたいへん有利です。
次の例を参照して下さい。
 まず、ラベル名を使わないで、ふつうに行番号を分岐先として用いたプログラムを
例として示します。

 10 INPUT A
 20 IF A<0 THEN 80
 30 IF A>0 THEN 60
 40 PRINT "zero"
 50 GOTO 90
 60 PRINT "plus"
 70 GOTO 90
 80 PRINT "minus"
 90 END
 
 これは、10行で入力された値が正か負か0かを調べるプログラムです。ここで処理の流れを
変える命令が20、30、50、70行で使われていて、その分岐先の指定はすべて行番号になって
います。
 これを、ラベル名を使用すると、次のようになります。

 10 INPUT A
 20 IF A<0 THEN *MINUS
 30 IF A>0 THEN *PLUS
 40 PRINT "zero"
 50 GOTO *EXIT
 60 *PLUS:PRINT "plus"
 70 GOTO *EXIT
 80 *MINUS:PRINT "minus"
 90 *EXIT:END
 
 ラベル名の使用のルールは次のとうりです。
 [1] ラベル名の頭にはアスタリスク(*)をつけねばなりません。
 [2]先頭のアスタリスクを除いて、ラベル名は必ず1バイト系の英文字で始まらねばならない。
 [3]ラベル名に使用出来る文字は、先頭のアスタリスクを除いて、1バイト系の英文字と数字
とピリオド(.) であり、大文字と小文字の区別はありません。
 [4]予約後をラベルとして使用できません。
 [5]ラベル名の長さは、プログラムの1行の記述範囲内であれば問わない。
 [6]参照されるラベル名(呼ばれる方のラベル名)は、行番号を除外して行の最初になければ
ならない。
 [7]1行中でラベル名の後に続けて命令を記述し、マルチステートメントとするときは、コロ
ン(:)またはスペースにより区切らねばならない。
 
 A=1:GOTO *A1:A=2: *A1 PRINT A:END
 これを実行すれば 1と表示される。

[頁の始めに戻る]