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

前へ | 次へ | 目次 | 索引

# SMG$PASTE_VIRTUAL_DISPLAY

> Paste Virtual Display ルーチンは，仮想ディスプレイをペーストボードにペーストします。

## 形式

> SMG$PASTE_VIRTUAL_DISPLAY

> - display-id

> - ,pasteboard-id

> - [,pasteboard-row]

> - [,pasteboard-column]

> - [,top-display-id]

## 戻り値

> ###

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

> ### pasteboard-id

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

> 仮想ディスプレイがペーストされるペーストボードの識別子。 pasteboard-id 引数は，ペーストボード識別子を格納した符号なしロングワードのアドレスです。

> ### pasteboard-row

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

> 指定された仮想ディスプレイの1行目が置かれるペーストボードの行。 pasteboard-row 引数は，行の位置を格納した符号付きロングワードのアドレスです。

> pasteboard-row 引数が省略された場合，仮想ディスプレイがペーストされた最後の行が用いられます。pasteboard-row 引数が省略され，かつ仮想ディスプレイが1度もペーストされなかったことがない場合には1行目が用いられます。

> ### pasteboard-column

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

> 指定された仮想ディスプレイの1カラム目が置かれるペーストボードのカラム。 pasteboard-column 引数は，カラム位置を格納した符号付きロングワードのアドレスです。

> pasteboard-columm 引数が省略された場合，仮想ディスプレイがペーストされた最後のカラムが用いられます。pasteboard-columm 引数が省略され，かつ仮想ディスプレイが1度もペーストされなかったことがない場合には，1カラム目が用いられます。

> ### top-display-id

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

> display-id 引数で指定された仮想ディスプレイをその下にペーストする仮想ディスプレイの識別子。 top-display-id 引数は省略可能で，この識別子を格納した符号なしロングワードのアドレスです。この引数で指定された仮想ディスプレイはすでにペーストされていなくてはいけません。

## 説明

> top-display-id 引数が指定されていない場合， SMG$PASTE_VIRTUAL_DISPLAY はペーストボードに仮想ディスプレイを置き，仮想ディスプレイを表示可能にします。top-display-id 引数が指定されている場合は，SMG$PASTE_VIRTUAL_DISPLAY は top-display-id 引数で指定された仮想ディスプレイの下に display-id 引数で指定された仮想ディスプレイをペーストします。この場合，top-display-id 引数で指定された仮想ディスプレイはすでにペーストされていなくてはなりません。

> 仮想ディスプレイがバッチ処理されている場合はこのルーチンを使用してはいけません。

## 戻される状態値

> SS$_NORMAL | 正常終了。
> SMG$_ILLBATFNC | 仮想ディスプレイはバッチ処理されています。誤操作です。
> SMG$_INVDIS_ID | display-id 引数が誤っています。
> SMG$_INVPAS_ID | pasteboard-id 引数が誤っています。
> SMG$_WRONUMARG | 引数の数が誤っています。

# SMG$POP_VIRTUAL_DISPLAY

> Delete a Series of Virtual Displays ルーチンは，指定された仮想ディスプレイを削除し，さらに指定されたペーストボード上の指定された仮想ディスプレイの上にペーストされているすべてのディスプレイを削除します。

## 形式

> SMG$POP_VIRTUAL_DISPLAY display-id ,pasteboard-id

## 戻り値

> ###

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

> ### pasteboard-id

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

> ディスプレイの削除操作が実行されるペーストボードを指定します。 pasteboard-id 引数は，ペーストボード識別子を格納した符号なしロングワードのアドレスです。

## 説明

> SMG$POP_VIRTUAL_DISPLAY ルーチンは，指定されたペーストボードから 1 つ以上のディスプレイを削除します(単にペーストを取り消すだけではありません)。この場合，指定されたディスプレイから削除を開始し，その後，そのディスプレイよりペースト順序が上にあるすべてのディスプレイも削除します(つまり，指定されたディスプレイの後でペーストされたすべてのディスプレイを削除します)。

## 戻される状態値

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

# SMG$PUT_CHARS

> Write Characters to a Virtual Display ルーチンは，仮想ディスプレイ内に指定されたテキストを書き込みます。

## 形式

