REM


 [機能] コメントの記述ができます。

 [書式] REM [コメント]

 [説明]
  このあとの文は実行されません。
  REMは省略してアポストロフィ(')で置き換えることもできます。

 [例]



  LET


 [機能] 変数に値を代入します。

 [書式] [LET] 変数[$]=値

 [説明]
  変数の型とデータの型は同じでなければいけません。
  変数名は先頭はアルファベットで以下は他に数字と'_'アンダーラインを使うことができます。
  大文字と小文字は区別され別の変数として処理されます。
  'let' は省略することができます。(SQLモード時は省略できません)
  参照:'func'命令‐グローバル変数定義位置の注意点 も一読して下さい。

 [例]
    let n=2
    m=4
    dim d(4) : d(0)=8
    ss$="hello"
    print ss$;n;m;d(0)
 [結果]
    hello 2 4 8


  DIM


 [機能] 配列変数を定義します。

 [書式] DIM 変数1[$](a[,b][,c]...)[,変数2[$]...]

 [説明]
  配列の大きさを添字で次元の数だけ指定します。
  使用できる添字の範囲は(0~指定した大きさ)までとなります。
  連続で複数定義することもできます。
  文字配列の時は変数名に $ を付けます。

 [例]
   dim member(20,10),name$(20)
   member(15,5)=164
   print member(15,5)
   erase member

  配列初期化子
  {}で囲った記述でデータをまとめて代入することができます。
  例
      10 dim da(4,8),st$(16)
      20 st$={"apple","orange","banana","melon","grapes","cherry"}
      30 da={{0,1,2,3,4,5},{10,11,12,13},{20,21,22,23},{30,31,32,33}}
      40 print st$(4)
      50 print da(1,2)
  結果
      grapes
       12

  添字のn番目の次元の数えは右から数えた順になります。(例のdaでは右から8 4の順)
  右の桁からカウントされます。
  例のdaのように2次元以上の配列の場合は{}を多重構造にしてデータを並べます。
  {}内の数字の数は指定した添字の大きさより小さくても構いません。
  },の締めがある時点で次の桁へ繰り上がります。
  1次元のst$ははこのように代入されていきます。
  (0)->"apple" (1)->"orange" (2)->"melon" (3)->"grapes" (4)->"cherry"
  2次元のdaはこのように代入されていきます。
  (0,0)->0 (0,1)->1 (0,2)->2 (0,3)->3 (0,4)->4 (0,5)->5
  (1,0)->10 (1,1)->11 (1,2)->12 (1,3)->13

  ERASE


 [機能] 配列変数を消去します。

 [書式] ERASE 変数[$][,変数[$]]...

 [説明]
  グローバル配列はグローバルエリアでのみ消去できます。
  ローカル配列は現在のスコープで参照可能なローカル配列のみ消去できます。



  OPTION BASE


 [機能] 配列の添字の最小値を指定します。

 [書式] OPTION BASE -1|0|1

 [説明]
  配列の添字の最小値を0か1かで指定します。(デフォルトは0)
  この命令は配列が宣言される前に記述しておく必要があります。
  途中で指定を変更する場合は一度CLEAR命令を実行しなければいけません。
  注意:
  cモードでは配列の添字の範囲チェックが簡略化されているため
  最小値1の状態で0を指定してもエラーの出力はありせん。

  また当Basicの独自の機能として-1を指定することができます。
  これは最小値の指定ではなく、最大値を1つ減らす指定となります。
  Basicでは配列の範囲を10と宣言した時に0~10までの11個のデータを扱う指定になりますが
  OPTION BASE -1 を指定した場合には0~9までの10個のデータを扱うことになります。
  これは一般の言語、C言語やJava等と同じ内容になります。
  これは主に線形代数のMATRIX命令で、配列を行列として取り扱う時に使用されます。
  (例えば行列を2で宣言した時に1つ大きな3の配列サイズになることを避けています)

 [例]
    option base 1
    dim dat(8)
    dat(1)=12


  DATA


 [機能] 'READ'文で読まれる数値、文字データを定義します。

 [書式] DATA データ1[,データ2]...

 [説明]
  'DATA'文はどこにでも配置することができます。
  文字変数で読み込むデータはダブルクォーテーションで囲まれていても
  囲まれていなくても読み込むことができます。

 [例] [smp_data.bas]
   10 read a,b
   20 print a;b
   30 read s1$,s2$
   40 print s1$;s2$
   50 print "Line:";dtl
   60 restore 120
   70 read s1$,s2$
   80 print s1$;s2$
   90 'Datagroup
   100 data 10,11,12,abc
   110 data 20,21,22
   120 data Apple,"Orange"
  [結果]
   10  11
   12abc
   Line: 110
   AppleOrange


  READ


 [機能] 'DATA'文から読み込んだデータを変数に格納します。

 [書式] READ 変数1[$][,変数2[$]]...

 [説明]
  文字変数は数値、文字両方のデータが読めます。
  数値変数では数値データしか読み込めません。

 [例]



  RESTORE


 [機能] 読み込まれる'DATA'文の位置を行番号で指定します。

 [書式] RESTORE 行番号

 [説明]

 [例]



  DTL


 [機能] 'READ'文で読まれた'DATA'の行の位置を保持して返します。

 [書式] 

 [説明]

 [例]



  SWAP


 [機能] 2つの数値変数の値を入れ替えます。

 [書式] SWAP (配列)変数1,(配列)変数2

 [説明]
  配列変数にも使用できます。(具体的な配列要素数まで記述します)

 [例]
    st=5:dt=12
    swap st,dt
    print st;dt

 [結果]
     12  5



  SEARCH  (関数)


 [機能] 数値配列変数の中から指定した値を探し出しその添字のナンバーを返す。

 [書式] SEARCH( 数値配列変数名、検索値[、開始添字[、ステップ値]] )

 [説明]
  数値の配列変数から指定の'検索値'を探し出しその添字のナンバーを返します。
  見つからなかった時は-1を返します。
  配列変数は1次配列でなければいけません。事前に DIMで宣言されていることが必要です。
  開始添字は配列のどこから探し始めるかを指定します。省略時は0です。
  'ステップ値'はその間隔で探します。省略時は1です。

 [例]
    dim as(10)
    as(4)=45
    as(7)=28
    print search(as,28)

 [結果]
     7


  CLEAR


 [機能] 変数領域の全初期化及び文字、数値変数の領域サイズを決定します。

 [書式] CLEAR [文字変数領域サイズ] [,数値変数領域サイズ]

 [説明]
  全ての変数は初期化されます。(起動時と同じ状態に)
  Open中のファイルは閉ざされます。
  全ての割り込みはOFF状態になります。乱数発生系列も初期化されます。
  文字と数値の変数領域サイズを指定します。
  初期状態では文字4000、数値100000となっています。
  文字はこの値とは別に実データ格納領域を持っています。(1つの文字列データの長さは自由です)
  省略された場合は元の値が維持されます。
  従来の互換命令です。初めから大きなメモリが割り当てられている現代では使う必要はありません。
  変数を起動時と同じ初期状態にしたい時に単体で'clear'と記述して下さい。

 [例]
    clear ,200000
    dim mc(200000)
    '指定した直後に最大でその大きさの配列を定義することができます。


  VARPTR


 [機能] 変数エリアでの変数の格納アドレスを返します。

 [書式] VARPTR("配列または変数名")

 [説明]
  BSAVE,BLOADとセットで使用され数値配列変数の出し入れに使われます。

 [例] [smp_varptr.bas]
    100 dim az(12)
   110az(0)=8:az(1)=345:az(2)=-24
    120 bsave "da.dat",varptr("az")
    130 erase az
    140 dim az(12)
    150 bload "da.dat",varptr("az")
    160 print az(0)
    170 print az(1)
    180 print az(2)
 [結果]
    8
    345
    -24



  GETTYPE


 [機能] 変数の情報を取得します。

 [書式] GETTYPE("変数名"[,添字用ナンバー])

 [説明]
  変数の型、スコープ、配列情報、添字データを取得します。
  変数名で配列名を指定する時は()の部分の記述はいりません。
  返される数字は0~8で以下の内容に対応しています。
  0.未定義
  1.数値変数-グローバル
  2.文字変数-グローバル
  3.数値配列-グローバル
  4.文字配列-グローバル
  5.数値変数-ローカル
  6.文字変数-ローカル
  7.数値配列-ローカル
  8.文字配列-ローカル

  [添字用ナンバー]を指定すると配列の添字情報を取得することができます。
  0 配列の次元数を取得します。
  1 配列の1番目の添字の大きさを返します。
  2 配列の2番目の添字の大きさを返します。
  3 以下n番目...
  指定変数名が配列でない場合や配列の次元数を超えた場合は0を返します。
  添字のn番目は右から数えた順になります。
  da(3,2,1) なら1番目の添字は1、3番目の添字は3となります。

 [例]"smp_gettype.bas"
  100 cls
  110 dim gd(4,8)
  120 gi=4
  130 gs$="text"
  140 print "gi";gettype("gi")
  150 print "gs$";gettype("gs$")
  160 print "gd";gettype("gd")
  170 print "gd_n";gettype("gd",0)
  180 print "gd_1";gettype("gd",1)
  190 f=fn()
  200 func fn()
  210 dim ld(8)
  220 li=4
  230 print "li";gettype("li")
  240 print "ld";gettype("ld")
  250 print "gd";gettype("gd")
  260 endfunc
 [結果]
  gi 1
  gs$ 2
  gd 3
  gd_n 2
  gd_1 9
  li 5
  ld 7
  gd 3

  BSAVE


 [機能] メモリの変数エリアのデータをファイルに保存します。

 [書式] BSAVE "ファイル名",変数エリアアドレス

 [説明]
  保存したい数値配列のアドレスをVARPTR関数を使って指定します。
  配列の値は小数を切り捨てられて2バイト符号付き整数型へ変形されてから保存されます。
  保存できるのは数値配列のみです。
  配列終了までの長さは自動判別されます。
  "ファイルネーム"には拡張子が必要です。

 [例]
    dim sh(9,9)
    bsave "sh.var",varptr("sh")



  BLOAD


 [機能] ファイルからメモリの変数エリアへデータを読み込みます。

 [書式] BLOAD "ファイル名",変数エリアアドレス

 [説明]
  読み込みたい数値配列のアドレスをVARPTR関数を使って指定します。
  読み込まれる配列は保存されたものと同じサイズでなければなりません。

 [例]
    dim gd(4095)
    bload "gd.var",varptr("gd")