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


前へ 次へ 目次 索引



SMG$INVALIDATE_DISPLAY
- Mark a Display as Invalid

Mark a Display as Invalid ルーチンは,ディスプレイを無効状態としてマークし,ディスプレイ全体を再表示します。

形式

SMG$INVALIDATE_DISPLAY display-id


戻り値

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


引数

display-id

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


影響を受ける仮想ディスプレイを指定します。display-id 引数は,ディスプレイ識別子を格納した符号なしロングワードのアドレスです。

display-id は SMG$CREATE_VIRTUAL_DISPLAY から戻されます。


説明

SMG$INVALIDATE_DISPLAY はディスプレイを無効状態としてマークし,ディスプレイ全体を再表示します。このルーチンは通常,日本語 SMG を利用せずに,出力がディスプレイに書き込まれたことを検出したときに使用します。

このルーチンは,仮想ディスプレイの "フットプリント" のペーストボードの内容を無効にすることにより,仮想ディスプレイを再表示します。ディスプレイが隠されている場合には,仮想ディスプレイの隠されている部分だけが再表示されます(ディスプレイ全体が再表示されるわけではありません)。


戻される状態値

SS$_NORMAL 正常終了。
SMG$_INVDIS_ID display-id 引数に誤りがあります。


SMG$KEYCODE_TO_NAME
- Translate a Key Code into a Key Name

Translate a Key Code into a Key Name ルーチンは,キーボードのキーのキー・コードを対応するキー名に変換します。

形式

SMG$KEYCODE_TO_NAME key-code ,key-name


戻り値

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



引数

key-code

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


キー名に変換するキー・コードを指定します。 key-code 引数は,キー・コードを格納した符号なしワードのアドレスです。

key-code 引数は,SMG$READ_COMPOSED_LINE,SMG$READ_KEYSTROKE, SMG$READ_STRING,SMG$READ_VERIFYルーチンから戻される word-terminator-code 引数と同じです。

key-name

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


key-code 引数が変換されるキーの名前を格納する文字列。 key-name 引数は,キー名を格納する文字列を示すディスクリプタのアドレスです。key-name 引数はキーの名前です。たとえば,COMMA や PERIOD,KP4 などです。


説明

SMG$KEYCODE_TO_NAME ルーチンは,キーボードのキーのキー・コードを対応するキー名に変換します。このキー・コードは,SMG$READ_KEYSTROKE ルーチンが word-terminator-code 引数に戻すコードと同じです。 key-code 引数の形式は SMG$K_TRM_keyname です (たとえば,SMG$K_TRM_DELETE)。

終了文字の値についての詳しい説明は, 第 3 章表 3-1 を参照してください。


戻される状態値

SS$_NORMAL 正常終了。
SMG$_INVKEYNAM key-name 引数に誤りがあります。


SMG$LABEL_BORDER
- Label a Virtual Display Border

Label a Virtual Display Border ルーチンは,仮想ディスプレイの境界上のラベルを指定します。

形式

SMG$LABEL_BORDER display-id [,text] [,position-code] [,units] [,rendition-set] [,rendition-complement] [,character-set]


戻り値

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



引数

display-id

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


境界上にラベルが置かれる仮想ディスプレイの識別子。 display-id 引数は,仮想ディスプレイの識別子を格納した符号なしロングワードのアドレスです。

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

text

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


境界上の新ラベル。 text 引数はラベル・テキストを示すディスクリプタのアドレスです。この引数を省略した場合は,仮想ディスプレイにラベルは表示されません。

position-code

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


ラベル付け位置。 position-code 引数は,位置コードを格納した符号なしロングワードのアドレスです。上下左右のどの境界にラベルを付けるかを指定します。この引数に対して指定できる値は次のとおりです。

SMG$K_TOP 上側境界にラベルを表示します。
SMG$K_BOTTOM 下側境界にラベルを表示します。
SMG$K_RIGHT 右側境界にラベルを表示します。
SMG$K_LEFT 左側境界にラベルを表示します。

