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

前へ | 次へ | 目次 | 索引

SMG$DEFAULT_CHARACTER_SET 論理名に定義できる値については， 第 2.2.14 項 の 表 2-2 を参照してください。

## 説明

> SMG$READ_COMPOSED_LINE ルーチンは，指定されたキー・テーブルに定義されている方法で，通常のキー・ストロークとキー同値文字列で構成される 1 行を読み込みます。キー定義の属性は，同値文字列をエコー表示するかどうかと，定義されているキー・ストロークによって読み込み操作を終了するかどうかを制御します。通常のキー・ストロークは常にエコー表示されます。

> キャリッジ・リターンは常に読み込み操作を終了します。`[Ctrl/Z]`が入力されたときに，キー定義テーブルに `[Ctrl/Z]`に対する定義が登録されていない場合には， "EXIT" がエコー表示され，読み込み操作は終了します。 `[Ctrl/Z]`が行の最初の文字として入力された場合には，SMG$_EOF が戻されます。それ以外の場合には，次の読み込み操作で SMG$_EOF が戻されます。キー定義に属性として指定されていない限り，他の終了文字は認識されません。

> 矢印キー(`[↑]`，`[↓]`)と`[Ctrl/B]`が定義されていない場合には， SMG$READ_xxxx ルーチンを使用して読み込んだ前の行は，矢印キー(`[↑]`， `[↓]`)を使用して再呼び出しすることができます。後で再呼び出しするために保存される行数は，SMG$CREATE_VIRTUAL_KEYBOARD ルーチンの recall-size 引数に応じて異なります。省略時の設定は 20 行です。

> SMG$READ_COMPOSED_LINE ルーチンは入力操作を実行する前に，SMG$FLUSH_BUFFER ルーチンを呼び出します。このため，入力操作を開始するときに，画面イメージは常に最新の状態に更新されます。SMG$READ_COMPOSED_LINE ルーチンを使用する場合には，ペーストボードと仮想ディスプレイの両方に対して，ディスプレイ・バッチ処理を禁止しておかなければなりません。

> 入力文字の文字集合がDEC漢字または Super DEC 漢字文字集合であった場合には， SMG$READ_COMPOSED_LINE ルーチンが，かな漢字変換の処理を行います。この場合，変換に使用されるキーは， SMG$DEFINE_KEY ルーチンおよび SMG$ADD_KEY_DEF ルーチンによるキー定義に優先されます。

## 戻される状態値

> SS$_NORMAL | 正常終了。
> SS$_ABORT | 実行中に入出力操作が強制終了されました (SMG$CANCEL_INPUTルーチンにより)。
> SS$_CANCEL | キューに登録している間に入出力操作が取り消されました (SMG$CANCEL_INPUTルーチンにより)。
> SMG$_EOF | ファイルの最後。
> SMG$_ILLBATFNC | バッチ処理されているディスプレイからの入力は認められません。
> SMG$_INVARG | 引数が誤っています。
> SMG$_INVCOL | カラム番号に誤りがあります。読み込み操作が仮想ディスプレイの外側のカラムを使用しようとしました。
> SMG$_INVDIS_ID | display-id 引数に誤りがあります。
> SMG$_INVKBD_ID | keyboard-id 引数に誤りがあります。
> SMG$_INVKTB_ID | key-table-id 引数に誤りがあります。
> SMG$_WRONUMARG | 引数の数が誤っています。
> SS$_xxx | $QIOWから戻された状態値。
> JSY$_xxx | JSY$_xxx から戻された状態値。
> LIB$_xxx | LIB$COPY_R_DX から戻された状態値。
> RMS$_xxx | $GET から戻された状態値(RMS$_EOF を除く)。
> IM$_xxx | IMLIB から戻された状態値。

# SMG$READ_FROM_DISPLAY

> Read Text from Display ルーチンは，仮想ディスプレイから 1 行のテキストを読み込みます。

## 形式

> SMG$READ_FROM_DISPLAY display-id ,resultant-string [,terminator-string] [,start-row] [,rendition-string] [,character-set-string]

## 戻り値

> ###

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

> ### resultant-string

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

> SMG$READ_FROM_DISPLAY ルーチンが仮想ディスプレイから読み込んだ情報を書き込む文字列。resultant-string 引数は，文字列が書き込まれる文字列を示すディスクリプタのアドレスです。

> ### terminator-string

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

> 逆向き検索を終了する終了文字を格納した文字列。戻される文字列の開始位置を決定するために用いられます。terminator-string 引数は，終了文字の文字列を示すディスクリプタのアドレスです。terminator-string 引数を省略した場合には，逆向き検索は実行されず，戻される文字列はカーソルの現在の位置にある文字から始まります。

