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

前へ | 次へ | 目次 | 索引

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 | 属性を無効にする。

### terminator-string

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

入出力を終了した文字。terminator-string 引数は省略可能であり，終了文字が書き込まれるディスクリプタのアドレスです。terminator-string 引数は，入出力を終了するために押されたキーではなく，実際の終了文字を戻します。

### character-set

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

入力される文字の文字集合を指定します(省略可能)。 character-set 引数は入力される文字集合を格納する符号なしロングワードのアドレスです。この引数が省略された場合には，指定された仮想ディスプレイの省略時の文字集合が使用されます。この引数を省略し，かつ仮想ディスプレイが指定されていない場合には， 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 を参照してください。

## 説明

> SMG$READ_STRING ルーチンは，仮想キーボードから読み込んだ文字列を戻します。 SMG$READ_STRING ルーチンを使用する場合には，ペーストボードと仮想ディスプレイの両方に対して，ディスプレイのバッチ処理を禁止しておかなければなりません。

> SMG$READ_STRING が読み込んだテキストは，SMG$READ_COMPOSED_LINE を使用して後で再呼び出しできるように保存されます。表示属性の指定はプロンプト(プロンプト文字列が存在する場合)と入力文字のエコー表示の両方に対して適用されます。

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

## 戻される状態値

> 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$_INVMAXLEN | 512 より大きい値が最大バイト数として指定されました。
> SMG$_WRONUMARG | 引数の数が誤っています。
> SS$_xxx | $QIOW から戻されたエラー。
> JSY$_xxx | JSY$_xxx から戻されたエラー。
> LIB$_xxx | LIB$SCOPY_R_DX から戻されたエラー。
> RMS$_xxx | $GET から戻されたエラー(RMS$_EOF を除く)。
> IM$_xxx | IMLIB から戻されたエラー。

## 例

#1
    C+
    C This FORTRAN example program demonstrates how to use
    C SMG$READ_STRING.
    C
    C This routine creates a virtual display and writes it to the pasteboard.
    C Data is placed in the virtual display using SMG$PUT_CHARS.
    C-

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

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

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

            ROWS = 7
            COLUMNS = 50

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

    C+
    C Use SMG$CREATE_PASTEBOARD to create the pasteboard.
    C-

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

    C+
    C Create a virtual keyboard by calling SMG$CREATE_VIRTUAL_KEYBOARD.
    C-

            STATUS = SMG$CREATE_VIRTUAL_KEYBOARD ( KEYBOARD1 )
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))

    C+
    C Use SMG$PASTE_VIRTUAL_DISPLAY to paste the virtual display
    C at row 3, column 9.
    C-

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

    C+
    C Read a string from the virtual pasteboard using SMG$READ_STRING.
    C-

            STATUS = SMG$READ_STRING ( KEYBOARD1,
         1          TEXT, 'prompt', 20, , , , , , DISPLAY1 )
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))

            END

> SMG$READ_STRING ルーチンを呼び出す前に，この FORTRAN プログラムによって生成される出力は 図 8-35 に示すとおりです。このプログラムは入力を待ちます。カーソルは "prompt" という単語のすぐ後に移動します。

> 図 8-35 SMG$READ_STRING ルーチンを呼び出す前に生成される出力

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

図 8-36 SMG$READ_STRING ルーチンを呼び出した後で生成される出力

# SMG$READ_VERIFY

> Read and Verify a String ルーチンは，一連の文字列を読み込み，検査します。

## 形式

> SMG$READ_VERIFY keyboard-id ,resultant-string ,initial-string ,pricture-string ,fill-character ,clear-character [,prompt-string] [,modifiers] [,timeout] [,placeholder-arg] [,initial-offset] [,word-terminator-code] [,display-id] [,alternate-echo-string] [,alternate-display-id] [,rendition-set] [,rendition-complement] [,input-length] [,character-set]

## 戻り値

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

## 引数

> ### keyboard-id

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

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

> 仮想キーボードは SMG$CREATE_VIRTUAL_KEYBOARD ルーチンを呼び出すことにより作成されます。

> ### resultant-string

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

> SMG$READ_VERIFY ルーチンが読み込んだ文字列が書き込まれる出力文字列。 resultant-string 引数は，この出力文字列を示すディスクリプタのアドレスです。

> ### initial-string

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

> 入力フィールドの初期文字を格納した入力文字列。initial-string 引数は，入力文字列を示すディスクリプタのアドレスです。

> ### picture-string

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

> 入力フィールドがどのようになるかを示す文字列。picture-string 引数は，ピクチャ文字列を示すディスクリプタのアドレスです。

> picture-string 引数に対して指定できる値については，『OpenVMS I/O User's Reference Manual』を参照してください。

> character-set に SMG$C_KANJI または SMG$C_SDKを指定する場合には， picture-string には TRA$V_CV_ANY 以外の値は指定できません。

> ### fill-character

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

> フィル文字。fill-character 引数は，initial-string 引数でフィル文字として使用される文字を格納した文字列を示すディスクリプタのアドレスです。

