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


目次 索引




Read a Single Character ルーチンは,キーストロークを読み込み,そのキーストロークの終了文字コードを戻します。

形式

SMG$READ_KEYSTROKE keyboard-id ,word-terminator-code [,prompt-string] [,timeout] [,display-id] [,rendition-set] [,rendition-complement]


戻り値



OpenVMS 用法 cond_value
データ型 longword (unsigned)
アクセス write only
受け渡し方 by value



引数



keyboard-id

OpenVMS 用法 identifier
データ型 longword (unsigned)
アクセス read only
受け渡し方 by reference


キーボード識別子。keyboard-id 引数は,キーストロークが読み込まれる仮想キーボードの識別子を格納した符号なしロングワードです。

この引数は SMG$CREATE_VIRTUAL_KEYBOARD ルーチンによって与えられます。

word-terminator-code

OpenVMS 用法 word_unsigned
データ型 word (unsigned)
アクセス write only
受け渡し方 by reference


キー終了文字コード。word-terminator-code 引数は,どの文字またはどのキーが読み込み操作を終了したかを示すコードが書き込まれる符号なしワードです。キー終了文字コードは SMG$K_TRM_keyname の形式です。キー名は 第 3 章表 3-1 に示すとおりです。

prompt-string

OpenVMS 用法 char_string
データ型 character string
アクセス read only
受け渡し方 by descriptor


プロンプト文字列。prompt-string 引数は省略可能な文字列であり,読み込み操作に対するプロンプトとして使用されます。

timeout

OpenVMS 用法 longword_signed
データ型 longword (signed)
アクセス read only
受け渡し方 by reference


時間切れの値。timeout 引数は省略可能です。この引数を指定した場合には,時間切れの前に入力されたキーストロークは読み込まれます。

display-id

OpenVMS 用法 identifier
データ型 longword (unsigned)
アクセス read only
受け渡し方 by reference


仮想ディスプレイ識別子。display-id 引数は省略可能であり,読み込み操作が実行される仮想ディスプレイの識別子を格納した,符号なしロングワードのアドレスです。

複数の仮想ディスプレイがペーストされているときに, prompt-string 引数を指定する場合には,プロンプト文字列をどの仮想ディスプレイに書き込むかを指定するために,display-id 引数も指定しなければなりません。prompt-string 引数を指定しない場合には, display-id 引数も指定しないでください。

複数の仮想ディスプレイが存在する場合には,各仮想ディスプレイにはそれぞれ仮想カーソルが対応づけられます。同時に,物理カーソルの現在の位置に対応する物理カーソルが 1 つだけ設定されます。

display-id 引数を指定した場合には,読み込み操作は指定された仮想ディスプレイ内の現在の仮想カーソルの位置から開始されます。display-id 引数を省略した場合には,読み込み操作は現在の物理カーソルの位置から開始されます。prompt-string 引数入力されるキーの合計の長さは,仮想ディスプレイに表示可能なカラム数に制限されます。

rendition-set

OpenVMS 用法 mask_longword
データ型 longword (unsigned)
アクセス read only
受け渡し方 by reference


プロンプトに対する属性指定子。rendition-set 引数は省略可能であり,ロングワード・ビット・マスクのアドレスです。このビット・マスク内で設定されている各属性に対して,ディスプレイ内の対応する属性が設定されます。 rendition-set 引数を使用して指定できる属性は次のとおりです。

SMG$M_BLINK 点滅文字を指定します。
SMG$M_BOLD 通常より明るい輝度の文字を表示します。
SMG$M_REVERSE 文字を反転表示することを指定します。つまり仮想ディスプレイの現在の属性の反対の状態で文字を指定します。
SMG$M_UNDERLINE 下線付き文字を指定します。
SMG$M_INVISIBLE 表示されない文字を指定します。つまり,文字は仮想ディスプレイ内に存在しますが,ペーストボードには表示されません。
SMG$M_USER1 から SMG$M_USER8 ユーザ定義属性を指定します。

rendition-set 引数を使用する場合には,display-id 引数を指定しなければなりません。

rendition-complement

OpenVMS 用法 mask_longword
データ型 longword (unsigned)
アクセス read only
受け渡し方 by reference


