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


前へ 次へ 目次 索引



SMG$DISABLE_BROADCAST_TRAPPING
- Disable Broadcast Trapping

Disable Broadcast Trapping ルーチンは,指定された漢字ターミナルに対して,ブロードキャスト・メッセージのトラッピングを禁止します。

形式

SMG$DISABLE_BROADCAST_TRAPPING pasteboard-id


戻り値

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



引数

pasteboard-id

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


操作の対象となる漢字ターミナルのペーストボードを指定します。 pasteboard-id 引数は,ペーストボード識別子を格納した符号なしロングワードのアドレスです。

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


説明

SMG$DISABLE_BROADCAST_TRAPPING ルーチンは,指定された漢字ターミナルに対して,ブロードキャスト・メッセージのトラッピングを禁止します。 SMG$DISABLE_BROADCAST_TRAPPING ルーチンは,SMG$SET_BROADCAST_TRAPPING ルーチンを使用して設定されたメールボックスの割り当てを解除し,ターミナル属性を再設定します。したがって,ユーザは LIB$SPAWN ルーチンを呼び出すことができるようになります。

SMG$SET_BROADCAST_TRAPPING ルーチンを使用して設定したブロードキャスト・トラッピングを禁止する場合には,このルーチンを使用しなければなりません。

ブロードキャスト・トラッピングを禁止する場合には,漢字ターミナルのキューに登録されたブロードキャスト・メッセージは失われます。SMG$SET_BROADCAST_TRAPPING ルーチンを使用してブロードキャスト・トラッピングを許可した後,イメージが終了する前に,SMG$DISABLE_BROADCAST_TRAPPING ルーチンを使用してブロードキャスト・トラッピングを禁止しなかった場合には,漢字ターミナルにブロードキャストされたメッセージは,イメージが終了するときに失われます。

ブロードキャスト・トラッピングと, 要求されていない入力のトラッピングをどちらも許可した場合には,メールボックスの割り当てを解除するために, SMG$DISABLE_BROADCAST_TRAPPING ルーチンと SMG$DISABLE_UNSOLICITED_INPUT ルーチンの両方を起動しなければなりません。


戻される状態値

SS$_NORMAL 正常終了。
SMG$_WRONUMARG 引数の数が誤っています。
その他 $QIOW から戻される状態値。


SMG$DISABLE_UNSOLICITED_INPUT
- Disable Unsolicited Input

Disable Unsolicited Input ルーチンは,要求されていない入力のトラッピングを禁止します。

形式

SMG$DISABLE_UNSOLICITED_INPUT pasteboard-id


戻り値

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



引数

pasteboard-id

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


要求されていない入力が禁止されるキーボード(指定されたペーストボードに対応づけられたキーボード)を指定します。pasteboard-id 引数は,ペーストボード識別子を格納した符号なしロングワードのアドレスです。

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


説明

SMG$DISABLE_UNSOLICITED_INPUT ルーチンは,指定されたペースト
ボードに対して,要求されていない入力の AST を禁止します。
SMG$DISABLE_UNSOLICITED_INPUT ルーチンは,SMG$ENABLE_UNSOLICITED_INPUT ルーチンによって設定されたメールボックスの割り当てを解除し,ターミナル属性を再設定します。したがって,ユーザは LIB$SPAWN ルーチンを呼び出すことができるようになります。SMG$ENABLE_UNSOLICITED_INPUT ルーチンを使用して許可した,要求されていない入力のトラッピングを禁止する場合には,このルーチンを使用しなければなりません。

要求されていない入力のトラッピングとブロードキャスト・メッセージのトラッピングの両方を許可した場合には,メールボックスの割り当てを解除するために, SMG$DISABLE_UNSOLICITED_INPUT ルーチンとSMG$DISABLE_BROADCAST_TRAPPING ルーチンの両方を起動しなければなりません。


戻される状態値

SS$_NORMAL 正常終了。
SMG$_INVPAS_ID pasteboard-id 引数に誤りがあります。
SMG$_WRONUMARG 引数の数が誤っています。
その他 $QIOW から戻される状態値。


