TPARM 関数

構文

TPARM (terminfo.string, [arg1], [arg2], [arg3], [arg4], [arg5], 
[arg6], [arg7], [arg8] )

説明

TPARM 関数を使用すると、パラメーター化された terminfo ストリングを評価できます。

terminfo.string は、terminfo コンパイラー tic でコンパイルされる文字のストリングを表します。これらの端末設定は、特定の機能を実行するために端末へ送信する文字列のシーケンスを定義します。terminfo.string は、4 つの性能タイプ (数値、ブール、ストリング、またはパラメーター化されたストリング) の内の 1 つと評価されます。terminfo.string または 8 つの引数のいずれかが NULL 値に評価されると、TPARM 関数は正しく実行されずプログラムはランタイム・エラー・メッセージを出力して終了します。

数値の長さは、有効な数値を構成できる 5 文字までに制限されています。 負でない数値 0 から 32,767 までが使用できます。 特定の機能に関する値が適用されない場合、そのフィールドはブランクのままにされる必要があります。

ブール値の長さは、1 文字までに制限されています。文字 Y (大文字または小文字) は、指定された機能が存在することを示します。 Y 以外のすべての値は、指定された機能が存在しないことを示します。

ストリングの長さは、44 文字までに制限されています。 次のような特殊文字を入力できます。

¥E または ¥e
ESC 文字 (ASCII 27)
¥n または ¥l
LINEFEED 文字 (ASCII 10)
¥r
RETURN 文字 (ASCII 13)
¥t
TAB 文字 (ASCII 9)
¥b
BACKSPACE 文字 (ASCII 8)
¥f
フォーム・フィード文字 (ASCII 12)
¥s
スペース (ASCII 32)
^x
制御文字の表現 (ASCII 0 から 31 まで) 文字は大文字または小文字のどちらでもかまいません。 制御文字表現の一部は次のとおりです。
表現
制御文字
^A
^a
ASCII 1 (Ctrl-A)
ASCII 1 (Ctrl-A)
^@
ASCII 0
^[
ASCII 27 (Esc)
ASCII 28
^]
ASCII 29
^^
ASCII 30
^_
ASCII 31
^?
ASCII 127 (Del)
¥nnn
8 進数の値 nnn で ASCII 文字を表します。例えば、¥033 は、Esc 文字 (ASCII 27) です。
¥¥
「¥」文字を表します。
¥,
「,」文字を表します。
¥^
「^」文字を表します。

パラメーター化されたストリング機能、例えばカーソルのアドレス指定には、適切なフォーマットに値を含めるための特別なエンコードが使用されます。 パラメーターのメカニズムは、スタックと、スタックを操作するための複数のコマンドからなります。

表 1. パラメーターのメカニズム
コード 説明
%pn パラメーターの数値 n をスタックにプッシュします。1 から 8 のパラメーターの数値が使用でき、TPARM 関数の arg1 から arg8 で表されます。
%'c' 文字 c の ASCII 値がスタックへプッシュされます。
%[nnn] 10 進値 nnn がスタックの先頭にプッシュされます。
%d スタックの先頭にあるパラメーターをポップしてから、10 進値として出力します。
%nd スタックの先頭にあるパラメーターをポップして、フィールドに n 文字幅で 10 進値として出力します。
%0nd フィールドの充てんに 0 が使用される他は、%nd と同じです。
%c スタックの先頭が単一の ASCII 文字として取り出され、出力されます。
%s スタックの先頭がストリングとして取り出され、出力されます。

%+ %- %* %/

先頭の 2 個のエレメントがスタックからポップで取り出されて、加算、減算、乗算、または除算されます。 結果はスタックへプッシュされて戻されます。 商の端数は切り捨てられます。
%m スタックの 2 番目のエレメントが 1 つ目のエレメントのモジュロとされ、その結果がスタックへプッシュされます。
%& % | %^ 先頭 2 つのエレメントがスタックからポップで取り出されて、ビット演算 AND、OR、または XOR が実行されます。 結果はスタックへプッシュされます。
%= %< %> スタックの 2 番目のエレメントが 1 番目のエレメントと等しいか、より小さいか、またはより大きいかが調べられます。 比較が真であれば、スタックに 1 がプッシュされます。真でない場合は 0 がプッシュされます。
%! %! %~ スタックがポップされ、最初のエレメントの論理またはビット演算での NOT がスタックへプッシュされます。
%i 最初の 2 つのパラメーターに数値 1 が加算されます。 これは、カーソルのアドレスの値が 0 ではなく 1 から開始される端末の場合に便利です。
%Px スタックをポップして、結果を変数 x に入れます。x は、小文字 (a - z) です。
%gx 変数 x の値をスタックの先頭にプッシュします。

%? exp %t exp [%e exp] %;

「IF」を表す「%?」、「THEN] を表す「%t」、「ELSE」を表す「%e」、式を終了する「%;」で、if-then-else 式を形成します。 ELSE 式は省略可能です。 ELSE-IF 式も可能です。 例:
%? C1 %t B1 %e C2 %t B2 %e C3 %t B3 %e C4 %t B4 %e %
Cn は条件で、Bn は本体です。
%% パーセント記号 (%) が出力されます。

ストリングの任意の場所に、遅延時間をミリ秒単位で指定できます。 遅延は、$<nnn> で指定します。nnn には、希望する遅延時間をミリ秒数 (1000 分の 1 秒) で示す 10 進値を指定します。使用するボー・レートに合わせて、適切な数の遅延文字が出力されることになります。