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

前へ | 次へ | 目次 | 索引

# SMG$GET_TERM_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 ルーチンは，指定されたビューポートの属性を戻します。

## 形式

> 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 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 ルーチンは，仮想カーソルを仮想ディスプレイの指定した角に移動します。

## 形式

> 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 ルーチンは，指定された漢字ターミナルに対して， 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 も見つかりませんでした。

前へ | 次へ | 目次 | 索引