制御関数とシステム変数

関数一覧

ANDBOOL ANDCOMP ARG ARG() ARG0...ARG9
ARG[] ARG_SET ARRAY BOOLARG() BOOLARG0...BOOLARG9
BOOLARG[] CALL CALLDEF CASE CASECNT
COUNT DEF DO ENABLE EOL
ERROR FILENAME FILENO FUNC IF
INFO LET LINENO MEMBER NULL
NUMARG() NUMARG0...NUMARG9 NUMARG[] NUMARG_DEC NUMARG_INC
ORBOOL ORCOMP Q RECNO S
TAB WHILE

システム変数

あらかじめ用意してある特殊な変数。引用するのみで代入は出来ない。

ERROR

num ERROR
オーバーフロー数値

NULL

str NULL
長さ0の文字列

Q

str Q
ダブルクォート"一文字の文字列

S

str S
シングルクォート'一文字の文字列

TAB

str TAB
タブコード0x09一文字の文字列 通常は使用しない。出力時には無視される。

EOL

str EOL
行末0x0a一文字の文字列 通常は使用しない。出力時には無視される。

LINENO

num LINENO
通算の行番号

RECNO

num RECNO
ファイル内の行番号

COUNT

num COUNT
現在行以前に出力した行数。通算選択数になる。

FILENO

num FILENO
現在処理中のファイルの番号(1から始まる)

FILENAME

str FILENAME
現在処理中のファイル名。標準入力を処理している場合は空文字列。 保持する長さはシステムの限度値。それ以上は切り捨てられる。
TFGCALC.EXE/TFGSELECT.EXEでは入力ファイル名。 TFGEN.EXEでは出力ファイル名。

制御関数

ENABLE

bool ENABLE( [ bool 出力フラグ ] )
システム内の出力制御フラグに対する操作。
引数を省略すると現在の値を返す。
引数を与えると出力制御フラグの値は引数の値となる。返す値は引数と同じ値。 現在行を出力する場合には真、出力しない場合には偽を与える。
出力フラグは各行の処理に先だって真に指定されている。
TFSELECT.EXEでは、行演算の結果が内部フラグに書き込まれる。 従って、出力制御を実際に行えるのは行末尾ブロックのみである。
TFCALC.EXE/TFGEN.EXEでは、この関数を使用しなければ常に出力する。 行先頭ブロック、行演算、行末尾ブロックのどこでも出力制御は有効である。 選択的に出力する際に使用すると良い。

INFO

str INFO( num 番号 [,str 出力データ ] )
アプリケーションと通信する。
出力データを省略するとアプリケーションからデータを受け取る。 戻り値は受け取ったデータ。
出力データを指定するとアプリケーションへデータを渡す。 戻り値は出力データ。
アプリケーションとの通信は、アプリケーションによって異なる。 通常は定義されていないので、出力は無効。入力は空の文字列となる。
アプリケーションのドキュメントを参照のこと。

LET

LET( 代入先,)
代入。
変数、あるいは、配列要素に代入する。 代入先と、値のデータの型は同じでなければならない。
戻り値は、代入値である。

IF

IF( bool 条件式,式1,式2)
条件判断。
条件式が成立したとき式1の値、成立しなかったときには式2の値を返す。 値の型は、式の型と同じ。 式1と式2の型は一致していなければならない。
式1と式2は、値を返すほうのみが評価される。

CASE

CASE( bool 条件式:結果式 [, bool 条件式:結果式]*)
多重条件選択。
条件式:結果式を先頭から調べていき、最初に条件式がTRUEになったときの式の値を返す。 条件式は論理値。また、結果式はすべて同じ型でなければならない。 条件が一つも成立しなかった場合は、結果式の型によって指定される下記の値を与える。

数値 オーバーフロー数値
文字列 空の文字列
論理値 FALSE

条件式が真になった時点で以降の評価は実行しない。結果式は条件式が真になったもののみ評価する。
最後の条件に、定数TRUEを与えると、それ以前の条件全てに合致しなかった場合の値を決めることが出来る。

CASECNT

num CASECNT( bool 論理式 [, bool 論理式 ]*)
成立した論理式の数を数える。結果は数値。
すべての式が評価のために実行されることに留意する。

ARRAY

ARRAY( num 指標 , 要素式 [, 要素式 ]* [; 不一致式 ]* )
指標選択。
最初の数式を指標として、以後の式を1、2、3、 、、と番号を付け、その該当する番号の式の値を返す。 要素式、不一致式の型はすべて一致していなければならない。
指標に該当する要素式がない場合は、不一致式が書かれていれば、その値を返す。 不一致式が書かれていなければ、要素式の型によって指定された規定値を与える。