> ### start-row

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

> start-row 引数は，読み込まれる仮想ディスプレイの行番号を格納した，符号付きロングワードのアドレスです。この引数は省略可能です。

> ### rendition-string

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

> ビデオ属性を制御するビット・マスク文字列(省略可能)。 rendition-string 引数は，ビット・マスク文字列を示すディスクリプタのアドレスです。ディスプレイ上のテキスト文字列のカラムに対応する属性を指定することができます。この rendition-string 引数で指定できる属性は次のとおりです。

> SMG$M_BLINK | 点滅文字を指示します。
> SMG$M_BOLD | 通常より明るい輝度の文字を指定します。
> SMG$M_REVERSE | 反転表示文字を指示します。つまり，仮想ディスプレイの現在の属性の反対の状態で文字を表示しています。
> SMG$M_UNDERLINE | 下線付き文字を指示します。
> SMG$M_INVISIBLE | 表示されない文字を指定します。つまり，文字は仮想ディスプレイ内に存在しますが，ペーストボードには表示されていません。

> ### character-set-string

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

> 文字集合を示すバイト文字列(省略可能)。 character-set-string 引数は文字集合の文字列を示すディスクリプタのアドレスです。ディスクリプタ中の各バイトの値が，ディスプレイ中のテキスト文字列のバイトに対応する文字集合を示します。この character-set-string 引数に返される値は次の値の組み合せからなります。

> 値 | 文字集合 (コードセット)
> --- | ---
> SMG$C_ASCII | ASCII文字集合
> SMG$C_SPEC_GRAPHICS | DEC特殊文字集合
> SMG$C_SUPPLEMENTAL | 補助文字集合 1
> SMG$C_KANJI | DEC漢字文字集合
> SMG$C_JIS_KANA | JISカタカナ文字集合
> SMG$C_UNKNOWN | 未定義文字集合
> SMG$C_SDK | Super DEC 漢字コードセット

1DEC 補助文字集合または Latin-1 文字集合のいずれか。

## 説明

> SMG$READ_FROM_DISPLAY ルーチンは，指定された仮想ディスプレイの現在の行のすべてのテキストまたは一部のテキストを格納する文字列を戻します。 terminator-string 引数を省略した場合には，現在の行の内容(現在のカラム位置から右端のカラム位置まで)が戻されます。

> 現在のカラム位置が，全角文字の右半分である場合には，その位置は未定義文字として扱われます。 start-row 引数を指定した場合には，start-row 引数によって指定される行の1カラム目から右端のカラムまでの内容が resultant-string 引数に戻されます。start-row 引数を指定した場合には，terminator-string 引数は無視されます。

> terminator-string 引数を指定した場合には，その文字列内の各文字は逆向き検索の終了文字として機能します。つまり，戻される最初の文字列を判断するために使用されます。指定された終了文字がまったく検出されない場合には，検索操作はその行の最初の文字位置で終了します。

> 線画を読みこむ場合には，装置に依存しない文字 (+, --, |) で戻されます。

## 戻される状態値

> SS$_NORMAL | 正常終了。
> SMG$_INVDIS_ID | display-id 引数に誤りがあります。
> SMG$_DSPIN_USE | 同じディスプレイへの日本語SMGルーチンコールを中断させた AST ルーチンから，日本語 SMGルーチンが呼ばれました。
> SMG$_KBDIN_USE | 2 回目または次の読み込み操作で，複数の QIO が同じチャネルを使用しようとしました。
> LIB$_INSVIRMEM | 仮想メモリが不足しています。
> LIB$_INVSTRDES | 文字列ディスクリプタに誤りがあります。