プロンプトに対する属性補足指定子。rendition-complement 引数は省略可能であり,ロングワード・ビット・マスクのアドレスです。ビット・マスク内で属性が設定されている場合には,ディスプレイ内で対応する属性が補足されます。 rendition-set 引数に指定できる属性はすべて, rendition-complement 引数を使用して補足できます。 rendition-complement 引数を使用する場合には,display-id 引数を指定しなければなりません。

rendition-set 引数と rendition-complement 引数はどちらも省略可能な引数であり,これらの引数を組み合わせて使用すれば,ユーザは仮想ディスプレイの属性を制御できます。rendition-set 引数は特定の仮想ディスプレイ属性を設定します。それに対し,rendition-complement 引数はこれらの属性を補足します。rendition-set 引数と rendition-complement 引数の両方に同じビットが指定されている場合には,最初に rendition-set 引数が評価され,その後, rendition-complement 引数が評価されます。これらの 2 つの引数を組み合わせて使用すれば,1 回のプロシージャ呼び出しで複数の仮想ディスプレイ属性を制御できます。各属性に対して,ユーザは次の組み合わせを指定できます。

設定 補足 動作
0 0 属性を省略時の状態に設定する。
1 0 属性をオンに設定する。
0 1 属性を省略時の逆の状態に設定する。
1 1 属性をオフに設定する。


説明

SMG$READ_KEYSTROKE ルーチンは,指定された仮想キーボードからキーストロークを読み込み,そのキーストロークの終了文字コードを SMG$K_TRM_keyname の形式で戻します。読み込まれるキーストロークは画面にエコー表示されません。このキーストロークは標準的な英字,キーパッド・キーまたはファンクション・キー,または矢印キー([↑][↓][←][→])のいずれでもかまいません。

SMG$READ_KEYSTROKE ルーチンを使用する場合には,ペーストボードと仮想ディスプレイの両方に対してディスプレイのバッチ処理を禁止しておかなければなりません。

VT100,VT200 シリーズ,および VT300 シリーズのキーボードから,すべてのキーを読み込むことができますが,以下は例外です。

  • VT200 シリーズおよび VT300 シリーズ・キーボードの Compose Character キー

  • VT200 シリーズおよび VT300 シリーズ・キーボードのカナキー

  • ESCAPE キー

  • SHIFT キー

  • VT200 シリーズおよび VT300 シリーズ・キーボードの F1〜F5 キー

一部のキーおよびキー定義はユーザが定義可能ですが,なるべく定義しないようにしてください。これらのキーとキー定義を使用した場合,日本語 SMG はエラーを戻すわけではありませんが,DCL レベルで次の特殊な方法で漢字ターミナルを設定していない限り,これらのキーの組み合わせに割り当てた定義は実行されません。

  • [Ctrl/C][Ctrl/O][Ctrl/X],および [F6]
    これらのキーを読み込むには,最初に DCL の SET TERMINAL/PASTHRU コマンドを入力しなければならない。

  • [Ctrl/T][Ctrl/Y]
    これらのキーを読み込むには,まず,DCL の SET TERMINAL/PASTHRU コマンドと SET NOCONTROL コマンドのどちらか一方または両方を入力しなければならない。

  • [Ctrl/S][Ctrl/Q]
    これらキーを読み込むには,まず,DCL の SET TERMINAL/NOTTSYNC コマンドを入力しなければならない。

これらの特殊なターミナル設定を使用することは望ましくありません。ターミナル・ドライバに制御を与えるために省略時の設定を変更した場合,その結果がどのようになるかを十分理解していない限り,これらの特殊な設定を使用すると,予測できない結果が発生することがあります。


戻される状態値

SS$_NORMAL 正常終了。
SS$_ABORT 実行中に入出力操作が強制終了されました(SMG$CANCEL_INPUT によって)。
SS$_CANCEL キューに登録中に入力操作が取り消されました (SMG$CANCEL_INPUT によって)。
SMG$_EOF ファイルの最後。
SMG$_INVDIS_ID display-id 引数に誤りがあります。
SMG$_INVKBD_ID keyboard-id 引数に誤りがあります。
SMG$_WRONUMARG 引数の数が誤っています。
SS$_xxx $QIOW から戻されたエラー。
LIB$_xxx LIB$SCOPY_R_DX から戻されたエラー。
RMS$_xxx $GET から戻されたエラー(RMS$_EOF を除く)。


