[
, 定義 ;
]*
変数定義は各ブロックの先頭で行う。行演算では行えないことに注意する。 変数の参照は定義ブロックの後のみで行える。
定義は、以下の4種類がある。
| 数値変数定義 | #変数名 |
| 文字列変数定義 | $変数名 [ :最大文字数 ]
|
| 数値配列定義 | #変数名 [ 要素数 ] |
| 文字列配列定義 | $変数名 [ 要素数 ]
[ : 最大文字数 ]
|
変数名は半角の英字で始まる英数字。
数値/文字列、変数/配列を問わず同一の名前は許さない。
変数名とその前の記号#、$は間に空白を入れてはならない。
文字列の場合は最後に:の後で最大の長さを文字数で指定できる。
最大文字数を省略すると、その変数の最大文字数は1024となる。
配列は、必ず大きさを指定する(数字で直値指定)。
使用できる変数配列名は、最大で4000個程度。
取り扱うデータは以下の3種類。
*OVERFLOW*を出力する。
TRUE)または偽(FALSE)の値を取る。
入力の場合は、
有意な先頭の文字がT、tまたは真のとき、
真として扱い、そのほかの場合は偽として扱う。
出力の場合は、
真の場合はTRUE、偽の場合はFALSEという文字列を出力する。
データ型に対応して以下の3種類の記述がある
'、"または?で囲む。
引用符自体を文字列定数内に各場合は二つ続けて書く。
TRUE | 真 |
FALSE | 偽 |
入力フィールドに対応した変数として以下の2種類が有る。
同一のフィールドを文字列として引用しても、数値として引用してもかまわない。
フィールドを指定する番号は1から始まり、
存在しないフィールドは、文字列ならば長さ0の文字列。数値ならば0となる。
また、長さ0の文字列は数値として引用すると値は0になる。
TFGEN.EXEでは入力データが無いので意味がない。
常に、存在しないフィールドとして扱う。
将来の複数のファイルの取扱のために、ファイル番号で修飾できる。
省略するとファイル番号1。現在は全く意味がない。
#変数番号[@ファイル番号]
[@ファイル番号]
$変数番号
変数番号は1から始まる数字。
先行する記号#、$と変数番号の間に空白を入れてはならない。
ファイル番号は1から始まる数字。現在はサポートするプログラムが無いので記述する必要は無い。
フィールドの呼び出しを動的に行うために用意した配列。
フィールドを指定する配列添字は0から始まる事に注意。
配列添字は数式で指定できる。
ファイル番号は将来のために予約されている機能。
現在は記述する必要が無い。
1から始まる番号でファイルを指定する。数式を記述できる。
フィールド変数よりも効率が悪いので通常は使用しない。
#[@numファイル番号]
[ num 配列添字 ]$[@numファイル番号]
[ num 配列添字 ]変数定義で指定した変数/配列。使用する前に定義されている必要がある。 代入されていない値は、数値0あるいは長さ0の文字列。 配列の添字が不正な場合はランタイムエラーとなる。
#変数名$変数名#変数名 [ num 添字 ]$変数名 [ num 添字 ]
関数名
([引数 [,引数 ]*])
関数呼び出し。関数の詳細は別途一覧を参照のこと。 なお、引数の区切りなど詳細は関数によって異なる。
以下、優先順位の高い順に列挙する
( 式 ) 数式 乗法演算子 数式 [ 乗法演算子 数式 ]*
* | 乗算 |
/ | 除算 |
\ | 整数除算 |
% | 整数剰余 |
intに変換して処理している。
[ 加法演算子 式 ]*
+ | 加算、文字列連結 |
- | 負号、減算 |
> | 大きい |
>= | 以上 |
=> | 以上 |
= | 等しい |
<= | 以下 |
=< | 以下 |
< | 小さい |
>< | 等しくない |
<> | 等しくない |
IN | 左の文字列は右の文字列に含まれる |
NI | 右の文字列は左の文字列に含まれる |
HEAD_OF | 左の文字列は右の文字列の先頭 |
HAVE_HEAD | 右の文字列は左の文字列の先頭 |
TAIL_OF | 左の文字列は右の文字列の末尾 |
HAVE_TAIL | 右の文字列は左の文字列の末尾 |
結果はすべて、論理値で返す。成立した場合はTRUE、
成立しなかった場合はFALSEを返す。
IN、
NI、
HEAD_OF、
HAVE_HEAD、
TAIL_OF、
HAVE_TAILを除く関係演算子は、全ての型に適用することができる。
大小判定の基準は以下の通り
TRUEはFALSEよりも大きいものとして取り扱う。NOT 論理式[ 論理積演算子 論理式 ]*AND
| TRUE | AND | TRUE | → TRUE |
| TRUE | AND | FALSE | → FALSE |
| FALSE | AND | TRUE | → FALSE |
| FALSE | AND | FALSE | → FALSE |
IMP
| TRUE | IMP | TRUE | → TRUE |
| TRUE | IMP | FALSE | → FALSE |
| FALSE | IMP | TRUE | → TRUE |
| FALSE | IMP | FALSE | → TRUE |
EQV
| TRUE | EQV | TRUE | → TRUE |
| TRUE | EQV | FALSE | → FALSE |
| FALSE | EQV | TRUE | → FALSE |
| FALSE | EQV | FALSE | → TRUE |
[ 論理和演算子 論理式 ]*OR
| TRUE | OR | TRUE | → TRUE |
| TRUE | OR | FALSE | → TRUE |
| FALSE | OR | TRUE | → TRUE |
| FALSE | OR | FALSE | → FALSE |
XOR
| TRUE | XOR | TRUE | → FALSE |
| TRUE | XOR | FALSE | → TRUE |
| FALSE | XOR | TRUE | → TRUE |
| FALSE | XOR | FALSE | → FALSE |
` 作業変数 := 値
| 数値作業変数 | #変数名 |
| 文字列作業変数 | $変数名 |
| 数値作業配列要素 | #変数名 [ num 添字 |
| 文字列作業配列要素 | $変数名 [ num 添字 |
LETが用意されている。そちらも参照のこと。
式 , 式 [ , 式 ]*
,でつないで式を書ける。値、型ともに最後の式の値を取る。
関数の引数など、曖昧な場所での記述は出来ない。(括弧で囲めば良い)