数値 オーバーフロー数値
文字列 空の文字列
論理値 FALSE

要素式は指標に該当する要素式のみが評価される。

ANDBOOL

bool ANDBOOL( bool 論理式 [ , bool 論理式 ]* )
論理式のすべてが真ならば真。
関係演算子のANDと異なり、 先頭から論理式の評価を進め、論理式のいずれが偽になった時点で中断し、以降の論理式を評価しない。

ORBOOL

bool ORBOOL( bool 論理式 [ , bool 論理式 ]* )
論理式のいずれかが真ならば真。
関係演算子のORと異なり、 先頭から論理式の評価を進め、論理式のいずれが真になった時点で中断し、以降の論理式を評価しない。

ANDCOMP

bool ANDCOMP( 基準式 , [ NOT ] 比較演算子 , 比較式 [ ,比較式 ]* )
比較結果のすべてが真ならば真。
指定した比較演算子を用いて、基準式を先頭から順に比較式と比較する。 比較の結果が偽になった時点で中断し、以降の比較は行わない。 比較演算子の前にNOTがあると条件が反転する。

ORCOMP

bool ORCOMP( 基準式 , [ NOT ] 比較演算子 , 比較式 [ ,比較式 ]* )
比較結果のいずれかが真ならば真。
指定した比較演算子を用いて、基準式を先頭から順に比較式と比較する。 比較の結果が真になった時点で中断し、以降の比較は行わない。 比較演算子の前にNOTがあると条件が反転する。

DO

bool DO( 実行式 [ , 実行式 ]* ; bool 継続条件 )
繰り返し処理。継続条件が偽になると終了する。
実行式は、先頭から順に、繰り返し評価される。 継続条件は実行式の後で評価されるので、実行式は少なくとも一回は実行される。 戻り値は常に真。
記述を誤ると無限ループに陥り、プログラムの強制終了が必要になる。 危険な処理なので、通常は使用してはならない。

WHILE

bool WHILE( bool 継続条件 ; 実行式 [ , 実行式 ]* )
繰り返し処理。継続条件が偽になると終了する。。
実行式は、先頭から順に、繰り返し評価される。 継続条件は最初に評価されるので、実行式は一度も実行されないことがある. 戻り値は常に真。
記述を誤ると無限ループに陥り、プログラムの強制終了が必要になる。 危険な処理なので、通常は使用してはならない。

FUNC

FUNC( str 関数式 ; 実行式 [ , 実行式 ]* )
関数式を定義し、実行式を順に評価する。戻り値は最後の実行式の値。 関数の型も最後の実行式の型と同じになる。
実行式の中では、CALL関数を用いて、関数式を呼び出せる。 関数式内部では特殊な文字変数ARGに引数が渡されている。
関数式の中でも、CALL関数を使用できるが、このときは、 再帰処理となるため、無限ループに陥る可能性があるので安全ではない。
残念ながら、関数式は、文字列式で、引数は文字列に変換される。 数値を扱う場合は、適宜、NUM関数やSTR関数を用いる 必要がある。複数の引数を関数式に渡したい場合は、文字列リストを用いると良い。
DEF関数で定義した関数と異なり、関数の存在はFUNCの 内部に限られる。

CALL

str CALL( 引数 )
FUNC関数の中で用い、そこで定義した関数式を評価する。
引数は、特殊な文字変数ARGに文字列に変換して与えられる。

DEF

bool DEF( num 関数番号 ; [ 関数式 , ]* str 関数式 )
指定の番号の関数式を定義する。 最後の関数式は必ず文字列型であること。 戻り値は常に真。
ここで定義した関数はCALLDEF関数を用いて使用できる。
関数式の中で、同一番号のCALLDEF関数を使用できるが、このときは、 再帰処理となるため、無限ループに陥る可能性があるので安全ではない。
関数式内部では特殊な文字変数ARGに引数が渡されている。
残念ながら、関数式は、文字列式で、引数は文字列に変換される。 数値を扱う場合は、適宜、NUM関数やSTR関数を用いる 必要がある。複数の引数を関数式に渡したい場合は、文字列リストを用いると良い。
FUNC関数で定義した関数と異なり、定義した関数は大域的に存在する。 同一番号の関数を定義すると新しい定義で上書きする。 ここでの関数定義は、実行時にダイナミックに行われ、 コンパイル時に定義するわけではないことに注意すること。
なお、関数番号は、0-255が許される。

CALLDEF