SMG$DRAW_CHAR
- Draw a Character in a Virtual Display

Draw a Character in a Virtual Display ルーチンは,仮想ディスプレイ内の指定された位置に文字を描きます。

形式

SMG$DRAW_CHAR display-id ,flags [,row] [,column] [,rendition-set] [,rendition-complement]


戻り値

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



引数

display-id

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


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

flags

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


描く文字を示すビット・マスク(省略可能)。Flags 引数は,フラグを格納した符号なしロングワードのアドレスです。Flags 引数には以下の値を指定できます。

論理和演算を実行することにより,T文字,角を形成する文字,交差を形成する文字などを描くことができます。値が 0 の場合には,菱形文字(◇)が描かれます。

row

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


指定された文字を描く位置を指定する行番号(省略可能)。row 引数は,行番号を格納した符号付きロングワードのアドレスです。row 引数を省略した場合には,文字は現在の仮想カーソルの行位置に描かれます。

column

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


指定された文字を描く位置を指定するカラム番号(省略可能)。column 引数は,カラム番号を格納した符号付きロングワードのアドレスです。column 引数を省略した場合には,文字は現在の仮想カーソルのカラム位置に描かれます。 column 引数が全角文字の右半分の位置になる場合,その文字の左半分は未定義文字になります。また,column 引数が全角文字の左半分の位置になる場合,その文字の右半分は未定義文字になります。

rendition-set

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


属性指定子。rendition-set 引数は省略可能であり,ロングワード・ビット・マスクのアドレスです。このロングワード・ビック・マスクの各属性を設定すると,仮想ディスプレイ内の対応する属性が設定されます。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 属性をオフに設定する。


説明

SMG$DRAW_CHAR ルーチンは,指定された仮想ディスプレイの指定された位置に指定された文字を描きます。このルーチンは仮想カーソルの位置を変更しません。描かれる文字は漢字ターミナルのタイプに応じて異なります。たとえば,SMG$ は,可能な場合にはターミナルのライン描画文字集合を使用します。その文字集合を使用できない場合には, SMG$ はラインを描くために +,-,および | を使用します。 column 引数が全角文字の右半分の位置になる場合,その文字の左半分は未定義文字になります。また,column 引数が全角文字の左半分の位置になる場合,その文字の右半分は未定義文字になります。

戻される状態値

SS$_NORMAL 正常終了。
SMG$_INVCOL カラム番号に誤りがあります。
SMG$_INVROW 行番号に誤りがあります。
SMG$_WRONUMARG 引数の数が誤っています。


#1

