EXPRTF タブファイルをTSEXPRで計算

書法

EXPRTF expr [filename]* [option]*

SHELLMODE

@記述、!記述、^記述、#記述

詳細

第一パラメータをTSEXPR 式の連続として解釈して、 入力ファイル(タブファイル)の各レコードに対して計算し、標準出力する。
ファイル名を省略すると標準入力を扱う。
通常は式の値を常に出力するが、行を抑制する検定モードを指定できる(-P)。

式記述

{ TSEXPR式; }+
TSEXPR 式を ; で区切って第一パラメータに記述する。
アプリケーション・インタフェース
引数略記変数名説明
1以上 @n 1から順に入力項目に対応
0 &0 ??gln 通算行番号
-1 &(-1) ??ln ファイル内行番号
-2 &(-2) ??fn ファイル番号
-3 @(-3) ??filename 処理中のファイル名
-4 &(-4) ??fc 項目数
??print 出力の許可状態を表す論理値。 行の計算式、初期化式などそれぞれの場合に固有である。
??print := bool
この変数に論理値を代入することで出力の可否を制御できる。
bool SPOOL(str 文字列 ) 文字列を直接出力する。

動作モード

オプション(-P)で検定モードに切り替えることができる。

通常モード
入力行数と同じ行だけ常に出力する。
出力はTABファイルで、各項目には、先頭から順に式の値が対応する。
検定モード
検定モードでは、第一式が検定式となり、この式の値がTRUEになる行だけを出力する。 従って、第一式の型は論理型であること。
出力はTABファイルで、各項目には、第二式から順に式の値が対応する。

初期化式の埋め込み

最初に書く式に初期化処理などを埋め込めるようになった。
この記述部分を頭書きと呼ぶ。頭書きは式記述の先頭に書き、必ず : で始まる。 構成要素は次のいずれかである。

:INIT: ;全体の最初に評価
:FINIT: ;全体の最後に評価
:BEGIN: ;ファイルの先頭で評価
:END: ;ファイルの終わりで評価
:PREDICT;検定モードに切り替える
:NOPREDICT;非検定(通常)モードに切り替える
:# ....... eol注釈。行末までを注釈とする

 埋め込んだ処理は、コマンドラインで指定するこれらの処理を上書きする。つまり、埋め込んだ処理の方が優先順位が高い。

OPTION

-B{tsexpr;}+
ファイル処理の最初に実行する式を書く。各式は「;」で区切る。
-E{tsexpr;}+
ファイル処理の最後に実行する式を書く。各式は「;」で区切る
-F{tsexpr;}+
全体の処理の最後に実行する式を書く。各式は「;」で区切る。
-I{tsexpr;}+
処理の最初に実行する式を書く。各式は「;」で区切る。デフォルトでは出力しない。
-NOEOL
出力時に、行末コードを抑制する。(行末でのTABの刈り込みも行わない)
-Ofilename
出力を指定のファイルに切替える。
-P
検定モードに切り替える
-Rstr
出力用の改行コードを指定する。正規表現で書く。デフォルトは CRLF (\r\n)。
-S[+|-]
各行の出力を抑制する(-S、-S+)。または、抑制を解除する(-S-)。
-SB[+|-]
ファイル開始処理の出力を抑制する(-SB、-SB+)。または、抑制を解除する(-SB-)。
-SE[+|-]
ファイル開始処理の出力を抑制する(-SE、-SE+)。または、抑制を解除する(-SE-)。
-SI[+|-]
全体の開始処理の出力を抑制する(-SI、-SI+)。または、抑制を解除する(-SI-)。
-SF[+|-]
全体の終了処理の出力を抑制する(-SF、-SF+)。または、抑制を解除する(-SF-)。
-Tstr
出力用の項目区切りコードを指定する。正規表現で書く。デフォルトは TAB (\t)。
-V
項目出力をフィルタリングしない。
-X
出力を項目数固定モードにする。行末でのTABの刈り込みは行わず、必ず改行する。

用例

参考

バージョン

Ver 1.012012/04/30 初期化/終了化のcallbackを変更。
外部変数 ??print を導入
Ver 1.00初版