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 文字までに制限されています。 次のような特殊文字を入力できます。
パラメーター化されたストリング機能、例えばカーソルのアドレス指定には、適切なフォーマットに値を含めるための特別なエンコードが使用されます。 パラメーターのメカニズムは、スタックと、スタックを操作するための複数のコマンドからなります。
| コード | 説明 |
|---|---|
| %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 式も可能です。 例:
Cn は条件で、Bn は本体です。 |
| %% | パーセント記号 (%) が出力されます。 |
ストリングの任意の場所に、遅延時間をミリ秒単位で指定できます。 遅延は、$<nnn> で指定します。nnn には、希望する遅延時間をミリ秒数 (1000 分の 1 秒) で示す 10 進値を指定します。使用するボー・レートに合わせて、適切な数の遅延文字が出力されることになります。