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

前へ | 次へ | 目次 | 索引

flags 引数が自動改行を指定した場合には，line-advance 引数で指定した行数だけスクロールされ，あふれた文字を次の行に挿入するための空間が作成されます。次の行はスクロールの方向( direction 引数)によって決定されます。flags 引数で自動改行を指定していない場合は，あふれた文字は切り捨てられます。

SMG$PUT_LINE_WIDEルーチンを呼び出した後，仮想カーソルの位置は出力の対象となる次の行の 1 カラム目に設定されます。出力の対象となる次の行は， line-advance 引数によって決定されます。 SMG$PUT_LINE ルーチンを続けて呼び出しても，前の出力の上に新しい出力が重ならないように，line-advance 引数のシステム設定値は 1 になっています。

仮想ディスプレイ上にテキスト行を書き込むための日本語 SMG ルーチンとしては，他に SMG$PUT_LINEルーチンと SMG$PUT_LINE_HIGHWIDEルーチンがあります。

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

## 戻される状態値

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

## 例

#1
    C+
    C This FORTRAN example program demonstrates the use of
    C SMG$PUT_LINE_WIDE.
    C
    C Include the SMG definitions. In particular, we want SMG$M_BORDER and
    C SMG$M_UNDERLINE.
    C-

            INCLUDE '($SMGDEF)'
            INTEGER SMG$CREATE_VIRTUAL_DISPLAY, SMG$CREATE_PASTEBOARD
            INTEGER SMG$PASTE_VIRTUAL_DISPLAY,  SMG$PUT_LINE_WIDE
            INTEGER DISPLAY1, PASTE1, ROWS, COLUMNS, STATUS
            CHARACTER*34 TEXT(3)

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

            ROWS = 7
            COLUMNS = 70

            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 Use SMG$PUT_LINE to put data in the virtual display.
    C-

            TEXT(1) = 'This virtual display has 7'
            TEXT(2) = 'rows and 70 columns.'
            TEXT(3) = 'Text entered by SMG$PUT_LINE_WIDE.'

    C+
    C After the first line of text is printed, advance two lines.
    C-

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

    C+
    C Underline the next line of text. Notice that 34 characters are being
    C underlined. Advance 1 line of text after displaying the line.
    C-

            STATUS = SMG$PUT_LINE_WIDE ( DISPLAY1, TEXT(2), 1,
         1          SMG$M_UNDERLINE )
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))

    C+
    C Display the third line of text.
    C-

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

    C+
    C Paste the virtual display using SMG$PASTE_VIRTUAL_DISPLAY.
    C-

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

            END

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

> 図 8-32 SMG$PUT_LINE_WIDEを呼び出すFORTRANプログラムによって生成される出力

# SMG$PUT_STATUS_LINE

> Output Line of Text to Hardware Status Line ルーチンは，1行のテキストをハードウェア・ステータス行に出力します。

## 形式

> SMG$PUT_STATUS_LINE pasteboard-id ,text [,character-set]

## 戻り値

> ###

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

## 引数

> ### pasteboard-id

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

> ハードウェア・ステータス行をもつペーストボードを指定します。 pasteboard-id 引数は，ペーストボード識別子を格納した符号なしロングワードのアドレスです。

> ### text

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

> ハードウェア・ステータス行に書き込まれる文字。text 引数はテキストを指すディスクリプタのアドレスです。

> ### character-set

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

> 文字集合指定子。 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$PUT_STATUS_LINEルーチンは，1行のテキストをターミナルのハードウェア・ステータス行に出力します。一部のターミナルでは，スクリーンの一番下(25行目)にハードウェア・ステータス行があります。このステータス行が"ホストから書き込み可能"として設定されている場合には，このルーチンを使用して1行のテキストをステータス行に出力できます(ハードウェア・ステータス行を使用できない場合には，エラーとして SMG$_OPNOTSUPが戻されます)。テキストは反転表示されます。

## 戻される状態値

> SS$_NORMAL | 正常終了。
> LIB$_INVARG | 引数に誤りがあります。
> SMG$_INVPAS_ID | pasteboard-id 引数に誤りがあります。
> SMG$_OPNOTSUP | ハードウェア・ステータス行を使用できません。
> SMG$_WRONUMARG | 引数の数が誤っています。

# SMG$READ_COMPOSED_LINE

> Read Composed Lineルーチンは，通常のキー・ストロークと同値文字列で構成される 1 行の入力を読み込みます。

