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


前へ 次へ 目次 索引



SMG$GET_TERM_DATA
- Get Terminal Data

Get Terminal Data ルーチンは,TERMTABLE.EXE にアクセスして,漢字ターミナルに指定した操作を実行させる文字シーケンスを返します。

形式

SMG$GET_TERM_DATA termtable-address ,request-code ,maximum-buffer-length ,return-length ,buffer-address [,input-argument-vector]


戻り値

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



引数

termtable-address

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


情報を得たい漢字ターミナルの TERMTABLE エントリのアドレス。 termtable-address 引数は,ターミナル機能テーブル(TERMTABLE)のアドレスを格納したロングワードのアドレスです。

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

request-code

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


情報を得たい機能。 code 引数は SMG$K_code の形式をした要求コードを格納した符号なしロングワードのアドレスです。SMG$K_code 定数は,弊社の提供する $SMGTRMPTR ライブラリに定義されています。

指定できる要求コードに関しては本書の 第 5 章表 5-1表 5-2表 5-3表 5-4 を参照してください。

maximum-buffer-length

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


機能データが書き込まれるバッファの最大長。 maximum-buffer-length 引数は,バッファに書き込める最大バイト数を格納した符号付きロングワードのアドレスです。

return-length

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


バッファに実際に書き込まれたバイト数。 return-length 引数は,バッファに転送されたバイト数が書き込まれる符号付きロングワードのアドレスです。

buffer-address

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


機能データを受信するバッファの1バイト目のアドレス。 buffer-address 引数は,バッファのアドレスが書き込まれる符号なしロングワードのアドレスです。

input-argument-vector

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


特定の機能操作用の文字シーケンスを作成するために使われる引数を渡す,ロングワード・リストのアドレス。input-argument-vector 引数は,文字シーケンスを作成するための引数を格納した符号なしロングワードの配列のアドレスです。ある機能を操作する文字シーケンスを作成するためには引数が必要になる場合があります。 input-argument-vector 引数は,これらの引数を渡すためのロングワード・リストのアドレスを指定します。最初のロングワードは次に続く引数の数を格納していなければなりません。


説明

SMG$GET_TERM_DATA ルーチンは,漢字ターミナルへの入出力を直接行う場合,すなわち日本語 SMG ルーチンを使用せずに漢字ターミナルへの入出力を行う場合に限って使用します。指定されたターミナル・タイプの TERMTABLE.EXE エントリにアクセスし,特定の操作を実行する文字シーケンスを返します。この文字シーケンスの漢字ターミナルへの出力は行いません。

戻される状態値

SS$_NORMAL 正常終了。
SMG$_INVREQCOD 要求コードが誤っています。
SMG$_INVTERTAB TERMTABLE アドレスが誤っています。


SMG$GET_VIEWPORT_CHAR
- Get Characteristics of Display Viewport

Get Characteristics of Display Viewport ルーチンは,指定されたビューポートの属性を戻します。

形式

SMG$GET_VIEWPORT_CHAR

display-id [,viewport-row-start] [,viewport-column-start] [,viewport-number-rows] [,viewport-number-columns]


戻り値

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



引数

display-id

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


ビューポートに対応づけられている仮想ディスプレイの識別子。 display-id 引数は,この識別子を格納した符号なしロングワードのアドレスです。

viewport-row-start

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


ビューポートの開始行番号を受け取る引数(省略可能)。 viewport-row-start 引数は,この行番号が書き込まれる符号付きロングワードのアドレスです。

viewport-column-start

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


指定されたビューポートの開始カラム番号を受け取る引数(省略可能)。 viewport-column-start 引数は,このカラム番号が書き込まれる符号付きロングワードのアドレスです。

viewport-number-rows

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


指定されたビューポート内の行数を受け取る省略可能な引数。 viewport-number-rows 引数は,この行数が書き込まれる符号付きロングワードのアドレスです。

viewport-number-columns

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


指定されたビューポート内のカラム数を受け取る省略可能な引数。 viewport-number-columns 引数は,このカラム数が書き込まれる符号付きロングワードのアドレスです。


説明

SMG$GET_VIEWPORT_CHAR ルーチンは,指定されたビューポートの要求された属性を戻します。

戻される状態値

