日本-日本語 |
|
|
|
OpenVMS マニュアル |
|
日本語 OpenVMS
|
目次 | 索引 |
この章では,漢字ターミナルから独立した機能を実行する,実行時ライブラリ・ルーチンについて説明します。日本語 SMG のもっとも重要な要素は,入出力を実際に実行する物理装置とユーザ・プログラムが完全に分離されるということです。ユーザ・プログラムは物理画面に直接書き込みを実行するのではなく, 仮想ディスプレイ に書き込みます。同様に,ユーザ・プログラムは物理キーボードから直接入力を実行するのではなく, 仮想キーボード から入力を実行します ( 仮想ディスプレイと仮想キーボードは論理的なものであり,その使い方についてはこの後の節で詳しく説明します )。このように,仮想操作を物理操作から分離することにより,入出力をターミナルから独立させることが可能になります。
この後に示す日本語 SMG ルーチンは,ビデオ画面上で複雑なイメージを設計し,構成し,管理するのに役立ちます。これらのルーチンは,通常は,VT100 クラスの漢字ターミナルで実行される操作タイプに対応しており,また,日本語 SMG がハードウェアで実現されていない漢字ターミナルで,その機能をソフトウェアでエミュレーションできるようにもします。各ルーチンはその機能に従って次の 3 つに分類されています。
表 1-1 は,弊社製品以外の漢字ターミナルをサポートするルーチンです。これらのルーチンについては, 第 5 章 を参照してください。
弊社以外の漢字ターミナルをサポートするルーチン | |
---|---|
SMG$DEL_TERM_TABLE | |
SMG$GET_NUMERIC_DATA | |
SMG$GET_TERM_DATA | |
SMG$INIT_TERM_TABLE | |
SMG$INIT_TERM_TABLE_BY_TYPE |
表 1-2 は,日本語 SMG 出力ルーチンを示しています。これらのルーチンについては, 第 2 章 を参照してください。
出力ルーチン | |
---|---|
SMG$BEGIN_PASTEBOARD_UPDATE | |
SMG$CHANGE_PBD_CHARACTERISTICS | |
SMG$CHANGE_RENDITION | |
SMG$CHANGE_VIEWPORT | |
SMG$CHANGE_VIRTUAL_DISPLAY | |
SMG$CHECK_FOR_OCCLUSION | |
SMG$CONTROL_MODE | |
SMG$COPY_VIRTUAL_DISPLAY | |
SMG$CREATE_MENU | |
SMG$CREATE_PASTEBOARD | |
SMG$CREATE_SUBPROCESS | |
SMG$CREATE_VIEWPORT | |
SMG$CREATE_VIRTUAL_DISPLAY | |
SMG$CURSOR_COLUMN | |
SMG$CURSOR_ROW | |
SMG$DELETE_CHARS | |
SMG$DELETE_LINE | |
SMG$DELETE_MENU | |
SMG$DELETE_PASTEBOARD | |
SMG$DELETE_SUBPROCESS | |
SMG$DELETE_VIEWPORT | |
SMG$DELETE_VIRTUAL_DISPLAY | |
SMG$DISABLE_BROADCAST_TRAPPING | |
SMG$DISABLE_UNSOLICITED_INPUT | |
SMG$DRAW_CHAR | |
SMG$DRAW_LINE | |
SMG$DRAW_RECTANGLE | |
SMG$ENABLE_UNSOLICITED_INPUT | |
SMG$END_PASTEBOARD_UPDATE | |
SMG$ERASE_CHARS | |
SMG$ERASE_COLUMN | |
SMG$ERASE_DISPLAY | |
SMG$ERASE_LINE | |
SMG$ERASE_PASTEBOARD | |
SMG$EXECUTE_COMMAND | |
SMG$FIND_CURSOR_DISPLAY | |
SMG$FLUSH_BUFFER | |
SMG$GET_BROADCAST_MESSAGE | |
SMG$GET_DISPLAY_ATTR | |
SMG$GET_PASTEBOARD_ATTRIBUTES | |
SMG$GET_PASTING_INFO | |
SMG$GET_VIEWPORT_CHAR | |
SMG$HOME_CURSOR | |
SMG$INSERT_CHARS | |
SMG$INSERT_LINE | |
SMG$LABEL_BORDER | |
SMG$LIST_PASTING_ORDER | |
SMG$LOAD_VIRTUAL_DISPLAY | |
SMG$MOVE_TEXT | |
SMG$MOVE_VIRTUAL_DISPLAY | |
SMG$PASTE_VIRTUAL_DISPLAY | |
SMG$POP_VIRTUAL_DISPLAY | |
SMG$PUT_CHARS | |
SMG$PUT_CHARS_HIGHWIDE | |
SMG$PUT_CHARS_MULTI | |
SMG$PUT_CHARS_WIDE | |
SMG$PUT_HELP_TEXT | |
SMG$PUT_LINE | |
SMG$PUT_LINE_HIGHWIDE | |
SMG$PUT_LINE_MULTI | |
SMG$PUT_LINE_WIDE | |
SMG$PUT_STATUS_LINE | |
SMG$READ_FROM_DISPLAY | |
SMG$REMOVE_LINE | |
SMG$REPAINT_SCREEN | |
SMG$REPASTE_VIRTUAL_DISPLAY | |
SMG$RESTORE_PHYSICAL_SCREEN | |
SMG$RETURN_CURSOR_POS | |
SMG$RING_BELL | |
SMG$SAVE_PHYSICAL_SCREEN | |
SMG$SAVE_VIRTUAL_DISPLAY | |
SMG$SCROLL_DISPLAY_AREA | |
SMG$SCROLL_VIEWPORT | |
SMG$SELECT_FROM_MENU | |
SMG$SET_BROADCAST_TRAPPING | |
SMG$SET_CURSOR_ABS | |
SMG$SET_CURSOR_MODE | |
SMG$SET_CURSOR_REL | |
SMG$SET_DISPLAY_SCROLL_REGION | |
SMG$SET_OUT_OF_BAND_ASTS | |
SMG$SET_PHYSICAL_CURSOR | |
SMG$SET_TERM_CHARACTERISTICS | |
SMG$UNPASTE_VIRTUAL_DISPLAY |
表 1-3 は, 日本語 SMG 入力ルーチンをまとめています。これらのルーチンについては, 第 3 章 を参照してください。
入力ルーチン | |
---|---|
SMG$ADD_KEY_DEF | |
SMG$CANCEL_INPUT | |
SMG$CREATE_KEY_TABLE | |
SMG$CREATE_VIRTUAL_KEYBOARD | |
SMG$DEFINE_KEY | |
SMG$DELETE_KEY_DEF | |
SMG$DELETE_VIRTUAL_KEYBOARD | |
SMG$GET_KEY_DEF | |
SMG$GET_KEYBOARD_ATTRIBUTES | |
SMG$KEYCODE_TO_NAME | |
SMG$LIST_KEY_DEFS | |
SMG$LOAD_KEY_DEFS | |
SMG$NAME_TO_KEYCODE | |
SMG$READ_COMPOSED_LINE | |
SMG$READ_KEYSTROKE | |
SMG$READ_STRING | |
SMG$READ_VERIFY | |
SMG$REPLACE_INPUT_LINE | |
SMG$RETURN_INPUT_LINE | |
SMG$SET_DEFAULT_STATE | |
SMG$SET_KEYPAD_MODE |
日本語 SMG は,次に示す 2 つの重要なサービスを提供します。
注意 日本語 SMG は,漢字ターミナルが完全に日本語 SMG の管理下にあることを仮定しています。したがって,アプリケーションは,日本語 SMG ルーチンと日本語 DIGITAL GKS や日本語 FMS のような画面管理用製品を同時に呼ぶべきではありません。 |
この後の節では,画面管理の基本要素について説明します。これらの要素はペーストボード,仮想ディスプレイ,ビューポート,および仮想キーボードです。
1.1 ペーストボード
ペーストボードは,漢字ターミナルの画面に対して出力操作を実行するための論理構造です。ペーストボードは,仮想ディスプレイを配置し,操作するための2次元の領域として考えることができます。ペーストボードは常に物理装置に対応しますが,ペーストボードのサイズは物理画面より大きくても,小さくてもかまいません。各出力装置に対し,ペーストボードは1つだけ設定できます。
注意 日本語SMGは,RMSファイルとプリンタを出力装置としてサポートしません。 |
ペーストボードを作成するには,SMG$CREATE_PASTEBOARD ルーチンを呼び出し,引数としてペーストボードに対応づける物理装置を指定します。 SMG$CREATE_PASTEBOARD ルーチンは,固有のペーストボード識別子 ( pasteboard-id ) を返します。この情報は,後続のルーチン呼び出しでペーストボード識別子が必要なときに使用できます。
たとえば,仮想ディスプレイをペーストする物理ターミナル画面を指定する場合には, pasteboard-id 引数を使用します。 SMG$CREATE_PASTEBOARD ルーチンは出力引数として,対応する装置で使用できる行数とカラム数も指定します。この情報を使用すれば,物理画面のサイズで仮想ディスプレイを作成できます (仮想ディスプレイについては,次の節で説明します)。
ペーストボードは, 1 つ以上の仮想ディスプレイの相対的な位置を指定するための論理座標系である,と考えると便利です ( ペーストボード自体には物理的な境界はありませんが,物理画面には物理的な境界があります )。 図 1-1 は,ペーストボード座標系を示しています。
原点 ( セル位置 1,1 ) は物理画面の左上の角に対応します。行番号とカラム番号はこの原点から始まります。たとえば,VT200 シリーズ・ターミナルの場合には,24 行× 80カラムであり,ペーストボード座標系の最初の 24 行と最初の 80 カラムが物理画面にマップされます。仮想ディスプレイはこの座標系のどこにでも配置でき,物理画面に対応する象限に制限されません。したがって,ペーストするときに ( つまり,ペーストボードに配置するときに ),仮想ディスプレイが物理画面上に表示されなかったり,あるいは部分的にしか表示されないことがあります。
図 1-1 ペーストボード座標系
ペーストボードを削除する ( つまり,特定の装置から切り離す ) には, SMG$DELETE_PASTEBOARD ルーチンを使用します。ペーストボードを削除すると,このペーストボードにペーストされたすべての仮想ディスプレイはアンペーストされます。
ペーストボードを作成した後,SMG$GET_PASTEBOARD_ATTRIBUTES ルーチン を呼び出すことにより,そのペーストボードの属性(特にそのサイズ)を調べることができます。ペーストボードの属性を変更するには,SMG$CHANGE_PBD_CHARACTERISTICS ルーチンを使用します。ただし,属性を変更できるのは,対応する物理装置がその属性の変更を認めている場合に限ります。たとえば,装置が VT100 の場合には,ペーストボードの幅を 80 カラムから 132 カラムに変更できます。
ペーストボードを作成するときに,日本語 SMG は,画面をクリアします。しかし,画面をそのまま保存することを要求することもできます。さらに,SMG$ERASE_PASTEBOARD ルーチンを使用すれば,画面を消去することを要求できます。
1.2 仮想ディスプレイ
仮想ディスプレイはターミナル画面の中の長方形の部分であり,プログラムはルーチン呼び出しを使用して,その領域にデータを書き込みます。仮想ディスプレイは日本語 SMG の中心的な部分です。画面に配置するイメージを作成する場合には,物理画面ではなく,仮想ディスプレイを基準にしてイメージを考慮しなければなりません。このように仮想ディスプレイを物理画面と切り離すことにより,メイン・プログラムは仮想ディスプレイの位置を変更でき,仮想ディスプレイに書き込むサブルーチンが物理画面でのディスプレイの位置を考慮する必要がないようにしています。
仮想ディスプレイがペーストボードに対応づけられている場合には,仮想ディスプレイはペーストボードに ペースト されていると言います。ディスプレイをペーストボードから削除することを, アンペースト と言います。仮想ディスプレイがペーストボードにペーストされていない限り,その仮想ディスプレイは表示されません ( 仮想ディスプレイのペーストについての詳しい説明は, 第 2.1.1 項 を参照してください )。
プログラムは仮想ディスプレイをいくつでも作成し,管理できます ( 仮想ディスプレイの数は,使用できる仮想アドレス空間によってのみ制限されます )。 1 つの仮想ディスプレイを一度に複数のペーストボードにペーストできます。したがって,プログラムは仮想ディスプレイだけを管理すれば十分です。仮想ディスプレイが変更された場合には,その変更結果は,ディスプレイがペーストされている各ペーストボード ( およびそれに対応するターミナル画面 ) で自動的に反映されます。
仮想ディスプレイを作成するには,SMG$CREATE_VIRTUAL_DISPLAY ルーチンを使用します。このルーチンを呼び出す場合には,仮想ディスプレイの行数とカラム数も指定しなければなりません。プログラムはまた,ディスプレイに適用される特定のディスプレイ属性とビデオ属性も指定できます。
SMG$CREATE_VIRTUAL_DISPLAY ルーチンは固有の仮想ディスプレイ識別子 ( display-id )を返します。ディスプレイを変更する後続のルーチン呼び出しで仮想ディスプレイを識別する場合には,この display-id 引数を使用します。
プログラムやサブルーチンは SMG$GET_DISPLAY_ATTR ルーチンを呼び出すことにより,仮想ディスプレイの属性とサイズを判断できます。複数の仮想ディスプレイをペーストボードにペーストしている場合には, SMG$LIST_PASTING_ORDER ルーチンを使用することにより,仮想ディスプレイをペーストした順序を判断できます。
他の属性が指定されていない場合には,省略時のビデオ属性が出力に適用されます。 レンディション(属性) は,オンまたはオフに設定できるビデオ属性です。このようなビデオ属性としては,点滅表示,高輝度表示,反転表示,下線付きテキストがあります。ディスプレイ属性は,ディスプレイが次の操作を実行するかどうかを指定する属性です。
仮想ディスプレイを指定するときに指定したビデオ属性とディスプレイ属性は,後で変更できます。また,SMG$CHANGE_VIRTUAL_DISPLAY ルーチンを使用すれば,ビテオ属性とディスプレイ属性をどちらも変更できます。
たとえば,SMG$CHANGE_VIRTUAL_DISPLAY ルーチンを使用すれば,仮想ディスプレイのサイズを変更できます。仮想ディスプレイのサイズを変更する場合には,そのディスプレイ内のデータは,サイズを変更した後のディスプレイにコピーされます。つまり,現在の内容は ( 1 行目,1 カラム目から順に ) サイズを変更した新しいディスプレイに格納できるだけ保存されます。
仮想ディスプレイを削除するには, SMG$DELETE_VIRTUAL_DISPLAY ルーチンを使用します。削除操作についての詳しい説明は, 第 2.1.5 項 を参照してください。
目次 | 索引 |
|