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

前へ | 次へ | 目次 | 索引

## 例

#1
    C+
    C This FORTRAN example program illustrates the use of
    C SMG$CREATE_MENU, SMG$SELECT_FROM_MENU, and SMG$DELETE_MENU
    C to create an application that lets a user make multiple
    C selections from a horizontal menu.
    C-

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

            CHARACTER*20 c
            CHARACTER*20 a(20) /'One','Two','Three','This is Four','Five',
         1                  'Six','Seven','Eight','Nine','I like ten',
         2                  'Eleven','Twelve','Thirteen','Fourteen',
         3                  'Fifteen','Sixteen','Seventeen','Eighteen',
         4                  'Nineteen','Exit this menu.' /

            s = SMG$CREATE_PASTEBOARD(p_id)
            if (.not. s) call LIB$SIGNAL(%VAL(s))
            s = SMG$CREATE_VIRTUAL_KEYBOARD(k_id)
            if (.not. s) call LIB$SIGNAL(%VAL(s))
            s = SMG$CREATE_VIRTUAL_DISPLAY(6,50, d_id2, SMG$M_BORDER)
            if (.not. s) call LIB$SIGNAL(%VAL(s))
            s = SMG$CREATE_VIRTUAL_DISPLAY(6,50, d_id, SMG$M_BORDER)
            if (.not. s) call LIB$SIGNAL(%VAL(s))

            s = SMG$PASTE_VIRTUAL_DISPLAY(d_id2, p_id, 2,2)
            if (.not. s) call LIB$SIGNAL(%VAL(s))
            s = SMG$PASTE_VIRTUAL_DISPLAY(d_id, p_id, 10,2)
            if (.not. s) call LIB$SIGNAL(%VAL(s))

            s = SMG$CREATE_MENU(d_id,a,SMG$K_HORIZONTAL,,2,SMG$M_REVERSE)
            if (.not. s) call LIB$SIGNAL(%VAL(s))

      20    s = SMG$SELECT_FROM_MENU(k_id, d_id, n,6,,,,,C,SMG$M_BOLD,0)
            if (.not. s) call LIB$SIGNAL(%VAL(s))
            s = SMG$PUT_LINE(d_id2,c)
            if (.not. s) call LIB$SIGNAL(%VAL(s))

            if (n .ne. 20) goto 20

            s = SMG$DELETE_MENU(d_id)
            if (.not. s) call LIB$SIGNAL(%VAL(s))
     END

> 以下の図は, この FORTRAN プログラムによって生成される水平方向のメニューです。

> 図 8-46 では，プログラムは，省略時で選択されるものを除くすべてのメニュー項目を，反転表示します。この時点で，プログラムはユーザが選択をするのを待っています。

> 図 8-46 メニュー項目が選択される前に生成される出力

このメニューが作成されるときには，何も引数が指定されていなかったので，メニューの中の項目は再び選択されることができます。 図 8-47 は，ユーザが3つの項目(その中の 2つは同じ)を選択した後の画面イメージを表しています。

図 8-47 3つのメニュー選択をした後に生成された出力

図 8-48 では，ユーザは "Exit this menu"を選択し，プログラムは実行を終了しました。

図 8-48 プログラムが終了した後に生成される出力

# SMG$SET_BROADCAST_TRAPPING

> Enable Broadcast Trapping ルーチンは，ブロードキャスト・メッセージのトラッピングを許可します。

## 形式

> SMG$SET_BROADCAST_TRAPPING pasteboard-id [,AST-routine] [,AST-argument]

## 戻り値

> ###

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

## 引数

> ### pasteboard-id

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

> ブロードキャスト・メッセージがトラップされるペーストボードを指定します。 pasteboard-id 引数は，ペーストボード識別子を格納した符号なしロングワードのアドレスです。

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

> ### AST-routine

> OpenVMS 用法 | ast_procedure
> データ型 | procedure entry mask
> アクセス | read only
> 受け渡し方 | by value