この引数を省略した場合は,ラベルは上側境界上に表示されます。

注意

SMG$K_RIGHT と SMG$K_LEFTは,文字集合が DEC漢字文字集合のときは使用できません。

units

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


境界上のラベル付け開始位置。 units 引数は文字位置を格納した符号付きロングワードのアドレスです。この引数を省略した場合は,ラベルは指定した境界上で中寄せされます。

rendition-set

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


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

SMG$M_BLINK 点滅する文字を表示します。
SMG$M_BOLD 通常の輝度より高い輝度で文字を表示します。
SMG$M_INVISIBLE 表示されない文字を指定します。つまり,仮想ディスプレイに存在していても,ペーストボードに表示されない文字を指定します。
SMG$M_REVERSE 文字を反転表示します。つまり,仮想表示の現在のシステム設定値の属性とは逆の状態で表示します。
SMG$M_UNDERLINE 下線を付けた文字を表示します。
SMG$M_USER1 から SMG$M_USER8 ユーザ定義属性を表示します。

rendition-complement

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


属性補足指定子。 rendition-complement 引数は省略可能で,ロングワード・ビット・マスクのアドレスです。この引数で指定する補足的な属性が仮想ディスプレイ上に設定されます。rendition-set 引数で指定できる属性はすべて, rendition-complement 引数で補足指定することができます。

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 属性を無効にする。

character-set

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


境界上にラベルとして置かれるテキストの文字集合。 character-set 引数は,文字集合コードを格納した符号なしロングワードのアドレスです。この引数を省略した場合,SMG$CREATE_VIRTUAL_DISPLAY ルーチンまたは SMG$CHANGE_VIRTUAL_DISPLAY ルーチンで設定された値が使用されます。

文字集合 (コードセット)
SMG$C_ASCII ASCII文字集合
SMG$C_SPEC_GRAPHICS DEC特殊文字集合
SMG$C_SUPPLEMENTAL 補助文字集合 1
SMG$C_KANJI DEC漢字文字集合
SMG$C_JIS_KANA JISカタカナ文字集合
SMG$C_SDK Super DEC 漢字コードセット


1DEC 補助文字集合または Latin-1 文字集合のいずれか。


説明

SMG$LABEL_BORDER ルーチンは,仮想ディスプレイに表示するラベルのテキストを指定するために使用します。指定した仮想ディスプレイに境界表示属性(SMG$M_BORDER)が設定されていない場合は,この属性が強制的に設定されます。ラベル文字列を指定すると,現在のラベル・テキストと置き換えられます。空(null)のラベル文字列を指定した場合は,境界にラベルは表示されません。指定した位置からラベル・テキストを境界内に格納できない場合は,このルーチンは SMG$_INVARG を戻します。

position-code 引数と units 引数は,境界内のラベル・テキストの開始位置を指定します。position-code 引数を省略した場合は,上側境界にラベルを表示します。units 引数を省略した場合は,ラベルの置かれる位置に応じて,水平方向または垂直方向にテキストを中寄せするように開始位置を選択します。position-code 引数と units 引数の両方を省略した場合には,テキストは上側境界内で中寄せされます。

垂直方向のラベルを使用できるのは,文字集合が SMG$C_ASCII と SMG$C_SPEC_GRAPHICS の場合のみです。

オリジナルの SMG ルーチンは,ASCII文字集合と DEC特殊文字集合のみをサポートします。日本語 SMG ではこの他に SMG$C_SUPPLEMENTAL,SMG$C_KANJI,SMG$C_JIS_KANA, SMG$C_SDK が指定できます。


戻される状態値

