日本-日本語
日本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
日本語画面管理ライブラリ 利用者の手引き


目次 索引

第 3 章
日本語 SMG 入力操作

この章では,仮想キーボードからの入力を実行するために使用する日本語 SMG ルーチンについて説明します。仮想キーボードは通常,漢字ターミナルに対応づけられます。

日本語 SMG には,漢字ターミナルから入力を実行するための柔軟なルーチン群があります。入力ルーチンは出力ルーチンと組み合わせて使用でき,また,単独で使用することも可能です。仮想キーボードと呼ぶ入力ソースを設定するには, SMG$CREATE_VIRTUAL_KEYBOARD ルーチンを使用します。仮想キーボードを削除する場合には, SMG$DELETE_VIRTUAL_KEYBOARD ルーチンを使用します。なおペーストボードを併用するときには, SMG$CREATE_VIRTUAL_KEYBOARD の前に必ず SMG$CREATE_PASTE_BOARD を呼び出さなければなりません。

  注意
日本語 SMG は RMS ファイルを入力装置としてサポートしません。

ペーストボードが出力操作のための論理構造であるのと同様に,仮想キーボードは入力操作のための論理構造です。仮想キーボードを使用すれば,装置からの独立性を実現できます。日本語 SMG 入力ルーチンを使用する場合には,使用する漢字ターミナルのタイプを考慮する必要はありません。

たとえば,ユーザ・プログラムは,各ターミナルがどの行終了文字を使用するかを考慮する必要がありません。日本語 SMG ルーチンは異なる終了文字を統一された機能コードに変換します ( 終了文字コードについての詳しい説明は, 第 3.5 節 を参照してください )。また,ファンクション・キー/キーパッド・キーを処理する場合にも,仮想キーボードは重要です。

3.1 仮想キーボードからのデータの取り込み

データは以下の4種類の方法で仮想キーボードから取り込むことができます。

  • SMG$READ_COMPOSED_LINE
    通常のキーストロークの他,キーパッド・キーとファンクション・キーに対応する定義済み文字列で構成される行を読み込みます。このルーチンは,単一キー・コマンド機能を提供することにより,コマンド向きユーティリティのためのインターフェイスを容易にコーディングする機能を備えています。

  • SMG$READ_KEYSTROKE
    キーボードから入力された 1 つのキーストロークを読み込みます。このルーチンは,英数字キーの他,ファンクション・キーとキーパッド・キーも読み込みます。

  • SMG$READ_STRING
    文字と区切り文字で構成される文字列を読み込みます。この柔軟なルーチンは OpenVMS ターミナル・ドライバの多くの機能をアクセスできます。

  • SMG$READ_VERIFY
    文字列を読み込み,その文字列をユーザが指定したピクチャ文字列と比較します。

どの読み込み操作も, SMG$CANCEL_INPUT ルーチンを呼び出すことにより強制終了できます。

SMG$READ_COMPOSED_LINE,SMG$READ_STRING,SMG$READ_VERIFY ルーチンは,入力される文章に対する文字集合を設定するために,省略可能な引数 ( character-set )を持っています。
この引数を省略した場合は,SMG$DEFAULT_CHARACTER_SET 論理名が用いられます。 SMG$DEFAULT_CHARACTER_SET 論理名の有効な定義については 第 2.2.14 項表 2-2 を参照してください。この論理名が無効な文字集合を指していたり,定義されていなかった場合には,文字集合は未定義になります。

日本語 SMG の入力ルーチンはそのルーチン自体でかな漢字変換を行えます。ユーザはアプリケーションの中から日本語 OpenVMS の日本語ライブラリ中に入っているかな漢字変換ルーチンを呼び出す必要はありません。かな漢字変換キーの設定方法については『ユーザ・キー定義 利用者の手引き』を参照してください。

3.2 仮想キーボード属性の設定と検索

ペーストボード属性に関する情報を検索したり,ペーストボード属性を設定する場合と同様に,日本語 SMG には仮想キーボードの属性を検索および設定するためのルーチンがあります。

