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

前へ | 次へ | 目次 | 索引

position-code 引数と units 引数は，境界内のラベル・テキストの開始位置を指定します。position-code 引数を省略した場合は，上側境界にラベルを表示します。units 引数を省略した場合は，ラベルの置かれる位置に応じて，水平方向または垂直方向にテキストを中寄せするように開始位置を選択します。position-code 引数と units 引数の両方を省略した場合には，テキストは上側境界内で中寄せされます。

垂直方向のラベルを使用できるのは，文字集合が SMG$C_ASCII と SMG$C_SPEC_GRAPHICS の場合のみです。

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

## 戻される状態値

> SS$_NORMAL | 正常終了。
> SMG$_INVARG | 引数が誤っています。 position-code 引数， units 引数， text 引数を組み合わせて使用した結果，その位置は境界領域の外部になります。
> SMG$_INVDIS_ID | display-id 引数が誤っています。
> SMG$_WRONUMARG | 引数の数が誤っています。

## 例

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

    C+
    C Include the SMG definitions. In particular, we want SMG$M_BORDER,
    C SMG$K_TOP, SMG$K_BOTTOM, and SMG$K_RIGHT.
    C-

            IMPLICIT INTEGER (A-Z)
            INCLUDE '($SMGDEF)'

    C+
    C Call SMG$CREATE_VIRTUAL_DISPLAY to create virtual display number 1.
    C Give it a border.
    C-

            ROWS = 4
            COLUMNS = 30

            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_VIRTUAL_DISPLAY to create virtual display number 2.
    C Give it a border.
    C-

            ROWS = 3
            COLUMNS = 30

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

    C+
    C Create virtual display number 3. Do NOT give it a border.
    C-

            ROWS = 4
            COLUMNS = 35

            STATUS = SMG$CREATE_VIRTUAL_DISPLAY
         1          (ROWS, COLUMNS, DISPLAY3)
            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 Call SMG$PUT_CHARS to put data into the virtual displays.
    C-

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

            STATUS = SMG$PUT_CHARS ( DISPLAY2,
         1          ' A bordered virtual display.', 1, 1 )
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))

            STATUS = SMG$PUT_CHARS ( DISPLAY3,
         1          ' Started as an unbordered display.', 2, 1 )
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))

    C+
    C Call SMG$LABEL_BORDER to label the virtual display borders.
    C-

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

            STATUS = SMG$LABEL_BORDER ( DISPLAY2, 'LABEL Bottom',
         1          SMG$K_BOTTOM, 1 )
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))

            STATUS = SMG$LABEL_BORDER ( DISPLAY3, 'Forced bordering ',
         1          SMG$K_TOP )
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))

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

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

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

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

            END

> このプログラムから生成される出力は 図 8-28 に示すとおりです。

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

# SMG$LIST_KEY_DEFS

> List Key Definitionsルーチンは，1度に1つずつ，指定されたキー・テーブル内の指定されたキーに対応する定義(同値文字列)を戻します。

## 形式

> SMG$LIST_KEY_DEFS key-table-id ,context [,key-name] [,if-state] [,attributes] [,equivalence-string] [,state-string]

## 戻り値

> ###

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

## 引数

> ### key-table-id

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

> キー定義が検索されるキー・テーブルを指定します。 key-table-id 引数は，キー・テーブル識別子を格納した符号なしロングワードのアドレスです。

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

> ### context

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

> キー・テーブルから一連のキー定義を検索するための方法を指定します。 context 引数は，コンテキスト変数を格納した符号なしロングワードのアドレスです。このルーチンを最初に呼び出す場合には，context 引数を 0 に設定しておかなければなりません。

> context 引数は，SMG$LIST_KEY_DEFS ルーチンによって 1 つずつ加算されます。したがって次の呼び出しでは，次のキー定義が戻されます。

> ### key-name

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

> 値のリストを表示するキーを指定します。key-name 引数は，キー名を示すディスクリプタのアドレスです。