## 形式

> SMG$READ_COMPOSED_LINE keyboard-id [,key-table-id] ,resultant-string [,prompt-string] [,resultant-length] [,display-id] [,flags] [,initial-string] [,timeout] [,rendition-set] [,rendition-complement] [,word-terminator-code] [,character-set]

## 戻り値

> ###

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

> ### key-table-id

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

> キー・ストロークを変更するために使用されるキー・テーブルを指定します。 key-table-id 引数は，キー・テーブル識別子を格納した符号なしのロングワードのアドレスです。

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

> ### resultant-string

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

> SMG$READ_COMPOSED_LINEルーチンが最終的に作成した行を書き込む文字列。 resultant-string 引数は，生成される行が書き込まれる文字列を示すディスクリプタのアドレスです。

> ### prompt-string

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

> 読み込み操作に対するプロンプトとして使用される文字列。 prompt-string 引数は，プロンプト文字列を示すディスクリプタのアドレスです。

> ### resultant-length

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

> 読み込んだバイト数と，resultant-string 引数の最大長のどちらか小さい方の値が書き込まれます。resultant-length 引数は， SMG$READ_COMPOSED_LINE ルーチンが読み込んだバイト数が書き込まれる符号なしワードのアドレスです。

> ### display-id

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

> ディスプレイ識別子。display-id 引数はディスプレイ識別子を格納した符号なしロングワードのアドレスです。画面管理機能の出力ルーチンを使用しない場合のみこの引数は省略可能です。

> 画面管理機能の入力ルーチンと出力ルーチンを使用する場合には，この引数は，入力が行われる仮想ディスプレイを指定します。指定される仮想ディスプレイは， keyboard-id 引数によって指定されるペーストボードと同じペーストボードにペーストされていなければならず，他のディスプレイによって隠されていない状態でなければなりません。仮想ディスプレイの隠された領域から入力を受け付けることはできません。

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

> 注意 この仮想ディスプレイはカラム 1 にペーストしなければならず，その右側に他の仮想ディスプレイを配置することはできません。この制限事項が必要なのは，この条件が満足されない場合，`[Ctrl/R]` または `[Ctrl/U]` の発生によって，右側にペーストされた出力も含めて行全体が消去されるからです。

> ### flags

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

> 使用可能なキーを指定するビット・マスク(省略可能)。 flags 引数は，フラグを格納した符号なしロングワードのアドレスです。 flags 引数に対して指定できる値は次のとおりです。

> 0 | 行編集は許可されるが，ファンクション・キー ( `[ F6]`〜 `[F14]`)は使用できない。
> SMG$M_FUNC_KEYS | ファンクション・キー ( `[F6]`〜 `[F14]`)は使用できるが，行編集は禁止される。
> SMG$M_NOKEEP | 再呼び出しバッファに入力された行は保存されない。
> SMG$M_NORECALL | この入出力に対してのみ，行の再呼び出しは禁止される。

> OpenVMS ターミナル・ドライバは一部の漢字ターミナルで行編集のために `[F6]`〜`[F14]` ファンクション・キーを使用するため，ファンクション・キーと，行編集を同時に許可することはできません。

> これらのフラグが正しく機能するためには，端末に対して端末属性 /LINE_EDITING を設定しなければなりません。 /LINE_EDITING は省略時の設定です。

> かな漢字変換キーの定義は，SMG$DEFINE_KEY ルーチンや SMG$ADD_KEY_DEF ルーチンによるキー定義に優先されます。character-set 引数が SMG$C_KANJI または SMG$C_SDK の場合には，flags 引数に SMG$M_FUNC_KEYS を指定しても行編集は禁止されません。

> ### initial-string

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

> 初期文字列(省略可能)。initial-string 引数は，フィールドの初期文字列を格納した省略可能な文字列を示すディスクリプタのアドレスです。文字列はキーボードから入力されたかのように，ディスプレイの入力領域に書き込まれます。文字列は通常の方法で編集できます (function-keys-flag 引数が設定されていない場合)。

> ### timeout

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

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

> ### rendition-set

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

> 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 (unsinged)
> アクセス | 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 | 属性を無効にする。

> ### word-terminator-code

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

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

> ### 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 論理名で示される文字集合が使用されます。

> 値 | 文字集合 (コードセット)
> --- | ---
> 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文字集合のいずれか。

前へ | 次へ | 目次 | 索引