SS$_NORMAL 正常終了。
SMG$_INVDIS_ID display-id 引数に誤りがあります。
SMG$_NO_WINASSOC 仮想ディスプレイに対応づけられているビューポートはありません。
SMG$_WRONUMARG 引数の数が誤っています。


#1

C+ 
C This DEC FORTRAN example demonstrates the use of SMG$GET_VIEWPORT_CHAR. 
C The viewport created will start at row 3, column 4. It will consist of 
C 7 rows and 29 columns. Note the parameters used in the SMG$CREATE_VIEWPORT 
C routine. I request 26 rows and 55 columns, but my viewport is truncated 
C to fit. 
C- 
 IMPLICIT INTEGER (A-Z) 
 INCLUDE '($SMGDEF)' 
 
C Create the virtual display. Give it a border. 
 
 ROWS = 4 
 COLUMNS = 34 
 
 STATUS = SMG$CREATE_VIRTUAL_DISPLAY 
     1         ( ROWS, COLUMNS, DISPLAY1,SMG$M_BORDER ) 
 IF (.NOT. STATUS) CALL LIB$SIGNAL(%val(STATUS)) 
 
C Create the pasteboard. 
 
 STATUS = SMG$CREATE_PASTEBOARD (PASTE1) 
 IF (.NOT. STATUS) CALL LIB$SIGNAL(%val(STATUS)) 
 
C Put data in the virtual display. 
 
 STATUS = SMG$PUT_CHARS ( DISPLAY1, 
     1  'This is row number 1 of 4, you see', 1, 1 ) 
 IF (.not. STATUS) CALL LIB$SIGNAL(%val(STATUS)) 
 
 STATUS = SMG$PUT_CHARS ( DISPLAY1, 
     1  'This is row number 2 of 4, you see', 2, 1 ) 
 IF (.not. STATUS) CALL LIB$SIGNAL(%val(STATUS)) 
 
 STATUS = SMG$PUT_CHARS ( DISPLAY1, 
     1  'This is row number 3 of 4, you see', 3, 1 ) 
 IF (.not. STATUS) CALL LIB$SIGNAL(%val(STATUS)) 
 
 STATUS = SMG$PUT_CHARS ( DISPLAY1, 
     1  'This is row number 4 of 4, you see', 4, 1 ) 
 IF (.not. STATUS) CALL LIB$SIGNAL(%val(STATUS)) 
 
C Paste the virtual display. 
 
 STATUS = SMG$COPY_VIRTUAL_DISPLAY(DISPLAY1,DISPLAY2) 
 IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS)) 
 
 STATUS = SMG$LABEL_BORDER (DISPLAY1, 'Full Display',,,SMG$M_BOLD) 
 IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS)) 
 
 STATUS = SMG$LABEL_BORDER (DISPLAY2,'Viewport',,,SMG$M_BOLD) 
 IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS)) 
 
 STATUS = SMG$PASTE_VIRTUAL_DISPLAY ( DISPLAY1, PASTE1, 2, 2 ) 
 IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS)) 
 
 STATUS = SMG$CREATE_VIEWPORT ( DISPLAY2, 1, 5, 26, 55 ) 
 IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS)) 
 
 STATUS = SMG$PASTE_VIRTUAL_DISPLAY ( DISPLAY2, PASTE1, 8, 2 ) 
 IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS)) 
 
 CALL SMG$SET_PHYSICAL_CURSOR(PASTE1, 16, 1) 
 TYPE *, ' ' 
 TYPE *, LIB$SIGNAL(%VAL(STATUS)) 
 
 STATUS = SMG$GET_VIEWPORT_CHAR ( DISPLAY2, A, B, C, D ) 
 IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS)) 
 
 TYPE *, ' ' 
 WRITE(5,7) A,B 
7 FORMAT(1X,'Row start = ',I2,8X,'Column start = ',I2) 
 TYPE *, ' ' 
 WRITE(5,8) C,D 
8 FORMAT(1X,'Number of rows =',I2,4X,'Number of columns =',I3) 
 
 END 
 

このプログラムの出力は 図 8-23 に示すとおりです。

図 8-23 SMG$GET_VIEWPORT_CHAR ルーチンによって生成される出力



SMG$HOME_CURSOR
- Home Cursor

Home Cursor ルーチンは,仮想カーソルを仮想ディスプレイの指定した角に移動します。