> メッセージがペーストボードに受信されたときに呼び出される AST ルーチンのアドレス。AST-routine 引数はルーチンのプロシージャ・エントリ・マスクのアドレスです。つまり，ルーチン自体のアドレスです。

> AST-routine 引数を省略した場合や，この引数の値を 0 として指定した場合には，BROADCAST モードは同期モードに設定されます。このモードでは，ブロードキャスト・メッセージが到着したかどうかを確認するために， SMG$GET_BROADCAST_MESSAGE ルーチンを定期的に呼び出さなければなりません。

> AST ルーチンは 5 つの引数を使用して呼び出されます。それらは AST-argument 引数，R0，R1，PC，および PSL です。

### AST-argument

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

AST ルーチンに渡される値。AST-argument 引数は AST ルーチンに渡される値を格納した符号なしロングワードです。

## 説明

> SMG$SET_BROADCAST_TRAPPING ルーチンは，指定されたペーストボード(漢字ターミナル) に送信されたブロードキャスト・メッセージのトラッピングを許可します。ブロードキャスト・トラッピングを禁止した場合には，漢字ターミナルのキューに登録されていたブロードキャスト・メッセージは失われます。SMG$SET_BROADCAST_TRAPPING ルーチンを使用してブロードキャスト・トラッピングを許可した後，イメージが終了する前に SMG$DISABLE_BROADCAST_TRAPPING ルーチンを使用してブロードキャスト・トラッピングを禁止しなかった場合には，漢字ターミナルにブロードキャストされたメッセージは，イメージが終了するときに失われます。

> SYSGEN パラメータである DEFMBXBUFQUO と DEFMBXMXMSG がブロードキャスト・メッセージを受信するメールボックスを作成する時に使用されます。

## 戻される状態値

> SS$_NORMAL | 正常終了。
> SMG$_INVPAS_ID | pasteboard-id 引数に誤りがあります。
> SMG$_NOT_A_TRM | 情報メッセージ。ペーストボードは漢字ターミナルではありません。
> SMG$_WRONUMARG | 引数の数が誤っています。
> その他 | $DASSGN，$CANCEL，または LIB$ASN_WTH_MBX から戻される状態値。

# SMG$SET_CURSOR_ABS

> Set Absolute Cursor Position ルーチンは，仮想ディスプレイの仮想カーソルを指定位置に移動させます。

## 形式