> ### if-state

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

> キー・テーブル内の次の定義を条件指定する状態名が書き込まれます。 if-state 引数は，状態名が書き込まれる文字列を示すディスクリプタのアドレスです。

> ### attirbutes

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

> このキー定義の属性。attributes 引数は，キー属性が書き込まれる符号なしロングワードのアドレスです。

> 属性は次のとおりです。

> SMG$M_KEY_NOECHO | このビットが設定されている場合には，このキーが押されたときに， equiv-string 引数がエコー表示されないことを指定します。 このビットがクリアされている場合には， equiv-string 引数はエコー表示されます。SMG$M_KEY_TERMINATE が設定されていない場合には，SMG$M_KEY_NOECHO は無視されます。
> SMG$M_KEY_TERMINATE | このビットが設定されている場合には，このキーが押されたときに( if-state 引数の条件指定にしたがって)，入力行は終了し，追加文字が受け付けられないことを指定します。 このビットがクリアされている場合には，追加文字を受け付けることができます。
> SMG$M_KEY_LOCK | このビットが設定されており， state-string 引数が指定されている場合には， state-string 引数によって指定された状態名は，定義に state-string 引数を含む後続のキーストロークによって明示的に変更されるまで，現在の状態のまま変更されません。 このビットがクリアされている場合には， state-string 引数によって指定された状態名は，次の定義済みキーストロークに対してのみ有効になります。
> SMG$M_KEY_PROTECTED | このビットが設定されている場合には，このキー定義を変更または削除できないことを指定します。 このビットがクリアされている場合には，キー定義を変更または削除できます。

> ### equivalence-string

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

> 次のキー定義に対する同値文字列が書き込まれる文字列。 equivalence-string 引数は，同値文字列が書き込まれる文字列を示すディスクリプタのアドレスです。

> ### state-string

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

> 次のキー定義によって設定される新しい状態名が書き込まれる文字列。 state-string 引数は，状態名が書き込まれる文字列を示すディスクリプタのアドレスです。このキー定義が状態を設定する場合には，属性フラグ SMG$M_KEY_SETSTATE も設定されます。

## 説明

> SMG$LIST_KEY_DEFS ルーチンを繰り返し呼び出した場合には，キー・テーブル内のすべての定義を検索できます。これらのキー定義は，SMG$READ_COMPOSED_LINE ルーチンで使用できます。

## 戻される状態値

> SS$_NORMAL | 正常終了。
> SMG$_INVKEYNAM | key-name 引数に誤りがあります。
> SMG$_INVKTB_ID | key-table-id 引数に誤りがあります。
> SMG$_NOMOREKEYS | このテーブル内にこれ以上キーは存在しません。
> その他 | LIB$SCOPY_DXDX から戻された状態値。

# SMG$LIST_PASTING_ORDER

> Return Virtual Display Pasting Information ルーチンは，指定されたペーストボードにペーストされている仮想ディスプレイの識別子を戻します。また，オプションとして仮想ディスプレイのペーストボード上の原点位置( 1 行目，1 カラム目)も戻すことができます。

## 形式

> SMG$LIST_PASTING_ORDER pasteboard-id ,context ,display-id [,pasteboard-row] [,pasteboard-column]

## 戻り値

> ###

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

## 引数

> ### pasteboard-id

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

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

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

> ### context

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

> 検索するコンテキスト。context 引数は，このコンテキストを格納する符号なしロングワードのアドレスです。このルーチンを初めて呼び出す場合には， context 引数を 0 に設定しておかなければなりません。 SMG$LIST_PASTING_ORDER ルーチンは， context 引数の値を更新します。ペーストされている次のディスプレイ識別子を検索するためには，更新された値を渡して再びルーチンを呼び出します。

> ### display-id

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

> ペーストされている仮想ディスプレイの識別子。 display-id 引数は，この仮想ディスプレイの識別子が書き込まれる符号なしロングワードのアドレスです。