str CALLDEF( num 関数番号 ; 引数 )
DEFで定義した関数番号の関数式を評価する。
引数は、特殊な文字変数ARGに文字列に変換して与えられる。 関数番号は、0-255が許される。

ARG

str ARG
CALL関数やCALLDEF関数の引数の値を持つ。
FUNC関数やDEF関数での定義する関数式の中で使用する。
CALL関数やCALLDEF関数を多重に呼び出した場合は、 現在の一番内側の呼び出しの引数の値を持つ。

ARG()

ARG( [ 引数 [ : 文字列最大長 ] ] [ , [ 引数 [ : 最大文字数 ] ] ]* ; 実行式 [ ,実行式 ]* )
引数を特殊変数に割り当てて、実行式を評価する。戻り値は最後の実行式の値。
引数は数値式、文字列式、論理式。 文字列式の場合は割り当てる大きさを文字単位で指定できる。 引数の評価後のサイズが大きさの指定より大きい場合は引数の大きさになる。 省略した場合も引数の大きさ。
引数は、特殊な引数配列に順に割り当てる。 添字は必ず、文字列、数値、論理値に関わらず、先頭から、0、1、2の順で割り当てられる。 省略した引数には割り当てない。番号だけが進む。最大で32個用意されている。 引数の文字列はARG[]を、 数値はNUMARG[]を、論理値はBOOLARG[]使用して、 実行式の中で参照できる。 ARG[0]からARG[9]NUMARG[0]からNUMARG[9]BOOLARG[0]からBOOLARG[9]の代わりに、 ARG0からARG9NUMARG0からNUMARG9BOOLARG0からBOOLARG9を使用できる。 また、実際は引数の演算中にも、現在の引数以前の引数の値を参照できるが、 安全ではないので推奨できない。 文字列引数の内容はARG_SETで変更でき、 論理値引数の内容はBOOLARG()で変更できる。 また、数値引数は、NUMARG()NUMARG_INC()NUMARG_DEC()で変更できる。
この関数は、実行式の外側に引数環境を作るもので、CALLや、 CALLDEFを実行式として記述すれば、複数の引数や、 数値引数の引渡しを可能にする。
また、実行式に対して局所的な作業変数として使用すると便利である。

ARG[]

str ARG[ num 引数番号 ]
ARG()関数の実行式の中で使用し、文字列引数を返す。

ARG0...ARG9

str ARG0...ARG9
ARG[0]からARG[9]の代わりに使用する。
記述の簡略化のために用意した。

ARG_SET

str ARG_SET( num 引数番号 ; str)
ARG()関数の実行式の中で使用し、指定の文字列引数に代入する。
戻り値は、与えられた値。

NUMARG[]

num NUMARG[ num 引数番号 ]
ARG()関数の実行式の中で使用し、数値引数を返す。

NUMARG()

num NUMARG( num 引数番号 ; num)
ARG()関数の実行式の中で使用し、数値引数に代入する。
戻り値は与えられた値。

NUMARG0...NUMARG9

num NUMARG0...NUMARG9
NUMARG[0]からNUMARG[9]の代わりに使用する。
記述の簡略化のために用意した。

NUMARG_INC

num NUMARG_INC( num 引数番号 )
ARG()関数の実行式の中で使用し、数値引数に1を加える。
戻り値は1を加える前の値。

NUMARG_DEC

num NUMARG_DEC( num 引数番号 )
ARG()関数の実行式の中で使用し、数値引数から1を引く。
戻り値は1を引く前の値。

BOOLARG[]

num BOOLARG[ num 引数番号 ]
ARG()関数の実行式の中で使用し、論理値引数を返す。

BOOLARG()

num BOOLARG( num 引数番号 ; bool)
ARG()関数の実行式の中で使用し、論理値引数に代入する。
戻り値は与えられた値。

BOOLARG0...BOOLARG9

num BOOLARG0...BOOLARG9
BOOLARG[0]からBOOLARG[9]の代わりに使用する。
記述の簡略化のために用意した。

MEMBER

str MEMBER
STR_LOOP関数、 STR_LOOP_COUNT関数、 STR_LOOP_SRCH関数、 PART_LOOP関数、 PART_LOOP2関数、 PART_REPLACE関数、 PART_REPLACE2関数、 LIST_LOOP関数、 LIST_LOOP_FILTER関数、 LIST_LOOP_REPLACE関数、 LIST_LOOP_AND関数、 LIST_LOOP_OR関数、 LIST_LOOP_SRCH関数 の中でメンバーを参照するための特殊な変数。