Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

はじめに

ここで説明するアプリケーション・プログラミング・インタフェース (API) を使用すると、プログラマは、ニーモニック空間の構文を使用して、文字ベースのターミナルでウィンドウ・インタフェースを構築できます。

このインタフェースには以下の特長があります。

  • ターミナルに依存しない — 世界中のユーザがさまざまなターミナルを使用するため、特定モデルの制御シーケンスの使用は効率的ではありません。DEC VT シリーズなどの ANSI ターミナルでも、世界共通ではありません。この API は、UNIX® の termcap や terminfo と類似したターミナル機能のデータベースに依存します。

  • 既存の NLS 機能との互換性 — 文字セット、$X/$Y アクション・テーブル、入出力変換テーブル。

  • 既存の出力バッファ方式との互換性 — ターミナル出力はバッファに蓄積され、READ コマンドや HANG コマンドなどの事前定義された状況でのみ行に送信されます。

  • 既存のウィンドウ API との互換性 — CharWin はニーモニック空間の構文に基づくもので、DTM および Ipsum API の上位集合です。Extensao で使用する構文は、Z コマンド (ZWINDOW) に依存し、現在の実装と直接互換性のあるソースではありません。ただし、この実装には Extensao のすべての機能があるため、新しい構文への変換が容易です。

  • コマンドでのみ有効になる機能 — 既定では、文字ウィンドウ機能は無効であり、メモリ使用状況または CPU サイクルの面でオーバーヘッドがありません。現在のターミナルの該当の機能を有効にするためにプログラマが適切なコマンドを発行する場合にのみ、リソースが割り当てられ、ターミナルの入出力操作がトラップされます。この機能はいつでも無効にすることもできます。

定義

文字ウィンドウ API を明確に理解するには、以下の概念が重要です。

ウインドウ

画面に表示される長方形の領域。任意の境界線 (任意のキャプション付き) で囲まれています。ウィンドウのオープンやクローズはコマンドで行う必要があります。ウィンドウがオープンになり、クライアント領域がクリアになると、境界線がオプションで描画され、カーソルが左上隅に配置されます。READ コマンドや WRITE コマンドは、クライアント領域に制限されています。ウィンドウをクローズすると、ウィンドウのオープン前にその領域に表示されていた画面の文字がリストアされます。

フレーム

READ および WRITE が制限される、ウィンドウ内の実際の領域。ウィンドウがオープンになると、フレームがクライアント領域全体を占めます。コマンド (/WLIM) では、ウィンドウ内のフレームのサイズを縮小できます。再度拡大できますが、元のクライアント領域よりも大きくすることはできません。

クライアント領域

ウィンドウの境界線内の長方形。ウィンドウに境界線がない場合、クライアント領域はウィンドウ全体になります。

属性

属性は、画面の文字に設定された状態フラグの 1 つで、HIGHLIGHT、UNDERLINE、REVERSE、および BLINK を制御します。ターミナルが古いタイプのもので、文字ごとに個別の属性バイトを保持していない場合 (例えば、属性が非表示の文字として保存されている場合)、この実装では属性を使用できません。

ターミナル機能

ターミナルの特性のセットであり、行数や列数、および各種制御シーケンスなどがあります。制御シーケンスでは、カーソルの配置や行末までの消去といった機能を実行します。カーソルの配置や画面のクリアのシーケンスは、この API に必要不可欠です。

z-order

ウィンドウが画面上に重なって表示されるシーケンス。最初は、ウィンドウがオープンした順序で表示されます。/WUSE コマンドを使用してこの順序を変更できます。z-order では、あるウィンドウがもう 1 つのウィンドウの上に重ねて表示されます (つまり、画面上の仮想 Z 軸の座標が大きい方のウィンドウが上に表示されます)。ただし、視覚的に重なり合うことはありません。

構文

構文を使用すれば、DTM、Ipsum MUMPS、Extensao SuperMUMPS で記述されたプログラムの移植が容易です。これはニーモニック空間の構文に基づくため、発行される最初のコマンドは USE になります。例えば、以下のコマンドではターミナル・デバイス 0 を使用して、現在のニーモニック空間として %CHARWIN ルーチンを有効にしています。

   USE 0::"^%CHARWIN" 

USE と 今後使用する WRITE / は、このルーチンで対応するラベルの DO に変換されます。

DTM から移行したユーザは、MUMPS.DVF の DTM コマンドとの互換性が高い、ニーモニックのネームスペース %XDTM を代わりに使用することも検討できます。例えば、以下のコマンドではターミナル・デバイス 0 を使用して、現在のニーモニック空間として %XDTM2 を有効にしています。

   USE 0::"^%XDTM2"

入力/出力の変換

文字ウィンドウ API では入力の変換は行われません。キーボードのマッピングが必要な場合は、NLS テーブルで実行する必要があります。

出力側も同様です。境界線の文字を除き、ウィンドウに記述されたテキストでは組み込み変換は行われません。ほとんどのユーザは、見栄えの良いウィンドウを作成するために複雑な NLS を扱う必要がないため、この機能は便宜上含まれます。"境界線マッピングを無効にする" ブーリアン・フラグ属性を設定して、この機能を無効にできます。次にユーザは、内部の境界線の文字コード ("境界線の文字とコード" を参照) から、NLS を使用した該当の外部表現へのマッピングを作成する必要があります。

FeedbackOpens in a new tab