> fill-character 引数についての詳しい説明は，『OpenVMS I/O User's Reference Manual』を参照してください。

> ### clear-character

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

> クリア文字。clear-character 引数は，initial-string 引数内の，各 fill-character 引数に対して表示される文字を格納した文字列を示すディスクリプタのアドレスです。

> clear-character 引数についての詳しい説明は，『OpenVMS I/O User's Reference Manual』を参照してください。

> ### prompt-string

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

> プロンプト文字列。prompt-string 引数は，SMG$READ_VERIFYルーチンの読み込み操作に対するプロンプトとして使用される文字列を示すディスクリプタのアドレスです。これは省略可能な引数です。

> ### modifiers

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

> 修飾子。modifiers 引数は，省略可能な動作を指定するロングワード・ビット・マスクです。定義されているビットは，$QIO 項目リスト・エントリ TRM$_MODIFIERS に対するビットと同じです。これは省略可能な引数です。

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

> TRM$M_TM_CVTLOW | 小文字を大文字に変換します。 ASCII 文字および補助文字集合についてのみ有効です。
> TRM$M_TM_NOECHO | 入力された文字は画面に表示されません。入力文字列の文字集合としてDEC漢字文字集合または Super DEC漢字が指定された場合には無視されます。
> TRM$M_TM_PURGE | 読み込み操作を実行する前に，先読みを可能にするバッファを消去します。
> TRM$M_TM_TRMNOECHO | 終了文字は入力されません。
> TRM$M_TM_NOEDIT | 拡張編集機能は禁止されます。入力文字列の文字集合としてDEC漢字文字集合または Super DEC漢字が指定された場合には，行編集は禁止されません。
> TRM$M_TM_NORECALL | 行再呼び出し機能は禁止されます。
> TRM$M_TM_AUTO_TAB | 入力フィールドが満杯になった時点で，入力が終了します。入力文字列の文字集合としてDEC漢字または Super DEC 漢字文字集合が指定された場合には無視されます。
> TRM$M_TM_R_JUST | 入力は右詰めされます。入力文字列の文字集合としてDEC漢字文字集合または Super DEC漢字が指定された場合には無視されます。

> 修飾子についての詳しい説明は，『OpenVMS I/O User's Reference Manual』のターミナル・ドライバの節を参照してください。TRM$ シンボルは， HP が提供するシステム・シンボル・ライブラリ内の $TRMDEF マクロ/モジュールによって定義されています。

> ### timeout

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

> 時間切れの値。timeout 引数は，時間切れの値を格納した符号付きロングワードのアドレスです。timeout 引数は省略可能です。 timeout 引数を指定した場合には，時間切れの前に入力されたすべての文字，または終了文字が入力される前に入力されたすべての文字はバッファに書き込まれます。timeout 引数を省略した場合には，終了文字が入力されるまで，文字はバッファに書き込まれます。

> ### placeholder-arg

> VMS 用法: | unspecified
> データ型: | unspecified
> アクセス: | read only
> 受け渡し方: | unspecified

> プレースホルダ引数。OpenVMS ターミナル・ドライバは読み込み/検査操作を実行するときに，この引数を無視します。

> ### initial-offset

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

> 入力文字列オフセット。initial-offset 引数は，プロンプトを表示した後，入力を待つまでの間に出力されるバイト数 (initial-string 引数からのバイト数) を格納した符号付きロングワードのアドレスです。

> ### word-terminator-code

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

> キー終了文字コード。word-terminator-code 引数は，どの文字またはどのキーが読み込み操作を終了するかを示すコードを SMG$READ_VERIFY ルーチンが書き込む符号なしワードです。キー終了文字コードは SMG$K_TRM_keyname の形式です。キー名については 第 3 章 の 表 3-1 を参照してください。

> ### display-id

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

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

> 複数の仮想ディスプレイが存在する場合には，各仮想ディスプレイにはそれぞれ仮想カーソルの位置が割り当てられています。同時に，現在の物理カーソルの位置に対応する物理カーソル位置が 1 つだけ存在します。display-id 引数を指定した場合には，読み込み操作は，指定された仮想ディスプレイ内の現在の仮想カーソルの位置から開始されます。prompt-string 引数の長さと initial-offset 引数，および入力された文字列の合計は，ディスプレイ内の表示可能なカラム数に制限されます。

> ### alternate-echo-string

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

> 代替エコー表示文字列。alternate-echo-string 引数は，読み込み操作で最初の文字が入力された後にプリントされる文字列です。これは省略可能な引数です。

> ### alternate-display-id

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

> 代替ディスプレイ識別子。alternate-display-id 引数は， alternate-echo-string 引数がプリントされる仮想ディスプレイの識別子を格納した符号付きロングワードです。これは省略可能な引数です。この引数を指定した場合には，出力はその仮想ディスプレイの現在の仮想カーソルの位置から開始されます。この引数を省略した場合には，display-id 引数の値が省略時の設定として使用されます。display-id 引数を指定しなかった場合には，出力は現在の物理カーソルの位置から開始されます。

> ### rendition-set

> VMS 用法: | 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 | ユーザ定義属性を表示します。

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