> SMG$PUT_CHARS display-id ,text [,start-row] [,start-column] [,flags] [,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

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

> 仮想ディスプレイへ書き込まれる文字。 text 引数は，文字列を示すディスクリプタのアドレスです。

> ### 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 引数は，カラム位置を格納した符号付きロングワードのアドレスです。この引数を省略した場合は，出力は現在のカラムから開始されます。
> 全角文字の右半分からカラムが始まる場合は，その文字の左半分は未定義文字になります。

> ### flags

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

> 文字書き込み前の動作を指定する省略可能なビット・マスク。 flags 引数は，フラグを格納した符号なしロングワードのアドレスです。この引数に対して指定できる値は次のとおりです。

> 0 | 行を消去しないことを指定します(省略時の設定値)。
> SMG$M_ERASE_LINE | 行全体を消去します。
> SMG$M_ERASE_TO_EOL | 行の残りの部分を消去します。

> ### 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$PUT_CHARS ルーチンはテキストを指定された仮想ディスプレイに書き込み，既存のテキストを置換します。このルーチンは 1 行だけを書き込みます。既存のテキストを保存して，新しいテキストを書き込む場合は，SMG$INSERT_CHARS ルーチンを使用します。

> flags 引数を省略した場合は，SMG$PUT_CHARS ルーチンは，新しいテキストが書き込まれる文字位置だけを変更します。しかし，flags 引数に対して SMG$M_ERASE_LINE を指定することにより，新しいテキストを書き込む前に行を消去することができます。また，flags 引数に SMG$M_ERASE_TO_EOL を指定することにより，テキストを書き込んだ後で残りの行を消去することも可能です。カーソルは，最後に書き込まれたテキストのすぐ後の文字位置に設定されます。仮想ディスプレイからあふれた分の文字は切り捨てられますが，仮想ディスプレイに対して SMG$M_TRUNC_ICON 属性が設定されている場合には，SMG$PUT_CHARS ルーチンが行の一部を切り捨てたことを示すアイコンを出力します。

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

> DEC漢字または Super DEC 漢字文字集合を使用する際に，全角文字の右半分から書き込み操作が始まる場合は，その文字の左半分は未定義文字になります。また，全角文字の左半分で書き込み操作が終了する場合は，その文字の右半分は未定義文字になります。さらに，行の一部が切り捨てられる際に，全角文字の右半分から切り捨てられる場合は，その文字の左半分は未定義文字になります。

## 戻される状態値

> SS$_NORMAL | 正常終了。
> LIB$_INVSTRDES | 文字列ディスクリプタが誤っています。
> SMG$_INVCOL | カラム位置が誤っています。
> SMG$_INVDIS_ID | display-id 引数が誤っています。
> SMG$_INVROW | 行の位置が誤っています。
> SMG$_WILUSERMS | ペーストボードがビデオ・ターミナルでありません。
> SMG$_WRONUMARG | 引数の数が誤っています。

## 例

#1
    C+
    C This FORTRAN example program demonstrates the use of
    C SMG$PUT_CHARS.
    C-

            INTEGER SMG$CREATE_VIRTUAL_DISPLAY, SMG$CREATE_PASTEBOARD
            INTEGER SMG$PASTE_VIRTUAL_DISPLAY,  SMG$PUT_CHARS
            INTEGER DISPLAY1, PASTE1, ROWS, COLUMNS, BORDER, STATUS
    C+
    C Create the virtual display. To give it a border, set BORDER = 1.
    C 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 Create the pasteboard.
    C-

            STATUS = SMG$CREATE_PASTEBOARD (PASTE1)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))

    C+
    C Put data in the virtual display.
    C-

            STATUS = SMG$PUT_CHARS ( DISPLAY1,
         1        ' This virtual display has 7 rows and 50 columns.', 2, 1 )
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))

            STATUS = SMG$PUT_CHARS ( DISPLAY1,
         1        ' This is a bordered virtual display.', 4, 1 )
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))

            STATUS = SMG$PUT_CHARS ( DISPLAY1,
         1        ' SMG$PUT_CHARS puts data in this virtual display.', 6, 1 )
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))

    C+
    C Paste the virtual display.
    C-

            STATUS = SMG$PASTE_VIRTUAL_DISPLAY ( DISPLAY1, PASTE1, 4, 15 )
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))

            END

> この FORTRAN プログラムによって生成される出力は， 図 8-30 に示すとおりです。

> 図 8-30 SMG$PUT_CHARS ルーチンを呼ぶ FORTRAN プログラムによって生成される出力

前へ | 次へ | 目次 | 索引