## 例

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

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

            IMPLICIT INTEGER (A-Z)
            INCLUDE '($SMGDEF)'
            CHARACTER*80 TEXT

    C+
    C Use SMG$CREATE_VIRTUAL_DISPLAY to create the virtual display
    C and give it a border.
    C-

            ROWS = 5
            COLUMNS = 60

            STATUS = SMG$CREATE_VIRTUAL_DISPLAY
         1  (ROWS, COLUMNS, DISPLAY1, SMG$M_BORDER)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))

    C+
    C Create the pasteboard by calling SMG$CREATE_PASTEBOARD.
    C-

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

    C+
    C Call SMG$PASTE_VIRTUAL_DISPLAY and SMG$PUT_LINE to paste
    C the virtual display and put some text on line 2.
    C-

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

            STATUS = SMG$PUT_LINE ( DISPLAY1, ' ' )
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))

            STATUS = SMG$PUT_LINE ( DISPLAY1,
         1          'This is an example of using SMG$READ_FROM_DISPLAY.' )
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))

    C+
    C Use SMG$READ_FROM_DISPLAY to read line 2 from the virtual
    C display, starting at column 22.
    C-

            STATUS = SMG$SET_CURSOR_ABS ( DISPLAY1, 2, 22 )
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))

    C+
    C Search line 2 from column 22 to column 1 for the null string.
    C Since no terminator will be supplied, no "back-searching" will take
    C place. TEXT will be assigned the "value" of the line from
    C column 22 to the rightmost column.
    C-

            STATUS = SMG$READ_FROM_DISPLAY ( DISPLAY1, TEXT )
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))

    C+
    C Put the line of text found into the virtual display at row 4,
    C column 10 by calling SMG$SET_CURSOR_ABS and SMG$PUT_LINE.
    C-

            STATUS = SMG$SET_CURSOR_ABS ( DISPLAY1, 4, 10 )
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))

            STATUS = SMG$PUT_LINE ( DISPLAY1, TEXT )
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))

    C+
    C Use SMG$SET_CURSOR_ABS to set the cursor back to line 2, column 22.
    C-

            STATUS = SMG$SET_CURSOR_ABS ( DISPLAY1, 2, 22 )
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))

    C+
    C Use SMG$READ_FROM_DISPLAY to search line 2 from column 22 to
    C column 1 for an "f".  Now, "back-searching" will take place.
    C Starting at column 22, "back-track" to column 1 looking for "f".
    C Text will then be assigned the "value" of the line from the
    C present cursor position (where the "f" is, to the rightmost
    C column.
    C-

            STATUS = SMG$READ_FROM_DISPLAY ( DISPLAY1, TEXT, 'f' )
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))

    C+
    C Put the line of text found into the virtual display at row 4, column 10.
    C-

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

            STATUS = SMG$PUT_LINE ( DISPLAY1, TEXT )
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))

            END

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

> 図 8-33 SMG$READ_FROM_DISPLAY ルーチンを呼び出す出力

# SMG$READ_KEYSTROKE

> Read a Single Character ルーチンは，キーストロークを読み込み，そのキーストロークの終了文字コードを戻します。

## 形式

> SMG$READ_KEYSTROKE keyboard-id ,word-terminator-code [,prompt-string] [,timeout] [,display-id] [,rendition-set] [,rendition-complement]

## 戻り値

> ###

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

## 引数

> ### keyboard-id

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

> キーボード識別子。keyboard-id 引数は，キーストロークが読み込まれる仮想キーボードの識別子を格納した符号なしロングワードです。

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

> ### word-terminator-code

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

> キー終了文字コード。word-terminator-code 引数は，どの文字またはどのキーが読み込み操作を終了したかを示すコードが書き込まれる符号なしワードです。キー終了文字コードは SMG$K_TRM_keyname の形式です。キー名は 第 3 章 の 表 3-1 に示すとおりです。

> ### prompt-string

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

> プロンプト文字列。prompt-string 引数は省略可能な文字列であり，読み込み操作に対するプロンプトとして使用されます。

> ### timeout

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

> 時間切れの値。timeout 引数は省略可能です。この引数を指定した場合には，時間切れの前に入力されたキーストロークは読み込まれます。

> ### display-id

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

> 仮想ディスプレイ識別子。display-id 引数は省略可能であり，読み込み操作が実行される仮想ディスプレイの識別子を格納した，符号なしロングワードのアドレスです。

> 複数の仮想ディスプレイがペーストされているときに， prompt-string 引数を指定する場合には，プロンプト文字列をどの仮想ディスプレイに書き込むかを指定するために，display-id 引数も指定しなければなりません。prompt-string 引数を指定しない場合には， display-id 引数も指定しないでください。

> 複数の仮想ディスプレイが存在する場合には，各仮想ディスプレイにはそれぞれ仮想カーソルが対応づけられます。同時に，物理カーソルの現在の位置に対応する物理カーソルが 1 つだけ設定されます。

> display-id 引数を指定した場合には，読み込み操作は指定された仮想ディスプレイ内の現在の仮想カーソルの位置から開始されます。display-id 引数を省略した場合には，読み込み操作は現在の物理カーソルの位置から開始されます。prompt-string 引数入力されるキーの合計の長さは，仮想ディスプレイに表示可能なカラム数に制限されます。

> ### 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-set 引数を使用する場合には，display-id 引数を指定しなければなりません。

> ### rendition-complement

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

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

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