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

前へ | 次へ | 目次 | 索引

rendition-set 引数を使用する場合には，display-id 引数を指定しなければなりません。

### rendition-complement

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

属性補足指定子。rendition-complement 引数は省略可能であり，ロングワード・ビット・マスクのアドレスです。ビット・マスク内に属性が設定されている場合には，ディスプレイ内で対応する属性が補足されます。rendition-set 引数に指定できる属性はすべて，rendition-complement 引数を使用して補足できます。rendition-complement 引数を使用する場合には， display-id 引数を指定しなければなりません。

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

### input-length

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

読み込んだバイト数が書き込まれます。input-length 引数は， SMG$READ_VERIFY ルーチンが読み込んだバイト数が書き込まれる，符号なしワードのアドレスです。

### character-set

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

入力されるテキストの文字集合。 character-set 引数は，文字集合コードを格納した符号なしマスク・ロングワードのアドレスです。この引数を省略した場合は，SMG$CREATE_VIRTUAL_DISPLAY ルーチンまたは SMG$CHANGE_VIRTUAL_DISPLAY ルーチンで設定された値が使用されます。この引数を省略し，かつ仮想ディスプレイが指定されていない場合には， SMG$DEFAULT_CHARACTER_SET 論理名で示される文字集合が使用されます。

character-set 引数として次の値を指定できます。

値 | 文字集合 (コードセット)
--- | ---
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$DEFAULT_CHARACTER_SET 論理名に定義できる値については， 第 2.2.14 項 の 表 2-2 を参照してください。

## 説明

> このルーチンは，指定された仮想キーボードから一連の文字を読み込み，そのシーケンスをピクチャ文字列に対して検査します。その後，読み込んだ文字を呼び出し側に戻します。呼び出し側は，終了文字を示すコードを戻すことも指定できます。表示属性の指定はプロンプト(プロンプトが存在する場合)と入力文字列のエコー表示の両方に適用されます。

> 読み込み/検査操作についての詳しい説明は，『OpenVMS I/O User's Reference Manual』を参照してください。 SMG$READ_VERIFY ルーチンを使用する場合には，ペーストボードと仮想ディスプレイの両方に対して，ディスプレイのバッチ処理を禁止しておかなければなりません。

> 入力文字の文字集合が，DEC漢字または Super DEC 漢字文字集合であった場合には，日本語SMGはかな漢字変換を行います。

## 戻される状態値

> SS$_NORMAL | 正常終了。
> SS$_ABORT | 実行中に入出力操作が強制終了されました (SMG$CANDEL_INPUTルーチンによって)。
> SS$_CANCEL | キューに登録中に入力操作が取り消されました (SMG$CANCEL_INPUTルーチンによって)。
> SMG$_DISREQ | SMG$READ_VERIFY ルーチンを呼び出したときに，右詰めが指定されました。 display-id 引数は，指定されませんでした。TERMTABLE.EXE からこの漢字ターミナルに対して SCROLL_REVERSE シーケンスが検索されませんでした。 display-id 引数を SMG$READ_VERIFY ルーチンの呼び出しに追加するか，または SCROLL_REVERSE シーケンスを TERMTABLE.EXE に追加してください。
> SMG$_EOF | ファイルの最後。
> SMG$_INVCOL | カラム番号の指定に誤りがあります。
> SMG$_INVDIS_ID | display-id 引数に誤りがあります。
> SMG$_INVKBD_ID | keyboard-id 引数に誤りがあります。
> SMG$_LENNOTEQL | picture-string 引数と initial-string 引数の長さが等しくありません。
> SMG$_LENMUSONE | fill-character 引数と clear-character 引数の長さは 1 でなければなりません。
> SMG$_WRONUMARG | 引数の数が誤っています。
> SS$_xxx | $QIOW から戻されたエラー。
> JSY$_xxx | JSY$ から戻されたエラー。
> LIB$_xxx | LIB$SCOPY_R_DX から戻されたエラー。
> RMS$_xxx | $GET から戻されたエラー(RMS$_EOF を除く)。
> IM$_xxx | IMLIB から戻されたエラー。

# SMG$REMOVE_LINE

> Remove a Line from a Virtual Display ルーチンは，SMG$DRAW_LINE または SMG$DRAW_RECTANGLEルーチンを使用して作成したラインを指定された仮想ディスプレイから削除します。

## 形式

> SMG$REMOVE_LINE display-id ,start-row ,start-column ,end-row ,end-column

## 戻り値

> ###

> 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 引数が全角文字上にあった場合には，それぞれの残る部分は未定義文字になります。

## 説明

> SMG$REMOVE_LINE ルーチンは，SMG$DRAW_LINE または SMG$DRAW_RECTANGLE ルーチンを使用して作成したラインを，指定された開始行/カラムから指定された終了行/カラムまで削除します。

> このルーチンはユーザが指定したラインを消去しますが，ラインの交点にあるライン描画文字は残されます(ライン描画文字は漢字ターミナルのライン描画文字集合です。この文字集合を使用できない場合には，+，-，および | が使用されます)。

> DEC漢字または Super DEC 漢字文字集合が使用されており，描画されたラインが全角文字に上にあった場合には，その全角文字の残りの部分は未定義文字になります。

## 戻される状態値