> ### pasteboard-row

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

> 指定された仮想ディスプレイの1行目があるペーストボードの行の行番号。
> pasteboard-row 引数は省略可能な引数であり，仮想ディスプレイの最初の行があるペーストボードの行番号が書き込まれる，符号付きロングワードのアドレスです。

> ### pasteboard-column

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

> 指定された仮想ディスプレイの1カラム目のあるペーストボードのカラム番号。 pasteboard-column 引数は省略可能な引数であり，仮想ディスプレイの最初のカラムがあるペーストボード・カラム番号が書き込まれる，符号付きロングワードのアドレスです。

## 説明

> SMG$LIST_PASTING_ORDER ルーチンは，指定されたペーストボードにペーストされている仮想ディスプレイの識別子を戻します。またオプションとして，仮想ディスプレイのペーストボード上の原点位置も戻すことができます。

> SMG$LIST_PASTING_ORDER ルーチンは，ペーストされている仮想ディスプレイの中で，最初の(一番下の)仮想ディスプレイの識別子を戻します。このルーチンを， SMG$_NOTPASTED が返されるまで繰り返し呼び出すことによって，連続する仮想ディスプレイの識別子を返します。

> このルーチンは，たとえば，多くの仮想ディスプレイを作成した後，アプリケーションにとって重要な仮想ディスプレイのディスプレイ識別子がわからなくなった場合などに使用すると便利です。

## 戻される状態値

> SS$_NORMAL | 正常終了。
> SMG$_INVPAS_ID | pasteboard-id 引数に誤りがあります。
> SMG$_NOTPASTED | ディスプレイはこれ以上ペーストされていません。
> SMG$_WRONUMARG | 引数の数が誤っています。

# SMG$LOAD_KEY_DEFS

> Load Key Definitions ルーチンは，キー定義ファイル(DEFINE/KEY コマンド)を指定されたキー・テーブルにロードします。

## 形式

> SMG$LOAD_KEY_DEFS key-table-id ,filespec [,default-filespec] [,flags]

## 戻り値

> ###

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

## 引数

> ### key-table-id

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

> キー定義をロードするキー・テーブルを指定します。 key-table-id 引数は，キー・テーブル識別子を格納した符号なしロングワードのアドレスです。

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

> ### filespec

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

> DEFINE/KEY コマンドを登録したファイルのファイル指定を格納した文字列。 filespec 引数は，ファイル指定を示すディスクリプタのアドレスです。

> ### default-filespec

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

> DEFINE/KEY コマンドを格納したファイルの省略時のファイル指定を格納した文字列。 default-filespec 引数は，省略時のファイル指定を示すディスクリプタのアドレスです。この引数を省略した場合には，空文字列が使用されます。

> ### flags

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

> 省略可能なビット・マスクであり，filespec 引数が論理名として取り扱われるかどうかを指定します。flags 引数は，フラグを格納した符号なしロングワードのアドレスです。flags 引数が設定されている場合には， filespec 引数を変換しなければなりませんが，この操作が不可能な場合には，空文字列が使用されます。

## 説明

> SMG$LOAD_KEY_DEFS ルーチンは，DEFINE/KEY コマンドを登録したファイルをオープンし，読み込み，ファイル内の各コマンド行に対して SMG$DEFINE_KEY ルーチンを呼び出します。SMG$LOAD_KEY_DEFS ルーチンを使用する場合には，呼び出しプログラムを DCL コマンド言語インタプリタのもとで実行していなければなりません。このルーチンは，コマンド行を処理するときに検出したエラーを通知します。詳しい説明は，SMG$DEFINE_KEY ルーチンを参照してください。

## 戻される状態値

> SS$_NORMAL | 正常終了。
> SMG$_FILTOOLON | ファイル指定が長すぎます(最大255バイト)。
> その他 | SMG$DEFINE_KEY，$OPEN から戻された状態値。

前へ | 次へ | 目次 | 索引