前へ | 次へ | 目次 | 索引 |
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 プログラムが生成する出力
Read String ルーチンは,仮想キーボードから文字列を読み込みます。
SMG$READ_STRING keyboard-id ,resultant-string [,prompt-string] [,maximum-length] [,modifiers] [,timeout] [,terminator-set] [,resultant-length] [,word-terminator-code] [,display-id] [,initial-string] [,rendition-set] [,rendition-complement] [,terminator-string] [,character-set]
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 ルーチンによって与えられます。
resultant-string
OpenVMS 用法 char_string データ型 character string アクセス write only 受け渡し方 by descriptor
入力行が書き込まれる文字列。resultant-string 引数は,テキストが書き込まれる文字列を示すディスクリプタのアドレスです。prompt-string
OpenVMS 用法 char_string データ型 character string アクセス read only 受け渡し方 by descriptor
読み込み操作に対するプロンプトとして使用される文字列。prompt-string 引数は,プロンプト文字列を示すディスクリプタのアドレスです。maximum-length
OpenVMS 用法 longword_signed データ型 longword (signed) アクセス read only 受け渡し方 by reference
読み込む最大バイト数を指定します。maximum-length 引数は,読み込む最大バイト数を格納した符号付きロングワードのアドレスです。この引数に対して指定できる最大値は 512 です。省略時の設定は 512 になります。かな漢字変換を使用する場合には,変換中ではなく,変換後に maximum-length 引数に指定されたバイト数で変換された文字列は,切り捨てられます。
ただし, 変換バッファの最大長が 512 バイトであるため,512 バイトを超える文字列は変換できません。
得られた文字列の最後が全角文字の左半分であった場合には,その文字の左半分は切り捨てられ,maximum-length 引数よりも 1 バイト短い文字列が返されます。modifiers
OpenVMS 用法 mask_longword データ型 longword (unsigned) アクセス read only 受け渡し方 by reference
オプションとして実行される動作を指定するビット・マスク(省略可能)。 modifiers 引数は,フラグを格納した符号なしロングワードのアドレスです。modifiers 引数に対して指定できる値は次のとおりです。
TRM$M_TM_CVTLOW 小文字を大文字に変換します。ASCII文字および補助文字に対してのみ有効です。 TRM$M_TM_NOECHO 入力された文字を画面にエコー表示しません。入力文字列の文字集合として Super DEC 漢字または DEC漢字文字集合が指定された場合には無視されます。 TRM$M_TM_PURGE 読み込み操作を実行する前に,先読みを可能にするバッファを消去します。 TRM$M_TM_TRMNOECHO 終了文字は入力されません。 TRM$M_TM_NOEDIT 拡張編集機能が禁止されます。入力文字列の文字集合として Super DEC 漢字または DEC漢字文字集合が指定された場合には,行編集は禁止されません。 TRM$M_TM_NORECALL 行再呼び出し機能が禁止されます。
modifiers 引数についての詳しい説明は,『OpenVMS I/O User's Reference Manual』のターミナル・ドライバの節を参照してください。TRM$ シンボルは, HP が提供するシステム・シンボル・ライブラリ内の $TRMDEF マクロ/モジュールによって定義されています。
timeout
OpenVMS 用法 longword_signed データ型 longword (signed) アクセス read only 受け渡し方 by reference
プロンプトを表示した後,入力操作が終了するまでに認められる秒数を指定します。 timeout 引数は,時間切れの値を格納した符号付きロングワードのアドレスです。timeout 引数を指定した場合には,満了時間の前に入力されたすべての文字,または終了キーが入力されるまでに入力されたすべての文字は resultant-string 引数に戻されます。この引数を省略した場合には,終了文字が入力されるまで,入力操作は有効です。
terminator-set
VMS 用法: unspecified データ型: unspecified アクセス: read only 受け渡し方: by descriptor, fixed length
どの文字が終了文字として取り扱われるかを指定するマスク(短い形式),またはこのようなマスクを示すディスクリプタ(長い形式)。terminator-set 引数は,マスクを示すディスクリプタのアドレスです。0 〜 31 の範囲の ASCII 値を持つ終了文字を使用する場合には,2 ロングワードで構成される短い形式を使用してください。最初のロングワードは 0 であり,2 番目のロングワードは終了文字ビット・マスクです。このマスクを作成するには,適切な終了文字の ASCII 値に対応するビットを設定します。たとえば,[Ctrl/A] (ASCIIの 1 ) が終了文字であることを指定するには,terminator-set マスクのビット 1 を設定します。
0 〜 31以外の ASCII 値を持つ終了文字を使用する場合には,長い形式を使用します。まず,この形式のディスクリプタを作成してください。
マスク自体は短い形式の場合と同じ形式です。しかし,長い形式では,短い形式の場合より包括的な終了文字集合を使用できます。たとえば,16バイトのマスク・サイズの場合には,7ビットの ASCII文字を終了文字として設定できますが,マスク・サイズが 32バイトの場合には,8ビット文字を終了文字として設定できます。1〜32バイトのマスク・サイズを使用できます。
終了文字マスクがすべて 0 の場合には,指定された終了文字は存在しません。その場合,読み込み操作は,maximum-length 引数に指定された文字数が転送されたとき,または時間切れが満了したときに,読み込み操作を終了します。
terminator-set 引数を省略した場合には,終了文字集合は OpenVMS の省略時の終了文字集合になります。詳しい説明は,『OpenVMS I/O User's Reference Manual』を参照してください。
character-set 引数に SMG$C_KANJI または SMG$C_SDK が指定された場合には,かな漢字変換キーに設定されているキーを終了文字として指定しても,終了文字として認識されません。
VMS 用法: | word_unsigned |
データ型: | word (unsigned) |
アクセス: | write only |
受け渡し方: | by reference |
読み込まれたバイト数と,resultant-string
引数の最大サイズのどちらか小さい方が書き込まれます。resultant-length
引数は,読み込まれたバイト数または最大サイズが書き込まれる符号なしワードのアドレスです。
VMS 用法: | word_unsigned |
データ型: | word (unsigned) |
アクセス: | write only |
受け渡し方: | by reference |
キー終了文字コード。word-terminator-code
引数は,どの文字またはどのキーが読み込み操作を終了したかを示すコードが書き込まれる符号なしワードのアドレスです。キー終了文字コードは SMG$K_TRM_keyname の形式です。キー名については 第 3 章 の 表 3-1 を参照してください。
VMS 用法: | identifier |
データ型: | longword (unsigned) |
アクセス: | read only |
受け渡し方: | by reference |
ディスプレイ識別子。display-id
引数は,ディスプレイ識別子を格納した符号なしロングワードのアドレスです。画面管理機能の出力ルーチンを使用しない場合のみ,この引数は省略可能です。
画面管理機能の入力ルーチンと出力ルーチンを使用する場合には,この引数は入力が行われる仮想ディスプレイを指定します。指定される仮想ディスプレイは, keyboard-id によって指定されるペーストボードと同じペーストボードにペーストされていなければならず,他のディスプレイによって隠されていない状態でなければなりません。仮想ディスプレイの隠された領域から入力を受け付けることはできません。
複数の仮想ディスプレイが存在する場合には,各仮想ディスプレイに対して仮想カーソルの位置が割り当てられています。同時に,物理カーソルの現在の位置に対応する物理カーソル位置が 1 つだけあります。display-id 引数を指定した場合には,読み込み操作は指定された仮想ディスプレイ内の現在の仮想カーソルの位置から開始されます。ディスプレイ識別子を省略した場合には,読み込み操作は現在の物理カーソルの位置から開始されます。prompt-string 引数の長さと入力されるキーの合計は,ディスプレイ内に表示されるカラム数に制限されます。
この仮想ディスプレイはカラム 1 にペーストしなければならず,その右側に他の仮想ディスプレイを配置することはできません。この制約事項が必要なのは,この条件が満足されない場合,[Ctrl/R] または [Ctrl/U] の発生によって,右側にペーストされた出力も含めて行全体が消去されるからです。 |
OpenVMS 用法 | char_string |
データ型 | character string |
アクセス | read only |
受け渡し方 | by descriptor |
初期文字列(省略可能)。initial-string
引数は,フィールドの初期文字列を格納した省略可能な文字列を示すディスクリプタのアドレスです。文字列はキーボードから入力されたかのように,ディスプレイの入力領域に書き込まれます。文字列は通常の方法で編集できます(TRM$M_TM_NOEDIT が設定されていない場合)。文字列長は maximum-length
引数より短くなければなりません。短くない場合には,SMG$READ_STRINGルーチンはただちに終了し,キーボード入力は受け付けられません。
OpenVMS 用法 | mask_longword |
データ型 | longword (unsigned) |
アクセス | read only |
受け渡し方 | by reference |
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 引数を指定しなければなりません。
OpenVMS 用法 | mask_longword |
データ型 | longword (unsigned) |
アクセス | read only |
受け渡し方 | by reference |
属性補足指定子。 rendition-complement
引数は省略可能で,ロングワード・ビット・マスクのアドレスです。この引数で指定する補足的な属性が仮想ディスプレイ上に設定されます。
rendition-set
引数で指定できる属性はすべて,
rendition-complement
引数で補足指定することができます。
前へ | 次へ | 目次 | 索引 |