> SS$_NORMAL | 正常終了。
> SMG$_DIALINNOT | 斜めのラインは削除できません。
> SMG$_INVCOL | カラム番号が誤っています。指定されたカラムは仮想ディスプレイの外部です。
> SMG$_INVROW | 行番号が誤っています。指定された行は仮想ディスプレイの外部です。
> SMG$_WRONUMARG | 引数の数が誤っています。

# SMG$REPAINT_SCREEN

> Repaint Current Pasteboard ルーチンは，日本語 SMG ルーチンによるもの以外の入出力が実行された後，指定されたペーストボードを描き直します。

## 形式

> SMG$REPAINT_SCREEN pasteboard-id

## 戻り値

> ###

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

## 引数

> ### pasteboard-id

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

> リペイントされるペーストボードを指定します。 pasteboard-id 引数は，ペーストボード識別子を格納した符号なしロングワードのアドレスです。

## 説明

> SMG$REPAINT_SCREEN ルーチンは，指定されたペーストボードを描き直します。このルーチンは，外部エージェント(たとえば，ブロードキャスト・メッセージ)がペーストボードを乱したときに使用します。

## 戻される状態値

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

## 例

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

            IMPLICIT INTEGER (A-Z)

    C+
    C Create the virtual display by calling
    C SMG$CREATE_VIRTUAL_DISPLAY. To create
    C a border, we set BORDER = 1. No border
    C would be BORDER = 0.
    C-
            INCLUDE '($SMGDEF)'
            ROWS = 3
            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 using SMG$CREATE_PASTEBOARD.
    C-

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

    C+
    C Put data in the virtual display by calling SMG$PUT_CHARS.
    C-

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

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

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

    C+
    C Call SMG$PASTE_VIRTUAL_DISPLAY to paste the virtual display.
    C-

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

    C+
    C Mess up the screen with some FORTRAN output.
    C-

            WRITE (6,*) 'Mess up the screen.'
            WRITE (6,*) 'More mess.'

    C+
    C Call SMG$REPAINT_SCREEN to repaint the screen.
    C-

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

            END

> SMG$REPAINT_SCREEN ルーチンを呼び出す前にこの FORTRAN プログラムが生成する出力は 図 8-37 に示すとおりです。

> 図 8-37 SMG$REPAINT_SCREEN ルーチンを呼び出す FORTRAN プログラムが作成する出力

SMG$REPAINT_SCREEN ルーチンを呼び出した後で生成される出力は 図 8-38 に示すとおりです。

図 8-38 SMG$REPAINT_SCREEN ルーチンを呼び出す FORTRAN プログラムが生成する出力

# SMG$REPASTE_VIRTUAL_DISPLAY

> Repaste Virtual Display ルーチンは，仮想ディスプレイをペーストボードの新しい位置に移動します。ペースト順序も変更されます。

## 形式

> SMG$REPASTE_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 引数は，ペーストボード識別子を格納した符号なしロングワードのアドレスです。

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

> ### pasteboard-row

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

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

> ### pasteboard-column

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

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

> ### top-display-id

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

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

## 説明

> SMG$REPASTE_VIRTUAL_DISPLAY ルーチンを使用すれば，仮想ディスプレイをペーストボードの新しい位置に移動できます。このルーチンは SMG$UNPASTE_VIRTUAL_DISPLAY ルーチンと SMG$PASTE_VIRTUAL_DISPLAY ルーチンを呼び出します。このルーチンを実行すると，ペースト順序も変更されます。再ペースト操作が終了するまで，画面は変更されません。

> このルーチンを使用すると，仮想ディスプレイはペースト順序の一番上になります。ペースト順序を変更せずに，仮想ディスプレイを移動する場合には， SMG$MOVE_VIRTUAL_DISPLAY ルーチンを使用します。top-display-id 引数は省略可能であり，この引数を指定した場合には，SMG$REPASTE_VIRTUAL_DISPLAY ルーチンは，top-display-id 引数によって指定される仮想ディスプレイの下に，display-id 引数によって指定される仮想ディスプレイをペーストします。この場合，top-display-id 引数によって指定される仮想ディスプレイは，すでにペーストされていなければなりません。

## 戻される状態値

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

## 例

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

            IMPLICIT INTEGER (A-Z)

    C+
    C Include the SMG definitions. In particular, we want SMG$M_BORDER.
    C-

            INCLUDE '($SMGDEF)'

    C+
    C Create a virtual display with a border by calling
    C SMG$CREATE_VIRTUAL_DISPLAY.
    C-

            ROWS = 3
            COLUMNS = 50

            STATUS = SMG$CREATE_VIRTUAL_DISPLAY
         1          (ROWS, COLUMNS, DISPLAY1, SMG$M_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 Put data in the virtual display using SMG$PUT_CHARS.
    C-

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

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

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

    C+
    C Call SMG$PASTE_VIRTUAL_DISPLAY to paste the virtual display.
    C-

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

    C+
    C Move the virtual display by calling SMG$MOVE_VIRTUAL_DISPLAY.
    C-

            STATUS = SMG$MOVE_VIRTUAL_DISPLAY ( DISPLAY1, PASTE1, 10, 5 )
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))

    C+
    C Call SMG$REPASTE_VIRTUAL_DISPLAY to repaste the
    C original virtual display as it was.
    C-

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

            END

> 前へ | 次へ | 目次 | 索引