日本-日本語
日本HPホーム 製品 & サービス OpenVMS製品情報
≫  お問い合わせ


OpenVMS マニュアル


 

OpenVMS ドキュメント
ライブラリ

タイトルページ
目次
まえがき
第 1 部:概論
第 1 章:日本語SMG (SMG$)の概要
第 2 章:日本語 SMG の出力操作
第 3 章:日本語 SMG 入力操作
第 4 章:日本語 SMG の高度な機能
第 5 章:フォーリン・ターミナルのサポート
第 6 章:日本語 SMG を使用したプログラム開発
第 7 章:日本語 SMG ルーチンの呼び出しの例
第 2 部:リファレンス・セクション
第 8 章:日本語 SMG リファレンス
コマンド一覧
索引
PDF
OpenVMS ホーム
日本語 OpenVMS

日本語 OpenVMS
日本語画面管理ライブラリ 利用者の手引き


目次 索引

第 1 章
日本語SMG (SMG$)の概要

この章では,漢字ターミナルから独立した機能を実行する,実行時ライブラリ・ルーチンについて説明します。日本語 SMG のもっとも重要な要素は,入出力を実際に実行する物理装置とユーザ・プログラムが完全に分離されるということです。ユーザ・プログラムは物理画面に直接書き込みを実行するのではなく, 仮想ディスプレイ に書き込みます。同様に,ユーザ・プログラムは物理キーボードから直接入力を実行するのではなく, 仮想キーボード から入力を実行します ( 仮想ディスプレイと仮想キーボードは論理的なものであり,その使い方についてはこの後の節で詳しく説明します )。このように,仮想操作を物理操作から分離することにより,入出力をターミナルから独立させることが可能になります。

この後に示す日本語 SMG ルーチンは,ビデオ画面上で複雑なイメージを設計し,構成し,管理するのに役立ちます。これらのルーチンは,通常は,VT100 クラスの漢字ターミナルで実行される操作タイプに対応しており,また,日本語 SMG がハードウェアで実現されていない漢字ターミナルで,その機能をソフトウェアでエミュレーションできるようにもします。各ルーチンはその機能に従って次の 3 つに分類されています。

  • 弊社製品以外の漢字ターミナルをサポートするルーチン

  • 日本語 SMG 入力ルーチン

  • 日本語 SMG 出力ルーチン

表 1-1 は,弊社製品以外の漢字ターミナルをサポートするルーチンです。これらのルーチンについては, 第 5 章 を参照してください。

表 1-1 弊社以外の漢字ターミナルをサポートするルーチン
弊社以外の漢字ターミナルをサポートするルーチン
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 章 を参照してください。

表 1-2 日本語 SMG 出力ルーチン
出力ルーチン
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 章 を参照してください。

表 1-3 日本語 SMG 入力ルーチン
入力ルーチン
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 ルーチンは,使用しているキーボードのタイプを考慮せずに,キーボードから入力を実行できるように,漢字ターミナルから独立した入力方法も提供します。

      注意
    日本語 SMG は,漢字ターミナルが完全に日本語 SMG の管理下にあることを仮定しています。したがって,アプリケーションは,日本語 SMG ルーチンと日本語 DIGITAL GKS や日本語 FMS のような画面管理用製品を同時に呼ぶべきではありません。

  • イメージ構成の容易性
    日本語 SMG ルーチンは,画面上で複雑なイメージを構成するのに役立ちます。たとえば,画面の一部からユーザ入力を要求し,結果を画面の別の部分に表示し,さらに画面の別の部分に状態情報を表示できます。通常,これらのいずれかの領域から読み込むルーチンやこれらの領域に書き込むルーチンは,他の領域が存在するかどうかを確認しなければなりません。これらの情報を知らなければ,行情報とカラム情報を使用して,画面の適切な部分に情報を書き込んだり,画面の適切な部分から情報を読み込むことができません。日本語 SMG ルーチンを使用すれば,各ルーチンは領域の位置とは無関係に,画面上の特定の領域に書き込むことができます。行とカラムに対する参照は,ルーチンが指定する画面の領域にだけ関係します。

この後の節では,画面管理の基本要素について説明します。これらの要素はペーストボード,仮想ディスプレイ,ビューポート,および仮想キーボードです。

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 項 を参照してください。


目次 索引

© 2012 Hewlett-Packard Development Company, L.P.