#1
C+ 
C This FORTRAN example program demonstrates the use of 
C SMG$READ_KEYSTROKE. 
C- 
 
C+ 
C This routine creates a virtual display and writes it to the pasteboard. 
C Data is placed in the virtual display using SMG$PUT_CHARS. 
C 
C First, include the SMG definitions. In particular, we want SMG$M_BORDER. 
C- 
 
        IMPLICIT INTEGER (A-Z) 
        INCLUDE '($SMGDEF)' 
        CHARACTER*3 TEXT 
        CHARACTER*27 TEXT_OUTPUT 
 
C+ 
C Use SMG$CREATE_VIRTUAL_DISPLAY to create a virtual 
C display with a border. 
C- 
 
        ROWS = 7 
        COLUMNS = 60 
 
        STATUS = SMG$CREATE_VIRTUAL_DISPLAY 
     1          (ROWS, COLUMNS, DISPLAY1, SMG$M_BORDER) 
        IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS)) 
 
C+ 
C Create the pasteboard using SMG$CREATE_PASTEBOARD. 
C- 
 
        STATUS = SMG$CREATE_PASTEBOARD ( PASTE1 ) 
        IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS)) 
 
C+ 
C Use SMG$CREATE_VIRTUAL_KEYBOARD to create a virtual keyboard. 
C- 
 
        STATUS = SMG$CREATE_VIRTUAL_KEYBOARD ( KEYBOARD1 ) 
        IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS)) 
 
C+ 
C Using SMG$PASTE_VIRTUAL_DISPLAY, paste the virtual display 
C at row 3, column 9. 
C- 
 
        STATUS = SMG$PASTE_VIRTUAL_DISPLAY ( DISPLAY1, PASTE1, 3, 9 ) 
        IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS)) 
 
        STATUS = SMG$PUT_LINE ( DISPLAY1, 
     1          'Enter the character K after the >> prompt.' ) 
        IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS)) 
 
        STATUS = SMG$PUT_LINE ( DISPLAY1, 
     1          'This character will not be echoed as you type it.' ) 
        IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS)) 
 
        STATUS = SMG$PUT_LINE ( DISPLAY1, 
     1  'The terminal character equivalent of K is displayed.' ) 
        IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS)) 
 
        STATUS = SMG$PUT_LINE ( DISPLAY1, ' ' ) 
        IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS)) 
 
C+ 
C Call SMG$READ_KEYSTROKE to read a keystroke from the virtual 
C pasteboard. 
C- 
 
        STATUS = SMG$READ_KEYSTROKE ( KEYBOARD1, TERM_CHAR, '>>', , 
     1          DISPLAY1 ) 
        IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS)) 
 
        STATUS = SMG$PUT_LINE ( DISPLAY1, ' ' ) 
        IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS)) 
 
C+ 
C Use OTS$CVT_L_TI to convert the decimal value of TERM_CHAR to 
C a decimal ASCII text string. 
C- 
 
        STATUS = OTS$CVT_L_TI ( TERM_CHAR, TEXT ) 
        IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS)) 
 
        TEXT_OUTPUT = ' TERMINAL CHARACTER IS: ' // TEXT 
 
C+ 
C Call SMG$PUT_LINE and SMG$PUT_CHARS to print the decimal 
C ASCII text string. 
C- 
 
        STATUS = SMG$PUT_LINE ( DISPLAY1, TEXT_OUTPUT ) 
        IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS)) 
 
        STATUS = SMG$PUT_CHARS ( DISPLAY1, TEXT, 7, 25 ) 
        IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS)) 
 
        END 
 

この FORTRAN プログラムによって生成される出力は 図 8-34 に示すとおりです。

図 8-34 SMG$READ_KEYSTROKE ルーチンを呼び出す FORTRAN プログラムが生成する出力



目次 索引

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