SMG$GET_KEYBOARD_ATTRIBUTES ルーチンを使用すれば,仮想キーボードに関して指定した情報を検索できます。この情報はキーボード情報テーブル(KIT)と呼ぶユーザ指定領域に格納されます。戻される情報は次のとおりです。

  • 現在の装置属性

  • 装置クラス

  • 再呼び出しバッファのサイズ

  • 物理装置タイプ

  • 先打ちバッファの最初の文字

  • 漢字ターミナルの幅

  • 先打ちバッファ内の文字数

SMG$SET_KEYPAD_MODE ルーチンを使用すれば,漢字ターミナルの数値キーパッドを数値モードまたはアプリケーション・モードに設定できます。アプリケーション・モードでは,数値キーパッド・キーはファンクション・キーとして解釈され,終了文字として使用できます。数値モードでは,これらのキーはメイン・キーボードの対応するキーと等しく取り扱われます。ターミナルはアプリケーション・モードをサポートしていなければなりません。サポートしていない場合には,SMG$SET_KEYPAD_MODE ルーチンを呼び出しても,その操作は異常終了します。

3.3 キーパッド・キーの使用による行の作成

SMG$READ_STRING ルーチンが提供する機能の他に,キーパッド・キーによる行作成機能を使用すれば,行単位のコマンド ( たとえば,Command Definition ユーティリティを使用するユーティリティなど ) を含むアプリケーションにとって強力で柔軟なツールになります ( 詳しい説明は,『OpenVMS Command Definition, Librarian, and Message Utilities Manual』を参照してください )。

行作成機能を使用すれば,特定のキー(この後の説明を参照)を文字列に等しいものとして定義できます。 1 行を入力した後,これらのキーのいずれかを押すと,そのキーに対応する文字列 ( 同値文字列 ) が,戻されるコマンド文字列に挿入されます。たとえば,アプリケーションで [PF2]キーを "HELP" という文字列と等しく定義した場合には, [PF2]キーを押すと,そのコマンドはアプリケーションに戻されます。

また,同値文字列をエコー表示することも指定できます。この場合には,"HELP"という文字列がエコー表示されます。キーパッド・キーを認識する操作と同値文字列を挿入する操作は, SMG$READ_COMPOSED_LINE ルーチンが自動的に処理します。アプリケーションは,戻された行をユーザが行全体を入力したかのように取り扱います。

キー定義はキー定義テーブルに登録されます。このテーブルは SMG$CREATE_KEY_TABLE ルーチンを呼び出すことにより作成されます。

キー定義は SMG$ADD_KEY_DEF ルーチンを呼び出すことによりテーブルに追加でき, SMG$DELETE_KEY_DEF ルーチンを呼び出すことによりテーブルから削除できます。また,SMG$DEFINE_KEY ルーチンと SMG$LOAD_KEY_DEFS ルーチンを呼び出すことにより,キー定義を追加することも可能です。これらのルーチンは DCL の DEFINE/KEY コマンド ( またはこれらのコマンドを登録したファイル ) を受け付けます。詳しい説明は,これらのルーチンの説明を参照してください。また,DEFINE/KEY コマンドについては,『OpenVMS DCL ディクショナリ』を参照してください。

定義可能なキーは, 表 3-1 に示したファンクション・キーとキーパッド・キー,制御キー・シーケンス([Ctrl/A][Ctrl/Z]ただし, [Ctrl/M]([RETURN]) を除く)であり,行編集が許可されていない場合は行編集キーも含まれます。

キー定義には複数の属性が割り当てられます。

  • TERMINATE 属性は,このキーが押されたときに,入力行を終了するかどうかを指定します。

  • NOTERMINATE 属性は,追加文字と追加キーストロークを入力できることを指定します。省略時の設定は TERMINATE です。

  • ECHO 属性は,キーが押されたときに,同値文字列をエコー表示するかどうかを指定します。省略時の設定は ECHO です。

  • PROTECT 属性は,キーを定義した後,そのキー定義を変更または削除できるかどうかを指定します。省略時の設定は NOPROTECT です。

この他に,LOCK_STATE 属性,IF_STATE 属性,および STATE 属性があります。これらの属性については,この後の節で説明します。

3.4 状態