> SMG$SET_CURSOR_ABS display-id [,start-row] [,start-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 引数は，カラム位置を格納した符号付きロングワードのアドレスです。この引数を省略した場合は，カーソルは現在のカラムに置かれます。

## 説明

> SMG$SET_CURSOR_ABS ルーチンは，仮想カーソルを仮想ディスプレイの指定位置に移動させます。

## 戻される状態値

> SS$_NORMAL | 正常終了。
> SMG$_INVCOL | カラム位置が誤っています。
> SMG$_INVDIS_ID | display-id 引数が誤っています。
> SMG$_INVROW | 行の位置が誤っています。
> SMG$_WRONUMARG | 引数の数が誤っています。

# SMG$SET_CURSOR_MODE

> Set the Cursor Mode ルーチンは，物理カーソルをオンまたはオフに設定し，ジャンプ・スクロールまたは連続スクロールを選択します。

## 形式

> SMG$SET_CURSOR_MODE pasteboard-id [,flags]

## 戻り値

> ###

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

## 引数

> ### pasteboard-id

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

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

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

> ### flags

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

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

> SMG$M_CURSOR_OFF | 物理カーソルを消去する。
> SMG$M_CURSOR_ON | 物理カーソルを表示する。
> SMG$M_SCROLL_JUMP | ジャンプ・スクロール。
> SMG$M_SCROLL_SMOOTH | 連続スクロール。

## 説明

> SMG$SET_CURSOR_MODE ルーチンはカーソルを表示または消去し，ジャンプ・スクロールと連続スクロールのいずれかを選択します。漢字ターミナルがこれらの機能を備えていない場合には，このルーチンを実行しても無効です。

## 戻される状態値

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

# SMG$SET_CURSOR_REL

> Move Cursor Relative to Current Position ルーチンは，仮想ディスプレイ内の現在の仮想カーソルの位置から指定された行数およびカラム数だけ，仮想カーソルを移動します。

## 形式

> SMG$SET_CURSOR_REL display-id [,delta-row] [,delta-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 ルーチンによって与えられます。

> ### delta-row

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

> 仮想カーソルを移動する行数を指定します。delta-row 引数は，移動する行数を格納した符号付きロングワードのアドレスです。この引数を省略した場合には，仮想カーソルは現在の行位置から移動しません。 delta-row 引数が正の値の場合には，仮想カーソルは指定された行数だけ下に移動します。 delta-row 引数が負の値の場合には，仮想カーソルは指定された行数だけ上に移動します。

> ### delta-column

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

> 仮想カーソルを移動するカラム数を指定します。 delta-column 引数は，移動するカラム数を格納した符号付きロングワードのアドレスです。この引数を省略した場合には，仮想カーソルは現在のカラム位置から移動しません。 delta-column 引数が正の値の場合には，仮想カーソルは指定されたカラム数だけ右に移動します。delta-column 引数が負の値の場合には，仮想カーソルは指定されたカラム数だけ左に移動します。

## 説明

> SMG$SET_CURSOR_REL ルーチンは，現在の仮想カーソルの位置をもとに，指定された行数およびカラム数だけ仮想カーソルを移動します。 delta-row 引数および delta-column 引数の指定に従ってカーソルを移動した結果，カーソルが仮想ディスプレイの外部に移動する場合には，SMG$_INVROW または SMG$_INVCOL が戻されます。

## 戻される状態値

> SS$_NORMAL | 正常終了。
> SMG$_INVARG | 引数に誤りがあります。
> SMG$_INVCOL | delta-column 引数の値が誤っているため，カーソルを仮想ディスプレイの外部に移動しようとしました。
> SMG$_INVDIS_ID | display-id 引数に誤りがあります。
> SMG$_INVROW | delta-row 引数の値が誤っているため，カーソルを仮想ディスプレイの外部に移動しようとしました。
> SMG$_WRONUMARG | 引数の数が誤っています。

# SMG$SET_DEFAULT_STATE

> Set Default State ルーチンは，キー・テーブルに対して現在の省略時の状態を設定するか，または現在の省略時の状態を戻します。

## 形式

> SMG$SET_DEFAULT_STATE key-table-id [,new-state] [,old-state]

## 戻り値

> ###

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

> ### new-state

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

> キー・テーブル全体に対する新しい省略時の状態を指定します。 new-state 引数は，新しい状態文字列を示すディスクリプタのアドレスです。指定された状態名は，使用する前に大文字に交換され，後続する空白は削除されます。

> ### old-state

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

> 指定されたキー定義テーブルの既存の省略時状態名が書き込まれます。 old-state 引数は，既存の状態文字列が書き込まれる文字列を示すディスクリプタのアドレスです。

## 説明

> SMG$SET_DEFAULT_STATE ルーチンは，キー定義テーブル全体に対して省略時の状態名を設定するか，または現在の省略時の状態名を戻します。キー定義テーブル全体に対する省略時の状態を変更すれば，新しい機能集合に対してキーパッド・キーを使用できます。キー定義テーブルは SMG$READ_COMPOSED_LINE ルーチンで使用できます。

## 戻される状態値

> SS$_NORMAL | 正常終了。
> SMG$_INVKTB_ID | key-table-id 引数に誤りがあります。
> SMG$_INVSTANAM | 状態名に誤りがあります。
> LIB$_INVSTRDES | 文字列ディスクリプタに誤りがあります。

前へ | 次へ | 目次 | 索引