C+ 
C This DEC FORTRAN example demonstrates the use of 
C SMG$DRAW_CHAR to use the terminal line drawing 
C characters. 
C- 
 IMPLICIT INTEGER (A-Z) 
 INCLUDE '($SMGDEF)' 
 
 s = SMG$CREATE_PASTEBOARD(p_id) 
 IF (.NOT. s) CALL LIB$SIGNAL(%VAL(s)) 
 s = SMG$CREATE_VIRTUAL_DISPLAY(17,7,d_id,SMG$M_BORDER) 
 IF (.NOT. s) CALL LIB$SIGNAL(%VAL(s)) 
 s = SMG$PASTE_VIRTUAL_DISPLAY(d_id,p_id,4,30) 
 IF (.NOT. s) CALL LIB$SIGNAL(%VAL(s)) 
 s = SMG$SET_CURSOR_REL(d_id,1,3) 
 IF (.NOT. s) CALL LIB$SIGNAL(%VAL(s)) 
 
 s = SMG$DRAW_CHAR(d_id,SMG$M_UP,1,4,SMG$M_BOLD) 
 IF (.NOT. s) CALL LIB$SIGNAL(%VAL(s)) 
 s = SMG$DRAW_CHAR(d_id,SMG$M_DOWN,2,4,0,SMG$M_REVERSE) 
 IF (.NOT. s) CALL LIB$SIGNAL(%VAL(s)) 
 s = SMG$DRAW_CHAR(d_id,SMG$M_LEFT,3,4,SMG$M_BLINK) 
 IF (.NOT. s) CALL LIB$SIGNAL(%VAL(s)) 
 s = SMG$DRAW_CHAR(d_id,SMG$M_RIGHT,4,4,0,0) 
 IF (.NOT. s) CALL LIB$SIGNAL(%VAL(s)) 
 s = SMG$DRAW_CHAR(d_id,SMG$M_UP + SMG$M_DOWN,5) 
 IF (.NOT. s) CALL LIB$SIGNAL(%VAL(s)) 
 s = SMG$DRAW_CHAR(d_id,SMG$M_UP + SMG$M_LEFT,6) 
 IF (.NOT. s) CALL LIB$SIGNAL(%VAL(s)) 
 s = SMG$DRAW_CHAR(d_id,SMG$M_UP + SMG$M_RIGHT,7) 
 IF (.NOT. s) CALL LIB$SIGNAL(%VAL(s)) 
 s = SMG$DRAW_CHAR(d_id,SMG$M_DOWN + SMG$M_LEFT,8) 
 IF (.NOT. s) CALL LIB$SIGNAL(%VAL(s)) 
 s = SMG$DRAW_CHAR(d_id,SMG$M_DOWN + SMG$M_RIGHT,9) 
 IF (.NOT. s) CALL LIB$SIGNAL(%VAL(s)) 
 s = SMG$DRAW_CHAR(d_id,SMG$M_LEFT + SMG$M_RIGHT,10) 
 IF (.NOT. s) CALL LIB$SIGNAL(%VAL(s)) 
 s = SMG$DRAW_CHAR(d_id,SMG$M_UP + SMG$M_DOWN + SMG$M_LEFT,11) 
 IF (.NOT. s) CALL LIB$SIGNAL(%VAL(s)) 
 s = SMG$DRAW_CHAR(d_id,SMG$M_UP + SMG$M_DOWN + SMG$M_RIGHT,12) 
 IF (.NOT. s) CALL LIB$SIGNAL(%VAL(s)) 
 s = SMG$DRAW_CHAR(d_id,SMG$M_DOWN + SMG$M_LEFT + SMG$M_RIGHT,13) 
 IF (.NOT. s) CALL LIB$SIGNAL(%VAL(s)) 
 s = SMG$DRAW_CHAR(d_id,SMG$M_UP + SMG$M_LEFT + SMG$M_RIGHT,14) 
 IF (.NOT. s) CALL LIB$SIGNAL(%VAL(s)) 
 s = SMG$DRAW_CHAR(d_id,SMG$M_UP + SMG$M_DOWN + SMG$M_RIGHT + 
     1          SMG$M_LEFT, 15) 
 IF (.NOT. s) CALL LIB$SIGNAL(%VAL(s)) 
 s = SMG$DRAW_CHAR(d_id,0,16) 
 IF (.NOT. s) CALL LIB$SIGNAL(%VAL(s)) 
 
 END 
 

この例では,1 つのカラム位置にライン描画文字を生成しています。


SMG$DRAW_LINE
- Draw a Line

Draw a Line ルーチンは,水平線または垂直線を描きます。

形式

SMG$DRAW_LINE display-id ,start-row ,start-column ,end-row ,end-column [,rendition-set] [,rendition-complement]


戻り値

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 ルーチンによって与えられます。

start-row

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


ライン描画を開始する行を指定します。start-row 引数は,ライン描画を開始する行番号を格納した符号付きロングワードのアドレスです。

start-column

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


ライン描画を開始するカラムを指定します。start-column 引数は,ライン描画を開始するカラム番号を格納した符号付きロングワードのアドレスです。

水平線の描画時に,start-column 引数が全角文字の右半分から始まった場合,左半分は,未定義文字になります。垂直線描画時に, start-column 引数が全角文字の右半分あるいは左半分のバイト上にあった場合には,残りの部分は未定義文字になります。

end-row

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


ライン描画を終了する行を指定します。end-row 引数は,ライン描画を終了する行番号を格納した符号付きロングワードのアドレスです。

end-column

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