SS$_NORMAL 正常終了。
SMG$_INVARG 引数が誤っています。 position-code 引数, units 引数, text 引数を組み合わせて使用した結果,その位置は境界領域の外部になります。
SMG$_INVDIS_ID display-id 引数が誤っています。
SMG$_WRONUMARG 引数の数が誤っています。


#1

C+ 
C This DEC FORTRAN example program demonstrates the use of SMG$LABEL_BORDER. 
C- 
 
C+ 
C Include the SMG definitions. In particular, we want SMG$M_BORDER, 
C SMG$K_TOP, SMG$K_BOTTOM, and SMG$K_RIGHT. 
C- 
 
        IMPLICIT INTEGER (A-Z) 
        INCLUDE '($SMGDEF)' 
 
C+ 
C Call SMG$CREATE_VIRTUAL_DISPLAY to create virtual display number 1. 
C Give it a border. 
C- 
 
        ROWS = 4 
        COLUMNS = 30 
 
        STATUS = SMG$CREATE_VIRTUAL_DISPLAY 
     1          (ROWS, COLUMNS, DISPLAY1, SMG$M_BORDER) 
        IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS)) 
 
C+ 
C Call SMG$CREATE_VIRTUAL_DISPLAY to create virtual display number 2. 
C Give it a border. 
C- 
 
        ROWS = 3 
        COLUMNS = 30 
 
        STATUS = SMG$CREATE_VIRTUAL_DISPLAY 
     1          (ROWS, COLUMNS, DISPLAY2, SMG$M_BORDER) 
        IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS)) 
 
C+ 
C Create virtual display number 3. Do NOT give it a border. 
C- 
 
        ROWS = 4 
        COLUMNS = 35 
 
        STATUS = SMG$CREATE_VIRTUAL_DISPLAY 
     1          (ROWS, COLUMNS, DISPLAY3) 
        IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS)) 
 
C+ 
C Use SMG$CREATE_PASTEBOARD to create the pasteboard. 
C- 
 
        STATUS = SMG$CREATE_PASTEBOARD (PASTE1) 
        IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS)) 
 
C+ 
C Call SMG$PUT_CHARS to put data into the virtual displays. 
C- 
 
        STATUS = SMG$PUT_CHARS ( DISPLAY1, 
     1          ' A bordered virtual display.', 2, 1 ) 
        IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS)) 
 
        STATUS = SMG$PUT_CHARS ( DISPLAY2, 
     1          ' A bordered virtual display.', 1, 1 ) 
        IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS)) 
 
        STATUS = SMG$PUT_CHARS ( DISPLAY3, 
     1          ' Started as an unbordered display.', 2, 1 ) 
        IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS)) 
 
C+ 
C Call SMG$LABEL_BORDER to label the virtual display borders. 
C- 
 
        STATUS = SMG$LABEL_BORDER ( DISPLAY1, 'Side', SMG$K_RIGHT ) 
        IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS)) 
 
        STATUS = SMG$LABEL_BORDER ( DISPLAY2, 'LABEL Bottom', 
     1          SMG$K_BOTTOM, 1 ) 
        IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS)) 
 
        STATUS = SMG$LABEL_BORDER ( DISPLAY3, 'Forced bordering ', 
     1          SMG$K_TOP ) 
        IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS)) 
 
C+ 
C Call SMG$PASTE_VIRTUAL_DISPLAY to paste the virtual displays. 
C- 
 
        STATUS = SMG$PASTE_VIRTUAL_DISPLAY ( DISPLAY1, PASTE1, 2, 10 ) 
        IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS)) 
 
        STATUS = SMG$PASTE_VIRTUAL_DISPLAY ( DISPLAY2, PASTE1, 2, 45 ) 
        IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS)) 
 
        STATUS = SMG$PASTE_VIRTUAL_DISPLAY ( DISPLAY3, PASTE1, 10, 5 ) 
        IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS)) 
 
        END 
 

このプログラムから生成される出力は 図 8-28 に示すとおりです。

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



前へ 次へ 目次 索引