ARGREP 文字列引数置換

ARGREPはテキストに対する文字列置換機能である。

通常のテキストはそのまま出力に現れ、 %で始まる特別なものが、置換される。
埋め草 埋め草としておき、出力として機能しないもの
%_

何も出力しない

文字と制御コード 特定の文字、制御コードを表す。
%%

「%」

%p

%

%s

'

%d

"

%q

"

%Q

`

%g

>

%l

<

%c

|

%S

半角スペース

%t

タブ「\t 0x09」

%n

行末(\r\n 0x0d0x0a)

%N

改行(\n 0x0a)

任意個数の文字、制御コード 指定個数の連続した文字、制御コード。
%bnumber;

指定個数の半角スペース。

%Tnumber;

指定個数のタブ。

%Lnumber;

指定個数の行末(\r\n 0x0d0x0a)

%rcharnumber;

指定個数の文字。charを繰り返す。charは制御コードでない文字。

引数の置き換え アプリケーション引数を置き換える
%number[詰合せ指示];

指定の番号の引数

多くの場合、番号は1から始まる。
詰合せの指定が可能である。 最後の ; は省略できるが、混乱を避けるために書いた方が良い。

環境変数 環境変数の置換、設定
%@envname;

環境変数の内容

環境変数が存在しない場合は、出力には現れない。

%&[#|num][詰合せ指示];

QS_ARGn変数の内容

qsc.exeなどで設定できる環境変数QS_ARGnの内容を得る。numで番号を指定する。

番号の代わりに「#」を書くと、QS_ARGC(引数の数)の内容を得る。

詰合せの指定ができる。

%@envname[#]<%>

環境変数に文字列を代入 【出力要素ではない】

%@envname< から %>の間を、置換評価してから設定する。
#」を挟むと、置換評価は行わない 文字列の中に「%>」を書く場合には、「%%>」と書く必要がある。 環境変数のサイズの上限がおよそ32kBなのでこれを超えない範囲で指定すること。

TSEXPR TSEXPRによる置換、評価など
%(tsexpr)[詰合せ指示];

TSEXPRの結果

詰合せの指定が可能である。 最後の;は省略できるが、混乱を避けるためにつけたほうが良い。
TSEXPRの引数はARGREP自体の引数である。

%^tsexpr;

TSEXPRを評価 【出力要素ではない】

式を評価するだけで出力しない。 TSEXPRの引数はARGREP自体の引数である。

%<[#](tsexpr式)テキスト%>

TSEXPRを評価 【出力要素ではない】

式を評価するだけで出力しない。
TSEXPR の引数はテキストで、ARGREPの引数は引用できない。この点が %^ と異なる。
テキストは通常、ARGREPで置換評価をしてから、引数に渡すが、「#」を書くと、置換評価せずに引数に渡す。
テキストの中に「%>」を書く場合は、「%%>」と書く必要がある。

機能番号関数表記変数表記説明
0@0??textテキスト

ここでの TSEXPR の中ではSPOOL(..)関数が使える。テキストを出力する。この機能を使うと出力要素として働かせることもできる。

%$number[詰合せ指示];

TSEXPRの SHELF 配列の要素

詰合せの指定ができる。
最後の;は省略できるが、混乱を避けるために書いた方が良い。

%<[#]number;テキスト%>

TSEXPRの SHELF 配列の要素に文字列を代入 【出力要素ではない】

テキストは通常 ARGREP で置換評価してから、TSEXPR の SHELF[number] に代入するが、「#」を書くと、置換評価せずに代入する。 テキストの中に「%>」を書く場合は、「%%>」と書く必要がある。

TSFXPR TSFXPRは、もう、使用されない。同等の機能はTSEXPRで実現できる。
%{tsfxpr}[詰合せ指示];

TSFXPRの評価結果

詰合せの指定ができる。
TSFXPRの引数はARGREP自体の引数である。
TSFXPRは使われなくなったが、互換性を維持するために残してある。

ファイル ファイルを差し込む。
%=filename{;|行末|タブ}

指定したファイルの内容

ファイル名指定は、後ろに;を書く方法がわかりやすい。

コマンドライン コマンドラインの実行結果を差し込む。
%#command-line行末

コマンドラインの標準出力

行末までをコマンドラインを実行した、その標準出力。

条件制御 テキストの出力条件制御
%?tsexpr;[#]<成立テキスト[%:不成立テキスト]%>

TSEXPRの結果で、テキストを選択

式の結果が真ならば、成立テキストを、不成立ならば不成立テキストを選択する。 選択されたテキストは、さらに引数置換の評価を行うので、多重に条件を記述できる。

成立テキストの中では、「%:」「%>」は書けない。それぞれ、「%%:」「%%>」と書く必要がある。

不成立テキストの中では、「%>」は書けない。「%%>」と書く必要がある。

判定式の後の <の前に「#」を挟むと、成立テキスト/不成立テキストの評価は行わず、そのまま文字列としてテキストとして扱う。

%[tsexpr;

出力スイッチを制御

TSEXPRの結果が真ならば出力オン。偽ならば出力オフ。
TSEXPRは論理値を返さなければならない。また、出力スイッチはデフォルトではオンになっている。

出力スイッチをオフにしてもテキストの解析自体は行われるので、例えば、%(tsexpr) が書いてあれば式の評価は行われる。

%] と組み合わせて、if(...) xxxxx のように使用できる。入れ子にすることは出来ない。(範囲は処理系依存)

%[expr;xxxxxxx%]

%: %] と組み合わせて、if( .... ) xxxxx else yyyyy のように使用できる。入れ子にすることは出来ない。(範囲は処理系依存)

%[expr;xxxxx%:yyyyyy%]
%]

出力スイッチをオン

%!

出力スイッチをオフ

%:

出力スイッチを反転

%;

テキストを行末まで読み飛ばす

%*

テキストを以降すべて読み飛ばす。

%ztsexpr;

式によりテキストの行末までの呼び飛ばしを指示。

TSEXPRの結果が真ならばテキストを行末まで読み飛ばす。

TSEXPR の戻り値の型は論理型であること。

%Ztsexpr;

式によりテキストの以降全ての読み飛ばしを指示。

TSEXPRの結果が真ならば最後まで読み飛ばす。

TSEXPR の戻り値の型は論理型であること。

詰め合わせ指定

 詰め合わせ指定の書式は次の通り

[詰め合わせ方法[[.小数桁数]]]

詰め合わせ方法を書かなければ、文字列はそのまま出力に現れる。幅を省略するとデフォルトの値(現在はすべて 8 )。 小数桁数は小数指定したときのみ有効で省略すると 2 。

L左寄せ 左に寄せて、右側を半角スペースで補う。
R右寄せ 右に寄せて、左側を半角スペースで補う。
Zゼロ右寄せ 右に寄せて、左側を「0」で補う。
C中央寄せ 中央に寄せて、左右を半角スペースで補う。
I整数 符号付整数として扱い、右寄せする。
IZゼロ整数 符号付整数として扱い、右寄せする。左側の先頭に符号をつけて、左側を0で補う。
IC三桁区切り整数 符号付整数として扱い、三桁区切りコンマの形式に変換してから右寄せする。
IQ四桁区切り整数 符号付整数として扱い、4桁区切りコンマの形式に変換してから右寄せする。
N小数 符号付小数として扱い、右寄せする。左側の先頭に符号をつけて、左側を半角スペースで補う。
NZゼロ小数 符号付小数として扱い、左側を0で補う。一番左側には負号が書かれる。
NC三桁区切り小数 符号付小数として扱い、三桁区切りコンマの形式に変換してから右寄せする。
NQ四桁区切り小数 符号付小数として扱い、4桁区切りコンマの形式に変換してから右寄せする。
Q複引用符囲み 複引用符で囲む。文字列中の複引用符は二つ重ねて出力する。幅、小数桁数の指定は出来ない。
S単引用符囲み 単引用符で囲む。文字列中の単引用符は二つ重ねて出力する。幅、小数桁数の指定は出来ない。
B逆引用符囲み 逆引用符(`)で囲む。文字列中の逆引用符は二つ重ねて出力する。幅、小数桁数の指定は出来ない。

詰め合わせ方法の文字は小文字でも良い。

埋めこまれたTSEXPRについて

  1. SYS(num)関数は、対応する番号の引数を返す(%number;と同じ値)。
    アプリケーションによっては負の引数を与えると、さらに色々な値を返却するものもある。

埋めこまれたTSFXPRについて

  1. SYS(num)関数は、対応する番号の引数を返す(%number;と同じ値)。
    アプリケーションによっては負の引数を与えると、さらに色々な値を返却するものもある。