前へ | 次へ | 目次 | 索引 |
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 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 プログラムによって生成される出力
Draw a Rectangle ルーチンは長方形を描きます。
SMG$DRAW_RECTANGLE 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-colulmn 引数が全角文字上にあった場合,その残りの部分は,未定義文字になります。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-colulmn 引数が全角文字上にあった場合,その残りの部分は,未定義文字になります。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_RECTANGLE ルーチンは,指定された左上の角と右下の角の位置をもとに,仮想ディスプレイ内に長方形を描きます。このルーチンは仮想カーソルの位置を変更しません。長方形を構成するラインを描くために使用される文字は漢字ターミナルのタイプに応じて異なります。可能な場合には,日本語 SMG ルーチンは漢字ターミナルのライン描画文字集合を使用します。その文字集合を使用できない場合には,日本語 SMG ルーチンはラインを描くために,+,-,および | を使用します。DEC漢字または Super DEC 漢字文字集合を使用した場合に,長方形が全角文字上に描かれた場合には,全角文字の残された部分は未定義文字になります。
SS$_NORMAL 正常終了。 SMG$_INVCOL カラム番号が誤っています。指定されたカラムは仮想ディスプレイの外部です。 SMG$_INVDIS_ID display-id 引数に誤りがあります。 SMG$_INVROW 行番号が誤っています。指定された行は仮想ディスプレイの外部です。 SMG$_WRONUMARG 引数の数が誤っています。
#1 |
---|
C+ C This FORTRAN example program demonstrates the use of C SMG$DRAW_RECTANGLE. C C This routine creates a virtual display and uses SMG$DRAW_RECTANGLE C to draw a rectangle inside the bordered virtual display. C- C+ C Include the SMG definitions. In particular, we want SMG$M_BORDER. C- INCLUDE '($SMGDEF)' INTEGER SMG$CREATE_VIRTUAL_DISPLAY, SMG$CREATE_PASTEBOARD INTEGER SMG$PASTE_VIRTUAL_DISPLAY, SMG$DRAW_RECTANGLE INTEGER DISPLAY1, PASTE1, ROWS, COLUMNS, STATUS C+ C Create a virtual display with a border by calling C SMG$CREATE_VIRTUAL_DISPLAY. C- ROWS = 7 COLUMNS = 50 STATUS = SMG$CREATE_VIRTUAL_DISPLAY 1 (ROWS, COLUMNS, DISPLAY1, SMG$M_BORDER) 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 Using SMG$DRAW_RECTANGLE, draw a rectangle inside the bordered region. C- STATUS = SMG$DRAW_RECTANGLE (DISPLAY1, 2, 10, 6, 20) IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS)) C+ C Paste the virtual display by calling 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-15 に示すとおりです。
図 8-15 SMG$DRAW_RECTANGLE ルーチンを呼び出す FORTRAN プログラムによって生成される出力
Enable Unsolicited Input ルーチンは,要求されていない入力を検出し,AST ルーチンを呼び出します。
SMG$ENABLE_UNSOLICITED_INPUT pasteboard-id ,AST-routine [,AST-argument]
OpenVMS 用法 cond_value データ型 longword (unsigned) アクセス write only 受け渡し方 by value
pasteboard-id
OpenVMS 用法 identifier データ型 longword (unsigned) アクセス read only 受け渡し方 by reference
要求されていない入力を許可する対象となるペーストボードを指定します。 pasteboard-id 引数は,ペーストボード識別子を格納した符号なしロングワードのアドレスです。この引数は SMG$CREATE_PASTEBOARD ルーチンによって与えられます。
AST-routine
OpenVMS 用法 ast_procedure データ型 procedure entry mask アクセス read only 受け渡し方 by value
漢字ターミナルから要求されていない入力を受信したときに呼び出される AST ルーチンのアドレス。 AST-routine 引数には,ルーチンのプロシージャ・エントリ・マスクが格納されます。 SMG$ENABLE_UNSOLICITED_INPUT ルーチンは,要求されていない入力の存在を検出し,6 つの引数を使用して AST ルーチンを呼び出します。6 つの引数とは, pasteboard-id 引数,AST-argument 引数,R0,R1,PC,および PSL です。AST ルーチン引数は 図 8-16 に示すとおりです。図 8-16 AST ルーチン引数
OpenVMS 用法 | user_arg |
データ型 | longword (unsigned) |
アクセス | read only |
受け渡し方 | by value |
AST ルーチンに渡される値。AST-argument
引数には,AST ルーチンに渡される値が格納されています。
SMG$ENABLE_UNSOLICITED_INPUT ルーチンは要求されていない入力の存在を検出し,AST ルーチンを呼び出します。このルーチンは入力文字を読み込むわけではなく,単に AST ルーチンを呼び出すことにより,SMG$READ_COMPOSED_LINE,SMG$READ_KEYSTROKE,SMG$READ_STRING, SMG$READ_VERIFY ルーチンを使用して読み込み操作を実行しなければならないことを,アプリケーションに "通知" するだけです。要求されていない入力を読み込むのは,ユーザの役割です。
SMG$ENABLE_UNSOLICITED_INPUT ルーチンは,ユーザ・イメージにとって注意を必要とするターミナル関連イベントが発生したときに,メッセージを受信するメールボックスを設定します。このメールボックスは,ターミナル・データではなく,状態メッセージをドライバからユーザ・プログラムに渡します。この状態メッセージは,先読みバッファに要求されていないデータが存在するときにメールボックスに送信されます。この場合,ユーザ・プロセスは,要求されていないデータ・メッセージを受信した後,漢字ターミナルとの対話を開始します。この対話が終了した後,日本語 SMG は最後の入出力交換時に,要求されないデータ・メッセージ機能を再度許可します。読み込み操作と次の読み込み操作の間には,1つのメッセージだけが送信されます。SYSGEN パラメータである DEFMBXBUFQUO と DEFMBXMXMSG が,メールボックス作成時に使用されます。
漢字ターミナルとメールボックスの相互作用についての詳しい説明は,『 OpenVMS I/O User's Reference Manual 』を参照してください。
SS$_NORMAL 正常終了。 SMG$_INVPAS_ID pasteboard-id 引数に誤りがあります。 SMG$_WRONUMARG 引数の数が誤っています。 その他 $QIOW から戻される状態値。
前へ | 次へ | 目次 | 索引 |