各キーには,現在の状態値に応じて多くの定義を割り当てることができます。状態はキーの意味を判断するために使用されます。たとえば,状態を "GOLD" に設定するために [PF1] を定義し, IF_STATE="GOLD" 状態の[PF2]を "HELP *" として定義した場合には, [PF1][PF2]を押した結果, "HELP *" がコマンド行として戻されます。この場合,[PF1]の定義には同値文字列が存在せず, NOTERMINATE 属性を指定しなければなりません。

状態名は最大 31 文字の英数字で構成される文字列であり,ドル記号($)とアンダースコア (_) も使用できます。 1 行が通常のキーストロークと同値文字列で構成される場合には, SMG$READ_COMPOSED_LINE ルーチンは 現在の状態名 と呼ぶ文字列を管理します。最初のキーが押される前の現在の状態は "DEFAULT" です。 STATE 属性に対して値が指定されている定義を持つキーを押した場合には,現在の状態は指定された状態に変更されます。 LOCK_STATE 属性を指定しない限り,次の定義済みキーを押した後,状態名は "DEFAULT" に戻ります。

3.5 終了文字

終了文字は,仮想キーボードからデータの転送を終了します。終了文字はキャリッジ・リターンや [Ctrl/Z] などの1文字,あるいはキーボードのキーを押すことにより生成される文字シーケンス ( エスケープ・シーケンス ),あるいは時間切れやバッファの満杯などの条件のいずれでもかまいません。

終了文字は仮想キーボードから読み込まれるデータの一部ではありません。終了文字は独立した引数を使用して,整数値 ( 符号なしワード ) として呼び出しプログラムに戻されます。単一文字終了文字の場合には,値は終了文字の 8 ビット・コードです。単一文字終了文字コードは 0 〜 255 の範囲です。

文字シーケンス終了文字は装置から独立した形式で戻されます。これらのコードは SMG$K_TRM_keyname の形式です ( たとえば,SMG$K_TRM_DELETE )。 VT220 ( および VT200 と互換性のある ) 漢字ターミナルの可能な各ファンクション・キーに対して,固有のコードが割り当てられています。他の漢字ターミナルのキー・コードは, VT220 の対応するキーのコードを使用して戻されます。したがって,アプリケーション・プログラムは使用する漢字ターミナルのタイプを認識する必要がありません。日本語 SMG ルーチンは異なる終了文字シーケンスを統一された機能コードに自動的に変換します。

条件で終了する入力操作は,SMG$K_TRM_CANCELLED,SMG$K_TRM_TIMEOUT, SMG$K_TRM_BUFFER_FULL,SMG$K_TRM_UNKNOWN という終了文字コードによって示されます。

SMG$READ_STRING ルーチンと SMG$READ_VERIFY ルーチンを呼び出す場合には,省略時の単一文字終了文字は 0 〜 31 の範囲のすべての文字ですが,バックスペース(8),水平タブ(9),ライン・フィード(10),垂直タブ(11),およびフォーム・フィード(12)を除きます。これらの文字は OpenVMS ターミナル・ドライバに対して設定されている省略時の終了文字です。しかし,8 ビット文字コードはすべて終了文字として使用できます。終了文字集合は SMG$READ_STRING ルーチンまたは SMG$READ_VERIFY ルーチンのそれぞれの呼び出しごとに変更できます。 SMG$READ_COMPOSED_LINE ルーチンを呼び出す場合には,省略時の単一文字終了文字はキャリッジ・リターン(13)と[CTRL/Z] だけです。 SMG$READ_COMPOSED_LINE ルーチンに対して終了文字セットを変更する場合には,キー定義機能を使用します。詳しい説明は, 第 3.3 節 の行作成の説明を参照してください。

SMG$NAME_TO_KEYCODE ルーチンは,キーボードのキーの名前を対応する終了文字コードに 変換します。一方,SMG$KEYCODE_TO_NAME ルーチンは終了文字コードをキーボードのキ ーの対応する名前に変換します。

表 3-1 は,単一文字ではない各終了文字の終了文字名または状態を示しています。この表には,日本語 SMG 入力ルーチンがサポートする各ターミナル・タイプの各終了文字に対して,そのコードとキーも示されています。