ライン描画を終了するカラムを指定します。end-column 引数は,ライン描画を終了するカラム番号を格納した符号付きロングワードのアドレスです。

水平線の描画時に,end-column 引数が全角文字の左半分で終わった場合,右半分は,未定義文字になります。垂直線描画時に,end-column 引数が全角文字の右半分あるいは左半分にあった場合には,残りの部分は未定義文字になります。

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-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 属性をオフに設定する。


説明

SMG$DRAW_LINE ルーチンは,指定された開始行/カラムから指定された終了行/カラムまでラインを描きます。このルーチンは仮想カーソルの位置を変更しません。このルーチンでは,水平線または垂直線だけを描くことができます。ラインを描くために使用される文字はターミナルのタイプに応じて異なります。可能な場合には,日本語 SMG ルーチンは漢字ターミナルのライン描画文字集合を使用します。その文字集合を使用できない場合には,日本語 SMG ルーチンはラインを描くために +,-,および | を使用します。

DEC漢字文字集合が使用されていた場合,描画される線が全角文字の左半分あるいは右半分にあった場合には残りの部分は未定義文字になります。


戻される状態値

SS$_NORMAL 正常終了。
SMG$_DIALINNOT 斜めのラインを描くことはできません。
SMG$_INVCOL カラム番号が誤っています。指定されたカラムは仮想ディスプレイの外部です。
SMG$_INVDIS_ID display-id 引数に誤りがあります。
SMG$_INVROW 行番号が誤っています。指定された行は仮想ディスプレイの外部です。
SMG$_WRONUMARG 引数の数が誤っています。


#1

C+ 
C This DEC FORTRAN example program demonstrates the use of SMG$DRAW_LINE. 
C- 
 
        INTEGER SMG$CREATE_VIRTUAL_DISPLAY, SMG$CREATE_PASTEBOARD 
        INTEGER SMG$PASTE_VIRTUAL_DISPLAY, SMG$DRAW_LINE 
        INTEGER DISPLAY1, PASTE1, ROWS, COLUMNS, BORDER, STATUS 
C+ 
C First, create the virtual display using SMG$CREATE_VIRTUAL_DISPLAY. 
C To give it a border, set BORDER = 1. No border would be BORDER = 0. 
C- 
 
        ROWS = 7 
        COLUMNS = 50 
        BORDER = 1 
 
        STATUS = SMG$CREATE_VIRTUAL_DISPLAY 
     1                                (ROWS, COLUMNS, DISPLAY1, BORDER) 
        IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS)) 
 
C+ 
C Call SMG$CREATE_PASTEBOARD to create the pasteboard. 
C- 
 
        STATUS = SMG$CREATE_PASTEBOARD (PASTE1) 
        IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS)) 
 
C+ 
C Draw a vertical line using SMG$DRAW_LINE. 
C Start at row 2, column 20. End at row 6. 
C- 
 
        STATUS = SMG$DRAW_LINE (DISPLAY1, 2, 20, 6, 20) 
        IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS)) 
 
C+ 
C Now, use SMG$DRAW_LINE to draw a vertical line. 
C Start at row 6, column 40. End at row 2. 
C This is similar to the line drawn above, but we are drawing the 
C line in the reverse direction. 
C- 
 
        STATUS = SMG$DRAW_LINE (DISPLAY1, 6, 40, 2, 40) 
        IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS)) 
C+ 
C Draw a horizontal line now, again calling SMG$DRAW_LINE. 
C Start at row 4, column 8. End at column 50. 
C- 
 
        STATUS = SMG$DRAW_LINE (DISPLAY1, 4, 8, 4, 50) 
        IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS)) 
 
C+ 
C Paste the virtual display using SMG$PASTE_VIRTUAL_DISPLAY. 
C- 
 
        STATUS = SMG$PASTE_VIRTUAL_DISPLAY ( DISPLAY1, PASTE1, 4, 15) 
        IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS)) 
 
        END 
 

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

図 8-14 SMG$DRAW_LINE ルーチンを呼び出す FORTRAN プログラムによって生成される出力



前へ 次へ 目次 索引