形式

SMG$HOME_CURSOR display-id [,position-code]


戻り値

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

position-code

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


仮想カーソルの移動先を指定します。position-code 引数は,位置コードを格納したロングワードのアドレスです。

position-code 引数に対して指定できる値は次のとおりです。

コード 意味
SMG$C_UPPER_LEFT 1行目,1カラム目(左上の角)。
position-code 引数を指定しなかった場合には,これが省略時の設定である。
SMG$C_LOWER_LEFT n 行目,1カラム目(ただし, n はディスプレイ内の行数である)。つまり,左下の角である。入力を受け付けるときに,仮想ディスプレイを上向きにスクロールする場合には,このコードを使用すると便利である。
SMG$C_UPPER_RIGHT 1行目, m カラム目(ただし, m はディスプレイ内のカラム数である)つまり,右上の角である。
SMG$C_LOWER_RIGHT n 行目, m カラム目(ただし, n はディスプレイ内の行数であり, m はディスプレイ内のカラム数である)。つまり,右下の角である。


説明

SMG$HOME_CURSOR ルーチンは,position-code 引数に指定されたコードに従って,仮想カーソルを指定された仮想ディスプレイの角に移動します。仮想ディスプレイのサイズを知っておく必要はなく,また,仮想カーソルの位置も必要ありません。 position-code 引数を省略した場合には,SMG$HOME_CURSOR ルーチンは仮想カーソルを仮想ディスプレイの左上の角に移動します。

戻される状態値

SS$_NORMAL 正常終了。
SMG$_INVARG 引数に誤りがあります。
SMG$_INVDIS_ID display-id 引数に誤りがあります。
SMG$_WRONUMARG 引数の数が誤っています。


SMG$INIT_TERM_TABLE
- Initialize Terminal Table

Initialize Terminal Table ルーチンは,指定された漢字ターミナルに対して, TERMTABLE データベースを初期化することにより,その後の SMG$GET_TERM_DATA の呼び出しで,その漢字ターミナルに対する情報とコマンド文字列を検索できるようにします。

形式

SMG$INIT_TERM_TABLE terminal-name, termtable-address


戻り値

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



引数

terminal-name

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


漢字ターミナルの名前を指定します。terminal-name 引数は,ターミナル名を示すディスクリプタのアドレスです。名前は TERMTABLE.EXE 内のエントリでなければなりません。

termtable-address

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


TERMTABLE.EXE 内の特定のタイプの漢字ターミナルのエントリのアドレス。 termtable-address 引数は,ターミナル機能テーブルのアドレスが書き込まれる符号なしロングワードのアドレスです。

指定されたタイプの漢字ターミナルに対して SMG$GET_TERM_DATA ルーチンを呼び出す場合には,このアドレスを使用します。termtable-address 引数は SMG$INIT_TERM_TABLE_BY_TYPE ルーチンによっても与えられます。


説明

SMG$INIT_TERM_TABLE ルーチンは,その後で SMG$GET_TERM_DATA ルーチンを呼び出すときに,その漢字ターミナルに対して情報とコマンド文字列を検索できるように,指定された漢字ターミナルに対して TERMTABLE データベースを初期化します。このルーチンを使用しなければならないのは,漢字ターミナルに対して,直接日本語 SMG によるもの以外の入出力を実行する場合だけです。

SMG$INIT_TERM_TABLE ルーチンは,まずTERM$TABLOC という論理名の領域から TERMTABLE.EXE を検索します。TERMTABLE.EXE をその領域から検索できない場合には,このルーチンはグローバル・セクション SMG$TERMTABLE を検索します。


戻される状態値

SS$_NORMAL 正常終了。
SMG$_GBLSECMAP 正常終了。定義はグローバル・セクション TERMTABLE から検出されました。
SMG$_PRISECMAP 正常終了。定義は個人用の TERMTABLE から検出されました。
SMG$_UNDTERNAM ターミナル名が定義されていません。
SMG$_UNDTERNOP 未定義ターミナル。漢字ターミナルに対する定義を検索できず,個人用の TERMTABLE も見つかりませんでした。
SMG$_UNDTERNOS 未定義ターミナル。漢字ターミナルに対する定義を検索できず,システム TERMTABLE も見つかりませんでした。


前へ 次へ 目次 索引