・VARとDIMはどちらを使ってもよい。
・カンマで区切る事で複数の変数を同時に定義できる。
・変数名には英数字とアンダースコア(_)が使用できる。
・先頭に数字は使用できない。
・式の結果が変数の初期値となる。
・式が省略された場合、変数名末尾の型記号(%/#/$)により%:整数型ゼロ、#:実数型ゼロ、$:空文字列が初期値としてセットされる。
・式が省略され、変数名に型記号がついていない場合はデフォルト数値型のゼロが初期値としてセットされる。
VAR A=0,B,C DIM B$
・VARとDIMはどちらを使ってもよい。
・変数名末尾に型記号(%/#/$)を付けると、それぞれ整数配列、実数配列、文字列配列を作成する。
・型記号を省略した場合はデフォルト数値型配列を作成する。
・確保する配列の要素数を[]でかこって指定する。
・要素数はカンマ(,)で区切る事で4次元配列まで作成できる。
・要素数を省略すると、要素数ゼロの1次元配列を作成する。
VAR ATR[4] VAR DX[5],DY[5],DZ[5] DIM POS$[10,5] DIM IMAGE[]
・VARとDIMはどちらを使ってもよい。
・変数名末尾に型記号(%/#/$)を付けると、それぞれ整数配列、実数配列、文字列配列を作成する。
・型記号を省略した場合はデフォルト数値型配列を作成する。
確保する配列の要素数を[]でかこって指定する
・要素数はカンマ(,)で区切る事で4次元配列まで作成できる。
・要素数を省略すると、要素数ゼロの1次元配列を作成する。
配列要素の初期値として設定する値のリスト
・要素数を省略した場合、値の数が要素数の1次元配列となる。
VAR ATR[4]=[1,2,3,4] DIM POS$[10,5]=["X","Y","Z","W"] DIM IMAGE[]=[0,1,2,3,4]
・OPTION STRICTが定義されていない場合は未定義変数に代入しようとすると自動的に変数を定義する。
・OPTION STRICTが定義されている場合は未定義変数に代入しようとするとUndefined Variableエラーが発生する。
A=10 B=A*6 C[4]=A+B
値を交換する2つの変数
SWAP A,B SWAP A[5],B[2]
操作する変数
加算する値
・省略時には1を指定した事になる。
INC X INC X,3
減算する変数
減算する値
・省略時には1を指定した事になる。
DEC X DEC X,3
コピー元の配列
・1次元配列のみ指定できる。
コピー元の先頭要素番号
・省略時は0を指定した事になる。
コピーする要素数
・省略時はコピー元配列の要素数からコピー元オフセットを引いた数を指定した事になる。
コピー結果の配列
・文字列配列の場合、各要素の文字列もコピーされる。
コピー元の文字列
コピー元の先頭位置
・省略時は0を指定した事になる。
コピーする文字数
・省略時はコピー元文字列の文字数からコピー元オフセットを引いた数を指定した事になる。
コピー結果の文字列
・1次元配列に限り、コピー先配列がコピー元配列より要素数が足りない場合自動拡張する。
・コピー元、コピー先とも配列の次元は無視される。
コピー先の配列
コピー先の先頭要素番号
・省略時は0を指定した事になる。
コピー元の配列
コピー元の先頭要素番号
・省略時は0を指定した事になる。
コピーする要素数
・省略時はコピー元配列の要素数からコピー元オフセットを引いた数を指定した事になる。
DIM SRC[10],DST[10] COPY DST,SRC
・DATA文で定義されたデータを配列に読み込む。
・配列要素数がコピーデータ数より少ない場合、1次元配列に限り、コピー先配列の要素数が足りない場合自動拡張する。
コピー先の配列
コピー先の先頭要素番号
・省略時は0を指定した事になる。
読み込みたいDATA文を示すラベル名文字列
・ラベル名の後に最初に現れたDATA文から読み出しを開始する。
読み込むデータ数
・読み込めるデータ数がここで指定した値より少ない場合エラー。
・省略時はコピー先配列の要素数が指定される。
DIM DST[5] COPY DST,"@SRC" @SRC DATA 5,1,1,2,4
コピー先の文字列変数
コピー先の先頭位置
・省略時は0を指定した事になる。
コピー元の文字列
コピー元の先頭位置
・省略時は0を指定した事になる。
コピーする文字数
・省略時はコピー元文字列の文字数からコピー元オフセットを引いた数を指定した事になる。
COPY A$,"12345"
・COPY命令と同じく配列間の値をコピーするが、コピー先よりもコピー元のコピー要素数が多い場合でも要素数を拡張せず、配列の先頭に折り返してデータをコピーする。
・コピー先、コピー元共に2次元配列まで指定できる。2次元配列を指定した場合、マルチチャンネルのリングバッファ(もしくはデータ)として扱う。
・コピー先、コピー元両方に2次元配列を指定した場合、双方のチャンネル数(第1次元の要素数)は同じにする必要がある。
・コピー先が2次元、コピー元が1次元配列の場合、コピー元のデータがコピー先の全チャンネルに同じようにコピーされる。
・コピー先、コピー元が同じ配列だった場合の動作は保証しない。
コピー先のリングバッファとして扱われる配列
コピー先でのコピー開始位置
コピー元の配列
コピー元でのコピー開始位置
・省略時は0。
コピーする要素の数
・省略時はコピー元配列の要素数。
コピーしたデータの末尾位置
・リングバッファとして扱う場合、帰ってきた値が次回のコピー先オフセットとなる。
配列1内の並び替えを開始する位置
・省略時は0。
並び替える要素数
・省略時は配列1の要素数。
並び替える数値の入った配列
配列1の並び替え結果に連動して並び替える配列
・配列2~8は省略できる。
・配列2~8は文字列配列でも可。
DIM WORK[10] SORT 0,10,WORK
配列1内の並び替え開始位置
・省略時は0。
並び替える要素数
・省略時は配列1の要素数。
並び替える数値の入った配列
配列1の並び替え結果に連動して並び替える配列
・配列2~8は省略できる。
・配列2~8は文字列配列でも可。
DIM WORK[10] RSORT 0,10,WORK
・要素数が1つ増える。
要素を追加される配列
追加する要素の値
DIM WORK[10] PUSH WORK,123
・要素数が1つ減る。
要素を取り出される配列
取り出した要素の値
DIM WORK[10] PUSH WORK,123 A=POP(WORK)
・要素数が1つ増える。
要素を追加される配列
追加する要素の値
DIM WORK[10] UNSHIFT WORK,123
・要素数が1つ減る。
要素を取り出される配列
DIM WORK[10] UNSHIFT WORK,123 A=SHIFT(WORK)
・配列の型は、整数、実数、文字列いずれでも構わない。
・オフセットと要素数を指定すると部分的な変更も可能。
値を上書きする配列
数値や文字列
値を書き込み始める位置
書き込む数
DIM WORK[10] FILL WORK,0
型を調べたい値
値の型に応じて、次のいずれかの数値が返る。
0 | デフォルト型 | #T_DEFAULT |
1 | 整数型 | #T_INT |
2 | 実数型 | #T_REAL |
3 | 文字列型 | #T_STR |
5 | 整数配列 | #T_INTARRAY |
6 | 実数配列 | #T_REALARRAY |
7 | 文字列配列 | #T_STRARRAY |
・デフォルト型は関数・命令コールで引数を省略した場合に設定される特殊な型。
・VARによる変数定義時以外に配列を作成したい場合に使用する。
・ARRAY%は整数配列、ARRAY#は実数配列、ARRAY$は文字列配列を作成する。
作成する配列の次元と要素数
作成した配列
調査する配列
要素数を調べたい次元:0~3
・省略時は配列の次元数が返る。
・次元を指定した場合は指定した次元の要素数が返る。
・次元を省略した場合は配列の次元数が返る。
DIM WORK[10,20] ? DIM(WORK) ? DIM(WORK,0) ? DIM(WORK,1)
・拡張部分の要素には数値の0もしくは空文字列が入る。
サイズを変更する配列
サイズ変更後の要素数
・変更できるのは、配列定義の時に一番最初に書く要素数のみ。
・次元の変更はできない。
要素を増やす配列
要素を挿入する位置:0~配列要素数
挿入する要素数:正の数
・省略時は1。
挿入要素の値
・省略時は、数値配列では0、文字列配列では空文字列。
要素を削除する配列
要素を削除する位置:0~配列要素数-1
削除する要素数:正の数
・省略時は1。
検索対象の配列
・多次元配列も指定可能。
検索する値
見つかった位置
・値が見つからなかった場合は-1が返る。
DIM A[]=[1,2,3,4,5] ?FIND(A,3)
検索対象の配列
・多次元配列も指定可能。
検索する値
見つかった位置の添字
・返値の数は検索対象配列の次元数と同じでなければならない。
・値が見つからなかった場合は全ての返値に-1が返る。
DIM A$[3,3]=["1","2","3","4","5","6","7","8","9"] FIND A$, "4" OUT Y,X ?A$[Y,X]
・型、値、配列の場合要素数と全要素の値を表示する。
・文字列・文字列変数では、文字列の長さも表示する。
・文字列の内容が長すぎる場合、後ろは省略される。
・INSPECTのかわりに??と省略可能。
INSPECT A ?? "12345"*10