表 3-1 終了文字の値
キー名 VT200 および VT300 シリーズ VT100 VT52
キーパッド・キー
DELETE SMG$K_TRM_DELETE < X| DELETE DEL
PF1 SMG$K_TRM_PF1 PF1 PF1 Blue
PF2 SMG$K_TRM_PF2 PF2 PF2 Red
PF3 SMG$K_TRM_PF3 PF3 PF3 Black
PF4 SMG$K_TRM_PF4 PF4 PF4  
KP0 SMG$K_TRM_KP0 1 0 0 0
KP1 SMG$K_TRM_KP1 1 1 1 1
KP2 SMG$K_TRM_KP2 1 2 2 2
KP3 SMG$K_TRM_KP3 1 3 3 3
KP4 SMG$K_TRM_KP4 1 4 4 4
KP5 SMG$K_TRM_KP5 1 5 5 5
KP6 SMG$K_TRM_KP6 1 6 6 6
KP7 SMG$K_TRM_KP7 1 7 7 7
KP8 SMG$K_TRM_KP8 1 8 8 8
KP9 SMG$K_TRM_KP9 1 9 9 9
ENTER SMG$K_TRM_ENTER 2 ENTER ENTER ENTER
MINUS SMG$K_TRM_MINUS 1 -- --  
COMMA SMG$K_TRM_COMMA 1 , ,  
PERIOD SMG$K_TRM_PERIOD 1 . .  
カーソル移動キー
UP SMG$K_TRM_UP 上向き矢印 上向き矢印 上向き矢印
DOWN SMG$K_TRM_DOWN 下向き矢印 下向き矢印 下向き矢印
LEFT SMG$K_TRM_LEFT 左向き矢印 左向き矢印 左向き矢印
RIGHT SMG$K_TRM_RIGHT 右向き矢印 右向き矢印 右向き矢印
ファンクション・キー
F6 SMG$K_TRM_F6 F6    
F7 SMG$K_TRM_F7 F7    
F8 SMG$K_TRM_F8 F8    
F9 SMG$K_TRM_F9 F9    
F10 SMG$K_TRM_F10 F10    
F11 SMG$K_TRM_F11 F11    
F12 SMG$K_TRM_F12 F12    
F13 SMG$K_TRM_F13 F13    
F14 SMG$K_TRM_F14 F14    
HELP SMG$K_TRM_HELP 3 HELP    
DO SMG$K_TRM_DO 3 DO    
F17 SMG$K_TRM_F17 F17    
F18 SMG$K_TRM_F18 F18    
F19 SMG$K_TRM_F19 F19    
F20 SMG$K_TRM_F20 F20    
編集キー
FIND SMG$K_TRM_FIND Find    
INSERT_HERE SMG$K_TRM_INSERT_HERE Insert Here    
REMOVE SMG$K_TRM_REMOVE Remove    
SELECT SMG$K_TRM_SELECT Select    
PREV_SCREEN SMG$K_TRM_PREV_SCREEN Prev Screen  
編集キー
NEXT_SCREEN SMG$K_TRM_NEXT_SCREEN Next Screen  
条件        
CANCELLED SMG$K_TRM_CANCELLED      
TIMEOUT SMG$K_TRM_TIMEOUT      
BUFFER_FULL SMG$K_TRM_BUFFER_FULL      
UNKNOWN SMG$K_TRM_UNKNOWN 4      

1これらはメイン・キーボードではなく,数値キーパッドのキーです。これらの値は,ターミナル・キーパッドがアプリケーション・モードの場合にだけ使用されます。キーパッドが数値モードの場合には,キーはメイン・キーボードの対応するキーと同じです。詳しくは,SMG$SET_KEYPAD_MODE ルーチンの説明を参照してください。
2キーパッドが数値モードの場合には,ENTER はキャリッジ・リターンと同じです。詳しくは,SMG$SET_KEYPAD_MODE ルーチンの説明を参照してください。
3HELP と DO は VT220 キーボードの F15 および F16 と同じです。
4VT200 および認識されない終了文字を受け付けた場合には,値は SMG$K_TRM_UNKNOWN になります。


目次 索引

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