前のページ | 次のページ | 目次 | 索引


日本語SMGリファレンス・セクション

   このセクションでは日本語画面管理ライブラリルーチンを詳しく説明します。


SMG$ADD_KEY_DEF ―Add Key Definition

Add Key Definitionルーチンは,キーパッド・キーの定義をキー定義テー ブルに追加登録します。

形式

    SMG$ADD_KEY_DEF   key-table-id ,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ルーチンによって与えられま す。

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

値を定義するキーを指定します。key-name 引数は,このキー名を示すデ ィスクリプタのアドレスです。SMG$ADD_KEY_DEFルーチンは,文字列を大文字 に変更し,後続の空白を削除します。

使用できるキー名については,第3 章表 3-1を参照してく ださい。

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

key-name 引数によって指定されるキーが押されたときに戻される値を 条件指定します。if-state 引数は,状態文字列を示すディスクリプタのアド レスです。

if-state 引数を指定した場合には,key-name 引数の定義は,現在の状態 が指定された if-state 文字列と一致する場合にだけ使用されます。if- state 引数の長さは1〜31バイトでなければなりません。この引数を省略 した場合には,if-state 引数の省略時の設定は"DEFAULT" に なります。

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

キー定義の追加属性を指定するロングワード・ビット・マス ク。attributes 引数は,属性マスクを格納した符号なしロングワードの アドレスです。この引数を省略した場合には,マスクは0になります。

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

SMG$M_KEY_NOECHO このビットが設定されてい る場合には,このキーが押されたときに,equivalence-string 引数はエ コー表示されません。

このビットがクリアされている場合には,equivalence-string 引数はエ コー表示されます。SMG$M_KEY_TERMINATEが設定されていない場合には, SMG$M_KEY_NOECHOは無視されます。

SMG$M_ KEY_TERMINATE このビットが設定されている場合には, このキーが押されたときに(if-state 引数の条件指定にしたがって),入 力行は終了し,追加文字を受け付けられないことを指定します。

このビットがクリアされている場合には,追加文字を受け付けることがで きます。つまり,このビットが設定されている場合は,equivalence- string 引数は終了文字として取り扱われます。

SMG$M_KEY_LOCK このビットが設定されて おり,state-string 引数が指定されている場合には,state-string 引数 によって指定される状態名は,定義に state-string 引数を含む後続のキ ーストロークによって明示的に変更されるまで,現在の状態のまま変更さ れません。

このビットがクリアされている場合には,state-string 引数によって指 定される状態名は,次の定義済みキーストロークに対してのみ有効にな ります。

SMG$M_KEY_PROTECTED このビットが設定されている場合には,このキー定義を変更または削 除できないことを指定します。クリアされている場合には,キー定義を変 更または削除できます。

他のビットは未定義であり,0でなければなりません。一度に複数の 属性を設定するために,これらの値の対して論理和操作を実行できま す。

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

戻される行内のキーストロークに対して置換される文字 列。equivalence-string 引数は,この同値文字列を示すディスクリプタ のアドレスです。

SMG$M_KEY_NOECHOが設定されていない限り,equivalence-string 引数は エコー表示されます。equivalence-string 引数を省略した場合には,こ のキーに対して同値文字列は定義されません。

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

このキーが押されたときに現在の状態として設定される,新しい状態名 を格納します。state-string 引数は,新しい状態文字列を示すディスクリプ タのアドレスです。

この引数を省略した場合には,新しい状態は定義されません。現在の状態 が一時的な状態の場合には(つまり,最後に押された定義済みキーに対し てSMG$M_KEY_LOCKが指定されていない場合),現在の state-string 引数 はDEFAULTになります。

説明

SMG$ADD_KEY_DEFルーチンは,キー定義をキー定義テーブルに登録 します。テーブルはSMG$CREATE_KEY_TABLEルーチンを呼び出すことにより 作成しておかなければなりません。SMG$ADD_KEY_DEFルーチンを実行した 後,SMG$READ_COMPOSED_LINEルーチンに対する応答として,ユーザが指定 されたキーを入力すると,指定された同値文字列が戻されます。

VT100,VT200シリーズ,およびVT300シリーズのキーボードとキーパッド のすべてのキーを定義できます。ただし,次のキーは定義できません。

一部のキーとキー定義はユーザが定義できますが,なるべくこのような定 義は実行しないでください。ユーザがこのような定義をキー名として使用 した場合,日本語 SMGルーチンはエラーを戻すわけではありませんが,次 に示すように,DCLレベルで次の特殊な方法で漢字ターミナルを設定しな い限り,これらのキーの組み合せに対して割り当てた定義は実行されませ ん。

これらの特殊なターミナル設定はなるべく使用しないでください。ターミ ナル・ドライバに制御を渡すために,省略時の設定を変更した結果がどの ようになるのかを十分理解していない限り,このような特殊なターミナル 設定を使用すると,予測できない結果が発生することがあります。

戻される状態値

SS$_NORMAL 正常終了。
SMG$_INVDEFATT キー定義属性に誤りが あります。
SMG$_KEYDEFPRO キー定義が変更または削除できないように保護されていま す。
SMG$_INVKEYNAM key- name 引数に誤りがあります。
SMG$_INVKTB_ ID key-table-id 引数に誤りがあります。
SMG$_PREDEFREP 正常終了。前の キー定義は新しいキー定義に変更されました。
SMG$_WRONUMARG 引数の数が誤っていま す。
その他 LIB$SCOPY_ DXDXから戻された状態値。


SMG$BEGIN_DISPLAY_UPDATE ―Begin Batching of Display Updates

Begin Batching of Display Updatesルーチンは,対応するSMG$END_ DISPLAY_UPDATE の呼び出しを検出するまで,仮想ディスプレイに対する すべての出力を保存,つまりバッチ処理します。

形式

    SMG$BEGIN_DISPLAY_UPDATE   display-id

Returns

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

引数

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

出力をバッチ処理する仮想ディスプレイを指定します。 display-id 引数 はディスプレイ識別子を格納した符号なしロングワードのアドレスです。

display-id 引数はSMG$CREATE_VIRTUAL_DISPLAYルーチンから戻されま す。

説明

SMG$BEGIN_DISPLAY_UPDATEは,ディスプレイに対して複数の変更処 理を実行します。変更結果は,すべての変更処理が終了した後で一括して 表示されます。したがって,ユーザから見ると,ディスプレイは初期状態 から最終状態に直接変化し,途中の状態はまったく表示されません。

バッチ処理が終了するのは,特定のディスプレイに対してSMG$BEGIN_ DISPLAY_UPDATE と同じ回数だけ,SMG$END_DISPLAY_UPDATEが呼び出され たときです。日本語SMGは,指定されたディスプレイに対するバッチ処理 の状況を追跡し,管理します。したがって,SMG$BEGIN_DISPLAY_UPDATEと SMG$END_DISPLAY_UPDATEを同じモジュール内で呼び出す必要はありませ ん。

戻される状態値

SS$_NORMAL 正常終了。
SMG$_BATWAS_ON 正常終了。バッチ 処理はすでに開始されています。
SMG$_ WRONUMARG 引数の数が誤っています。
SMG$_INVDIS_ID display-id 引数に誤りがあり ます。


SMG$BEGIN_PASTEBOARD_UPDATE ―Begin Batching of Pasteboard Updates

Begin Batching of Pasteboard Updatesルーチンは,対応する SMG$END_ PASTEBOARD_UPDATEルーチンの呼び出しが検出されるまで,ペーストボー ドに対するすべての出力を保存,つまりバッチ処理します。

形式

    SMG$BEGIN_PASTEBOARD_UPDATE   pasteboard-id

戻り値

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

引数

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

出力がバッチ処理されるペーストボードを指定します。pasteboard-id 引数は,ペーストボード識別子を格納した符号なしロングワードのアドレス です。

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

説明

SMG$BEGIN_PASTEBOARD_UPDATEルーチンを使用すれば,ペーストボ ードに対して複数の変更処理を実行し,すべての変更処理が終了した後で 変更結果を表示することができます。したがって,ユーザから見ると,ペ ーストボードは初期状態から最終状態に直接変化し,途中の状態は表示さ れません。

バッチ処理が終了するのは,特定のペーストボードに対して SMG$BEGIN_ PASTEBOARD_UPDATEルーチンと同じ回数だけ,SMG$END_PASTEBOARD_UPDATE ルーチンを呼び出したときです。日本語SMGは,指定されたペーストボ ードに対するバッチ処理の状況を追跡し,管理します。したがって, SMG$BEGIN_PASTEBOARD_UPDATEルーチンとSMG$END_PASTEBOARD_UPDATEルー チンを同じモジュール内で呼び出す必要はありません。

戻される状態値

SS$_NORMAL 正常終了。
SMG$_BATWAS_ON 正常終了。バッチ 処理はすでに開始されています。
SMG$_ WRONUMARG 引数の数が誤っています。
SMG$_INVPAS_ID pasteboard-id 引数に誤りが あります。


SMG$CANCEL_INPUT ―Cancel Input Request

Cancel Input Requestルーチンは,SMG$READ_COMPOSED_LINE,SMG$READ_ KEYSTROKE,SMG$READ_STRING,SMG$READ_VERIFYの各ルーチンが要求した 読み込み操作をただちに取り消します。

形式

    SMG$CANCEL_INPUT   keyboard-id

戻り値

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

説明

SMG$CANCEL_INPUTルーチンを実行すると,漢字ターミナルから の SMG$READ_COMPOSED_LINE,SMG$READ_KEYSTROKE,SMG$READ_STRING, SMG$READ_VERIFY の各ルーチンによる入力操作はただちに終了します。 SMG$CANCEL_INPUTルーチンを使用した場合には,これらのルーチンに対し て,SS$_CANCELまたはSS$_ABORTが状態コードとして戻されます。

戻される状態値

SS$_NORMAL 正常終了。
SMG$_INVKBD_ID keyboard-id 引数に誤 りがあります。
SMG$_WRONUMARG 引数の数が誤っています。


SMG$CHANGE_PBD_CHARACTERISTICS ― Change Pasteboard Characteristics

Change Pasteboard Characteristicsルーチンは,ペーストボードに割り 当てた属性を変更します。

形式

    SMG$CHANGE_PBD_CHARACTERISTICS

                    pasteboard-id [,desired-width]
                   [,width] [,desired-height] [,height]
                   [,desired-background-color] [,background-color]

戻り値

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

引数

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

属性を変更するペーストボードを指定します。pasteboard-id 引数は, ペーストボード識別子を格納した符号なしロングワードのアドレスです。

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

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

ペーストボードの新しい幅。desired-width 引数は,希望する幅を格納 した符号付きロングワードのアドレスです。この引数を省略した場合には, 幅は変更されません。

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

ペーストボードの物理幅が書き込まれます。width 引数は,ペーストボ ードの実際の幅が書き込まれる符号付きロングワードのアドレスです。

漢字ターミナルの幅を正確に desired-width 引数に設定できない場合に は,width 引数は desired-width 引数より大きくなる可能性がありま す。漢字ターミナルの物理幅が desired-width 引数より小さい場合に は,width 引数が desired-width 引数より小さくなる可能性がありま す。

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

ペーストボードの新しい高さ。desired-height 引数は,希望する高さを 格納した符号付きロングワードのアドレスです。この引数を省略した場合に は,高さは変更されません。

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

ペーストボードの物理的な高さが書き込まれます。height 引数は,ぺー ストボードの実際の高さが書き込まれる符号付きロングワードのアドレスで す。

漢字ターミナルが高さを正確に desired-height 引数に設定できない場合 には,height 引数は desired-height 引数より大きくなる可能性があり ます。漢字ターミナルの物理的な高さが desired-height 引数より小さい 場合には,height 引数は desired-height 引数より小さくなる可能性が あります。

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

希望する背景色のシンボル名。desired-background-color 引数は,希望 する背景色を格納した符号なしロングワードのアドレスです。

次に示すシンボルは$SMGDEFに定義されています。desired-background- color 引数に対して指定できる値は次のとおりです。

SMG$C_COLOR_WHITE 白の背景
SMG$C_COLOR_BLACK 黒の背 景
SMG$C_COLOR_BLUE 青 の背景
SMG$C_COLOR_CYAN 青緑の背景
SMG$C_COLOR_ GREEN 緑の背景
SMG$C_ COLOR_MAGENTA 紫の背景
SMG$C_COLOR_RED 赤の背景
SMG$C_COLOR_YELLOW 黄色の背景
SMG$C_COLOR_LIGHT 明るい背景
SMG$C_COLOR_DARK 暗い背景
SMG$C_COLOR_USER1 ユーザ定義背景色 1
SMG$C_COLOR_USER2 ユー ザ定義背景色2

desired-background-color 引数を省略した場合や,指定された背景色を ターミナル・ハードウェアがサポートしない場合には,背景色は変更され ません。

background-color
OpenVMS用法longword_unsigned
データ型longword (unsigned)
アクセスwrite only
受け渡し方by reference

選択された背景色が書き込まれます。background-color 引数は,背景色 が書き込まれる符号なしロングワードのアドレスです。

このルーチンは,desired-background-color 引数の説明に示されている 値,またはSMG$C_COLOR_UNKNOWNを戻します。desired-background-color 引数を省略した場合には,background-color 引数の値は変更されませ ん。

説明

SMG$CHANGE_PBD_CHARACTERISTICSルーチンを使用すれば,ペースト ボードに割り当てた幅,高さ,背景色を変更できます。

必要な場合には,このルーチンは,DCLのSHOW TERMINALコマンドが入力さ れたときに表示されるターミナル属性を更新することにより,ペーストボ ード属性が変更されたことをOpenVMSオペレーティング・システムに通知 します。

バッチ処理されるペーストボードに対して,SMG$CHANGE_PBD_ CHARACTERISTICSルーチンを使用することはできません。

戻される状態値

SS$_NORMAL 正常終了。
SS$_xxx $QIOWから戻されたエラ ー。
SMG$_INVCOLARG 指 定された背景色が認識されません。
SMG$_ INVPAGARG 希望する高さとして0を指定することはできま せん。
SMG$_INVWIDARG 希 望する幅として0を指定することはできません。
SMG$_PBDIN_USE バッチ処理が有効に設定された 状態でペーストボード属性を変更することはできません。
SMG$_WRONUMARG 引数の数が誤っていま す。


SMG$CHANGE_RENDITION ―Change Default Rendition

Change Default Renditionルーチンは,仮想ディスプレイ全体または一部 のビデオ属性を変更します。

形式

    SMG$CHANGE_RENDITION   display-id ,start-row ,start-column
                          ,number-of-rows ,number-of-columns
                          [,rendition-set] [,rendition-complement]

戻り値

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 引数は,開始カ ラム番号を格納した符号付きロングワードのアドレスです。start-column 引 数が全角文字の右半分である場合は,その文字の左半分も新しい属性になり ます。

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

新しい属性を受け付ける行番号。number-of-rows 引数は,影響を受け る行番号を格納した符号付きロングワードのアドレスです。

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

新しい属性を受け付けるカラム数。number-of-columns 引数は, 影響を受けるカラム数を格納した符号付きロングワードのアドレスで す。

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-complement
OpenVMS用法mask_longword
データ型longword (unsigned)
アクセスread only
受け渡し方by reference

属性補足指定子。rendition-complement 引数は省略可能であり,ロン グワード・ビット・マスクのアドレスです。このロングワード・ビット・マ スク内の各属性を設定すると,ディスプレイ内の対応する属性が補足されま す。rendition-set 引数に指定できる属性はすべて,rendition-complement 引数で補足できます。

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 属性をオフに設定する。

説明

このルーチンは,指定された仮想ディスプレイ内にすでに存在する 長方形のテキスト・ブロックの省略時のビデオ属性を変更します。たとえ ば,このルーチンを使用して特定の行を反転表示することができます。

DEC漢字文字集合が使用され,start-column 引数が全角文字の右半分であ る場合には,その文字の左半分も新しい属性になります。また,長方形が 全角文字の左半分で終了する場合には,その文字の右半分も新しい属性に なります。

戻される状態値

SS$_NORMAL 正常終了。
SMG$_INVARG 行数またはカラム数が誤 っているか,rendition-set 引数が認識されないか,またはrendition- complement 引数が認識されません。
SMG$_ INVCOL start-column 引数に誤りがあります。指定さ れたカラムは仮想ディスプレイの外部です。
SMG$_INVDIS_ID display-id 引数に誤りがありま す。
SMG$_INVROW start- row 引数に誤りがあります。指定された行は仮想ディスプレイの外 部です。
SMG$_NO_CHADIS 仮想ディスプレイは変更されませんでした。
SMG$_WRONUMARG 引数の数が誤っていま す。


SMG$CHANGE_VIEWPORT ―Change the Viewport Associated with a Virtual Display

Change the Viewport Associated with a Virtual Displayルーチンは, 仮想ディスプレイ内の既存のビューポートのサイズを変更します。ビュー ポートに現在表示されているテキストは,新しいサイズに収まるように再 マップされます。

形式

    SMG$CHANGE_VIEWPORT   display-id [,viewport-row-start]
                         [,viewport-column-start]
                         [,viewport-number-rows]
                         [,viewport-number-columns]

戻り値

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

引数

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

変更するビューポートを含む仮想ディスプレイの識別子。display- id 引数は,この識別子を格納した符号なしロングワードのアドレスで す。

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

変更後のビューポートの1行目となる仮想ディスプレイの行番号(省略可 能)。viewport-row-start 引数は行番号を格納した符号付きロングワードの アドレスです。この引数を省略した場合には,現在の viewport-row-start 引数の値が使用されます。

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

変更後のビューポートで1カラム目となる仮想ディスプレイ内のカラム 番号(省略可能)。viewport-column-start 引数は,カラム番号を格納した符 号付きロングワードのアドレスです。この引数を省略した場合には,現在の viewport-column-start 引数の値が使用されます。

viewport-column-start 引数で指定されたカラムが,全角文字の右半分で あった場合には,そのカラムは表示されません。

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

変更後のビューポートの行数(省略可能)。 viewport-number-rows 引数は,行数を格納した符号付きロングワードの アドレスです。この引数を省略した場合には,現在の viewport-number- rows 引数の値が使用されます。

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

変更後のビューポートのカラム数(省略可能)。 viewport-number-columns 引数は,カラム数を格納した符号付きロングワ ードのアドレスです。この引数を省略した場合には,現在の viewport- number-columns 引数の値が使用されます。

説明

SMG$CHANGE_VIEWPORTルーチンを使用すれば,仮想ディスプレイ内 の既存のビューポートのサイズを変更できます。このビューポート内に現 在表示されているテキストは,新しいサイズに収まるように再マッピング され,viewport-row-start 引数と viewport-column-start 引数によって 指定される位置から始まります。この位置はまた,仮想カーソルの新しい 位置も指定します。

viewport-column-start 引数で指定されたカラムが,全角文字の右半分で あった場合には,そのカラムは表示されません。また,ビューポートが全 角文字の左半分で終了した場合にも,そのカラムは表示されません。

戻される状態値

SS$_NORMAL 正常終了。
SMG$_INVARG 行数またはカラム数が0よ り小さい値です。
SMG$_INVCOL 指定されたカラム番号に誤りがあります。
SMG$_INVDIS_ID display-id 引数に誤りがありま す。
SMG$_INVROW 指定さ れた行番号に誤りがあります。
SMG$_NO_ WINASSOC 仮想ディスプレイにビューポートが対応づけら れていません。
SMG$_WRONUMARG 引数の数が誤っています。

  1. C+
    C This DEC FORTRAN example program demonstrates the use of
    C SMG$CHANGE_VIEWPORT.
    C-
    
     IMPLICIT INTEGER (A-Z)
     INCLUDE '($SMGDEF)'
    
    C Create the virtual display. Give it a border.
    
     ROWS = 9
     COLUMNS = 50
    
     STATUS = SMG$CREATE_VIRTUAL_DISPLAY
         1         (ROWS, COLUMNS, DISPLAY1,SMG$M_BORDER )
     IF (.NOT. STATUS) CALL LIB$SIGNAL(%val(STATUS))
    
    C Create the pasteboard.
    
     STATUS = SMG$CREATE_PASTEBOARD (PASTE1)
     IF (.NOT. STATUS) CALL LIB$SIGNAL(%val(STATUS))
    
    C Put data in the virtual display.
    
     STATUS = SMG$PUT_CHARS ( DISPLAY1,
     1 'This is row 1 in a virtual display with 9 rows.',1,1)
     IF (.not. STATUS) CALL LIB$SIGNAL(%val(STATUS))
    
     STATUS = SMG$PUT_CHARS ( DISPLAY1,
     1 'This is row 2 in a virtual display with 9 rows.',2,1)
     IF (.not. STATUS) CALL LIB$SIGNAL(%val(STATUS))
    
     STATUS = SMG$PUT_CHARS ( DISPLAY1,
     1 'This is row 3 in a virtual display with 9 rows.',3,1)
     IF (.not. STATUS) CALL LIB$SIGNAL(%val(STATUS))
    
     STATUS = SMG$PUT_CHARS ( DISPLAY1,
     1 'This is row 4 in a virtual display with 9 rows.',4,1)
     IF (.not. STATUS) CALL LIB$SIGNAL(%val(STATUS))
    
     STATUS = SMG$PUT_CHARS ( DISPLAY1,
     1 'This is row 5 in a virtual display with 9 rows.',5,1)
     IF (.not. STATUS) CALL LIB$SIGNAL(%val(STATUS))
    
     STATUS = SMG$PUT_CHARS ( DISPLAY1,
     1 'This is row 6 in a virtual display with 9 rows.',6,1)
     IF (.not. STATUS) CALL LIB$SIGNAL(%val(STATUS))
    
     STATUS = SMG$PUT_CHARS ( DISPLAY1,
     1 'This is row 7 in a virtual display with 9 rows.',7,1)
     IF (.not. STATUS) CALL LIB$SIGNAL(%val(STATUS))
    
     STATUS = SMG$PUT_CHARS ( DISPLAY1,
     1 'This is row 8 in a virtual display with 9 rows.',8,1)
     IF (.not. STATUS) CALL LIB$SIGNAL(%val(STATUS))
    
     STATUS = SMG$PUT_CHARS ( DISPLAY1,
     1 'This is row 9 in a virtual display with 9 rows.',9,1)
     IF (.not. STATUS) CALL LIB$SIGNAL(%val(STATUS))
    
    C Paste the virtual display.
    
     STATUS = SMG$COPY_VIRTUAL_DISPLAY(DISPLAY1,DISPLAY2)
     IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
     STATUS = SMG$LABEL_BORDER (DISPLAY1, 'Full Display',,,SMG$M_BOLD)
     IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
     STATUS = SMG$LABEL_BORDER (DISPLAY2, 'Viewport',,,SMG$M_BOLD)
     IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
     STATUS = SMG$PASTE_VIRTUAL_DISPLAY ( DISPLAY1, PASTE1, 2, 10)
     IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
     STATUS = SMG$PASTE_VIRTUAL_DISPLAY ( DISPLAY2, PASTE1, 13, 10)
     IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
     CALL LIB$WAIT (4.0)
    
     STATUS = SMG$CREATE_VIEWPORT ( DISPLAY2, 2, 1, 5, 21)
     IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
     CALL LIB$WAIT (4.0)
    
     STATUS = SMG$PASTE_VIRTUAL_DISPLAY ( DISPLAY2, PASTE1, 13, 10)
     IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
     CALL LIB$WAIT (4.0)
    
     STATUS = SMG$CHANGE_VIEWPORT ( DISPLAY2, 4, 8, 3, 15)
     IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
     call lib$wait (4.0)
    
     END
    
    この DEC FORTRAN の例で生成される出力は以下の図 に示すとおりです。図 SMG-1では,プロ グラムは初期仮想ディスプレイを,"Viewport" というラベル の付いた2番目の仮想ディスプレイにコピーしています。

    図 SMG-1 仮想ディスプレイがペーストされた後 に生成される出力

    2つの同じ仮想ディスプレイをペーストした後,プログラムは2 番目の(コピーした)仮想ディスプレイにビューポートを作成し ます。2番目のディスプレイが "再ペースト"された後,ビュー ポート内の一部だけが表示される状態になります。この結果は図 SMG-2に示されています。

    図 SMG-2 ビューポートを作成した後に生成され る出力

    SMG$CHANGE_VIEWPORTルーチンを呼び出すことにより,仮想ディスプ レイの中でビューポートを通じて表示される部分は変化します。これ は図 SMG-3に示すとおりです。

    図 SMG-3 SMG$CHANGE_VIEWPORTルーチンを呼び出 した後に生成される出力


SMG$CHANGE_VIRTUAL_DISPLAY ―Change Virtual Display

Change Virtual Displayルーチンは,仮想ディスプレイのサイズ,境界, ビデオ属性を変更します。

形式

    SMG$CHANGE_VIRTUAL_DISPLAY

                    display-id [,number-of-rows]
                   [,number-of-columns] [,display-attributes]
                   [,video-attributes] [,character-set]

戻り値

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

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

仮想ディスプレイの新しい行数。number-of-rows 引数は,仮想ディスプ レイの行数を格納した符号付きロングワードのアドレスです。

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

仮想ディスプレイの新しいカラム数。number-of-columns 引数は,仮 想ディスプレイのカラム数を格納した符号付きロングワードのアドレスで す。

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

仮想ディスプレイの属性。display-attributes 引数は,仮想ディスプレ イの属性を格納したロングワード・ビット・マスクのアドレスです。この引 数に対して指定できる値は次のとおりです。

SMG$M_BORDER 境界付き仮想ディスプレイを 指定します。省略した場合は,仮想ディスプレイに境界は表示されま せん。
SMG$M_BLOCK_BORDER ブロック形の境界付き仮想ディスプレイを指定します。省略した場合 は,仮想ディスプレイに境界は表示されません。
SMG$M_DISPLAY_CONTROLS 漢字ターミナルがグラフィ ック文字をサポートする場合は,キャリッジ・リターンやライン・フィ ードなどの制御文字をグラフィック文字として表示することを指定しま す。
SMG$M_TRUNC_ICON 仮 想ディスプレイの幅をこえる行を切り捨てた際に,その場所にアイコン (通常は菱形)を表示することを指定します。

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

仮想ディスプレイの出力に適用される属性のシステム設定値。video- attributes 引数は,ビデオ属性マスクを格納した符号なしロングワードのア ドレスです。特定の出力ルーチンを呼び出さない限り,仮想ディスプレイの すべての出力に適用されます。

たとえば,属性を指定してSMG$PUT_CHARSを呼び出した場合は,レンディ ションのシステム設定値は無効になります。

この引数に対して指定できるビットは次のとおりです。

SMG$M_BLINK 点滅する文字を表示しま す。
SMG$M_BOLD 通常 の輝度より高い輝度で文字を表示します。
SMG$M_REVERSE 文字を反転表示します。つま り,仮想ディスプレイの現在の省略時の属性とは逆の状態で表示しま す。
SMG$M_UNDERLINE 下 線を付けた文字を表示します。
SMG$M_ INVISIBLE 表示されない文字を指定します。つまり, 仮想ディスプレイに存在していても,ペーストボードに表示されない文 字を指定します。
SMG$M_USER1からSMG$M_ USER8 ユーザ定義属性を表示します。

1回の呼び出しで複数の属性の組み合わせを指定できます。他のビット はすべてDECが使用するために予約されており,0でなければなりませ ん。

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漢字コードセット

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

説明 SMG$CHANGE_VIRTUAL_DISPLAYルーチンは,既存の仮想ディスプレイ のサイズまたはシステム設定値の属性を変更します。仮想ディスプレイの サイズを変更する場合は,日本語 SMGは新しいサイズ(1行目/1カラム目か ら始まる)に適合するように,仮想ディスプレイに関連するテキストを再 マップします。

仮想ディスプレイの新しいサイズが前のサイズより小さい場合は,一部の テキストが切り捨てられる可能性があります。全角文字の右半分が切り捨 てられた場合は,その文字の左半分は未定義文字になります。仮想ディス プレイの新しいサイズが前のサイズより大きい場合は,テキストの右側に 空白が挿入されることがあります。

仮想ディスプレイのサイズを変更した場合は,仮想ディスプレイの仮想カ ーソルは,1行目,1カラム目に移動されます。ラベル付き境界を仮想ディ スプレイで使用する際に,サイズの変更された仮想ディスプレイ上にラベ ルを表示できない場合は,ラベルは削除されます。

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

戻される状態値

SS$_NORMAL 正常終了。
LIB$_INSVIRMEM 要求されたバッファを 再び割り当てるために必要な仮想メモリが不足しています。
SMG$_INVARG ビデオ属性または仮 想ディスプレイの属性に誤りがあります。
SMG$_INVDIS_ID display-id 引数が誤っていま す。
SMG$_WRONUMARG 引数 の数が誤っています。


SMG$CHECK_FOR_OCCLUSION ―Check for Occlusion

Check for Occlusionルーチンは,仮想ディスプレイが別の仮想ディスプ レイによって覆われているかどうかを確認します。

形式

    SMG$CHECK_FOR_OCCLUSION   display-id ,pasteboard-id
                             ,occlusion-state

戻り値

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

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

確認したいペーストボードを指定します。pasteboard-id 引数は,ペー ストボード識別子を格納した符号なしロングワードのアドレスです。この引 数はSMG$CREATE_PASTEBOARDルーチンによって与えられます。

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

ディスプレイが重なっているかどうかを示す値が書き込まれます。 occlusion-state 引数は,重なっているかどうかを示す状態が書き込まれ る符号付きロングワードのアドレスです。ディスプレイが重なっている場 合には,occlusion-state 引数は1に設定され,指定されたペーストボー ドでディスプレイが重なっていない場合には0に設定されます。プロシー ジャがSS$_NORMALを戻さなかった場合には,occlusion-state 引数の内容 は未定義です。

説明

SMG$CHECK_FOR_OCCLUSIONルーチンは,指定された仮想ディスプレ イを指定されたペーストボードにペーストしたときに,その仮想ディスプ レイが別の仮想ディスプレイと重なり合っているかどうかを確認します。

戻される状態値

SS$_NORMAL 正常終了。
SMG$_INVDIS_ID display-id 引数に誤り があります。
SMG$_INVPAS_ID pasteboard-id 引数に誤りがあります。
SMG$_NOTPASTED 仮想ディスプレイが指定され たペーストボードにペーストされていません。
SMG$_WRONUMARG 引数の数が誤っていま す。

  1. C+
    C This DEC FORTRAN example program demonstrates the use of
    C SMG$CHECK_FOR_OCCLUSION.
    C
    C This routine creates a virtual display and writes it to the
    C pasteboard.  Data is placed in the virtual display using SMG$PUT_CHARS.
    C-
    
            INTEGER SMG$CREATE_VIRTUAL_DISPLAY, SMG$CREATE_PASTEBOARD
            INTEGER SMG$PASTE_VIRTUAL_DISPLAY,  SMG$PUT_CHARS
            INTEGER SMG$CHECK_FOR_OCCLUSION
            INTEGER DISPLAY1, DISPLAY2, PASTE1, PASTE2, ROWS, COLUMNS, BORDER
            INTEGER OCCLUSION, STATUS
            CHARACTER*29 TEXT
    
    C+
    C Include the SMG definitions. In particular, we want SMG$M_BORDER.
    C-
    
            INCLUDE '($SMGDEF)'
    
    C+
    C Create two virtual displays using SMG$CREATE_VIRTUAL_DISPLAY.
    C Give them borders.
    C-
    
            ROWS = 6
            COLUMNS = 50
    
            STATUS = SMG$CREATE_VIRTUAL_DISPLAY
         1          (ROWS, COLUMNS, DISPLAY1, SMG$M_BORDER)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
            ROWS = 5
            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 the pasteboard using SMG$CREATE_PASTEBOARD.
    C-
    
            STATUS = SMG$CREATE_PASTEBOARD (PASTE1)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
    C+
    C Use SMG$PUT_CHARS to put data into the virtual displays.
    C-
    
            STATUS = SMG$PUT_CHARS ( DISPLAY1,
         1         ' This virtual display has 6 rows and 50 columns.', 2, 1)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
            STATUS = SMG$PUT_CHARS ( DISPLAY1,
         1         ' This is a bordered virtual display.', 3, 1)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
            STATUS = SMG$PUT_CHARS ( DISPLAY1,
         1         ' SMG$PUT_CHARS puts data in this virtual display.', 4,
         1          1)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
            STATUS = SMG$PUT_CHARS ( DISPLAY1,
         1         ' This text should be partially occluded.', 5, 1)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
            STATUS = SMG$PUT_CHARS ( DISPLAY1,
         1         ' So should part of this row.', 6, 1)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
            STATUS = SMG$PUT_CHARS ( DISPLAY2, ' This is virtual', 3, 1)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
            STATUS = SMG$PUT_CHARS ( DISPLAY2,
         1         ' display #2.', 4, 1)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
            STATUS = SMG$PUT_CHARS ( DISPLAY2,
         1         ' This is just some more text.', 5, 1)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
    C+
    C Use SMG$PASTE_VIRTUAL_DISPLAY to paste the virtual display.
    C-
    
            STATUS = SMG$PASTE_VIRTUAL_DISPLAY ( DISPLAY1, PASTE1, 4, 15)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
            STATUS = SMG$PASTE_VIRTUAL_DISPLAY ( DISPLAY2, PASTE1, 8, 15)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
    C+
    C Check the two virtual displays for occlusion by calling
    C SMG$CHECK_FOR_OCCLUSION.
    C-
    
            TEXT = 'This display is not occluded.'
    
            STATUS = SMG$CHECK_FOR_OCCLUSION (DISPLAY1, PASTE1, OCCLUSION)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
            IF (OCCLUSION .EQ. 0) THEN
                    STATUS = SMG$PUT_CHARS (DISPLAY1, TEXT, 1, 1)
                    IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
            ELSE
                    STATUS = SMG$PUT_CHARS (DISPLAY1, 'Occluded.', 1 , 1)
                    IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
            END IF
    
            STATUS = SMG$CHECK_FOR_OCCLUSION (DISPLAY2, PASTE1, OCCLUSION)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
            IF (OCCLUSION .EQ. 0) THEN
                    STATUS = SMG$PUT_CHARS (DISPLAY2, TEXT, 1, 1)
                    IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
            ELSE
                    STATUS = SMG$PUT_CHARS (DISPLAY2, 'Occluded.', 1 , 1)
                    IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
            END IF
    
            END
    
    このFORTRANプログラムから生成される出力は図 SMG-4 に示すとおりです。

図 SMG-4 SMG$CHECK_FOR_OCCLUSIONルーチン を呼び出すFORTRANプログラムが生成する出力


SMG$CONTROL_MODE ―Control Mode

Control Modeルーチンはペーストボードのモードを制御します。これに は,バッファ操作,画面更新,ペーストボード削除時のターミナル画面の 消去,ターミナル画面管理のためのタブの使用が含まれます。

形式

    SMG$CONTROL_MODE   pasteboard-id [,new-mode] [,old-mode]
                      [,buffer-size]

戻り値

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

引数

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

変更されるペーストボードを指定します。pasteboard-id 引数は,ペー ストボード識別子を格納した符号なしロングワードのアドレスです。

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

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

制御モードの新設定。new-mode 引数は省略可能で,設定モードを格納し た符号なしロングワード・ビット・マスクのアドレスです。ビットを1に設定 すると各モードが設定され,0に設定すると解除されます。この引数に対して 指定できる値は次のとおりです。

SMG$M_BUF_ENABLED バッファリングを行い ます。
SMG$M_CLEAR_SCREEN ペーストボードが消去されずにプログラムが終了した際にタ ーミナル画面を消去します。
SMG$M_ MINUPD 更新を最小限にします(省略時の設定 値)。
SMG$M_NOTABS 日 本語SMGがターミナル画面管理を行う際にタブを使わないようにし ます。
SMG$M_PROTECT ペーストボード操作をAST割り込みから保護します(省略時の設定 値)。

他のビットはすべてDECが使用するために予約されており,0でなければな りません。

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

制御モードの旧設定。old-mode 引数は省略可能で,旧設定モードが書き 込まれる符号なしロングワード・ビット・マスクのアドレスです。このプロ シージャが呼ばれる前に使われていた設定モードです。ビットが1の場合は各 モードが設定されており,0の場合は設定されていません。

buffer-size
OpenVMS用法word_unsigned
データ型word (unsigned)
アクセスread only
受け渡し方by reference

バッファ・サイズ(バイト長)。buffer-size 引数は省略可能で,バッフ ァ・サイズを格納した符号なしワードのアドレスです。buffer-size 引数は バッファリング可能(SMG$M_BUF_ENABLEDの指定がある)な場合に適用されま す。システム設定値である最小バッファ・サイズは256バイトです。最大バッ ファ・サイズは65535バイトです。buffer-size 引数の値は UAF値に依存し, その最大値はSYSGENパラメータ(MAXBUF)によって決まります。

説明

SMG$CONTROL_MODEルーチンを使用することにより,指定したペース トボード・モードに対する日本語SMG操作の設定モードを得たり,その設 定値を変更することができます。また,new-mode 引数と old-mode 引数 を組み合わせて,次のような場合に使用することができます。

SMG$CONTROL_MODEルーチンを使用することにより,次のモードに関して,情報を 得たり変更を加えることができます。

戻される状態値

SS$_NORMAL 正常終了。
SMG$_INVARG 引数が誤っています。 new-mode 引数に SMG$M_BUF_ENABLED, SMG$M_MINUPD, SMG$M_CLEAR_SCREEN, SMG$M_NOTABS に相当しないビットが設定されているか,またはバッファ・サイズが256バイト以下で す。
SMG$_INVPAS_ ID pasteboard-id 引数が誤って います。
SMG$_WRONUMARG 引数の数が誤っています。


SMG$COPY_VIRTUAL_DISPLAY ―Copy a Virtual Display

Copy a Virtual Displayルーチンは,既存の仮想ディスプレイのコピーを作成し, そのコピーに新しい仮想ディスプレイ識別子を割り当てます。

形式

    SMG$COPY_VIRTUAL_DISPLAY   current-display-id ,new-display-id

戻り値

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

引数

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

コピーされる仮想ディスプレイの識別子を表示します。 current- display-id 引数はディスプレイ識別子を格納した符号なしロングワードの アドレスです。

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

新しく生成される仮想ディスプレイのディスプレイ識別子が書 き込まれます。new-display-id 引数は,新しいディスプレイ識別子を格納する符号な しロングワードのアドレスです。

説明

SMG$COPY_VIRTUAL_DISPLAYルーチンは既存の仮想ディスプレイのコピー を作成し,そのコピーに新しい仮想ディスプレイ番号を割り当てます。この新しく生 成される仮想ディスプレイはどこにもペーストされません。新しく生成される仮想デ ィスプレイをペーストするには,SMG$PASTE_VIRTUAL_DISPLAYルーチンと new-display-id 識別子を使用します。SMG$COPY_VIRTUAL_DISPLAYルーチンを呼び出す ときに,コピーされる既存のディスプレイをペーストする必要はありません。

戻される状態値

SS$_NORMAL 正常終了。
LIB$_INSVIRMEM 必要なバッファに割り当てるための仮想メモリが不足 しています。

  1. C+
    C This DEC FORTRAN example program demonstrates the use of
    C SMG$COPY_VIRTUAL_DISPLAY.
    C
    C This routine creates a virtual display and writes it to the
    C pasteboard.  Data is placed in the virtual display using SMG$PUT_CHARS.
    C-
    
            IMPLICIT INTEGER (A-Z)
            CHARACTER*29 TEXT
    
    C+
    C Include the SMG definitions. In particular, we want SMG$M_BORDER.
    C-
    
            INCLUDE '($SMGDEF)'
    
    C+
    C Create two virtual displays using SMG$CREATE_VIRTUAL_DISPLAY.
    C Give them borders.
    C-
    
            ROWS = 6
            COLUMNS = 50
    
            STATUS = SMG$CREATE_VIRTUAL_DISPLAY
         1          (ROWS, COLUMNS, DISPLAY1, SMG$M_BORDER)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
            ROWS = 5
            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 the pasteboard using SMG$CREATE_PASTEBOARD.
    C-
    
            STATUS = SMG$CREATE_PASTEBOARD (PASTE1)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
    C+
    C Use SMG$PUT_CHARS to put data into the virtual displays.
    C-
    
            STATUS = SMG$PUT_CHARS ( DISPLAY1,
         1         ' This virtual display has 6 rows and 50 columns.', 2, 1)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
            STATUS = SMG$PUT_CHARS ( DISPLAY1,
         1         ' This is a bordered virtual display.', 3, 1)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
            STATUS = SMG$PUT_CHARS ( DISPLAY1,
         1         ' SMG$PUT_CHARS puts data in this virtual display.', 4,
         1          1)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
            STATUS = SMG$PUT_CHARS ( DISPLAY1,
         1         ' This text should be partially occluded.', 5, 1)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
            STATUS = SMG$PUT_CHARS ( DISPLAY1,
         1         ' So should part of this row.', 6, 1)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
            STATUS = SMG$PUT_CHARS ( DISPLAY2, ' This is virtual', 3, 1)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
            STATUS = SMG$PUT_CHARS ( DISPLAY2,
         1         ' display #2.', 4, 1)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
            STATUS = SMG$PUT_CHARS ( DISPLAY2,
         1         ' This is just some more text.', 5, 1)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
    C+
    C Use SMG$PASTE_VIRTUAL_DISPLAY to paste the virtual display.
    C-
    
            STATUS = SMG$PASTE_VIRTUAL_DISPLAY ( DISPLAY1, PASTE1, 4, 15)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
            STATUS = SMG$PASTE_VIRTUAL_DISPLAY ( DISPLAY2, PASTE1, 8, 15)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
    C+
    C Copy the first virtual display, the one that is partially occluded.
    C-
    
     STATUS = SMG$COPY_VIRTUAL_DISPLAY ( DISPLAY1, NEW_DISPLAY)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
    C+
    C Now paste this new virtual display so that it occludes the other displays.
    C-
    
            STATUS = SMG$PASTE_VIRTUAL_DISPLAY ( NEW_DISPLAY, PASTE1, 4, 20)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
            END
    
    このFORTRANの例で生成される最初の仮想ディスプレイは 図 SMG-5に示すとおりです。

    図 SMG-5 この例で生成される最初の仮想ディスプ レイ

    このFORTRANの例で生成される2番目の仮想ディスプレイは 図 SMG-6に示すとおりです。

    図 SMG-6 この例で生成される2番目の仮想ディス プレイ

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

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


SMG$CREATE_KEY_TABLE ―Create Key Table

Create Key Tableルーチンは,キー定義を登録するためのテーブルを作成します。

形式

    SMG$CREATE_KEY_TABLE   key-table-id

戻り値

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

引数

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

新しく生成されるキー・テーブルの識別子が書き込まれます。 key- table-id 引数は,キー・テーブル識別子が書き込まれる符号なしロングワード のアドレスです。

説明

SMG$CREATE_KEY_TABLEルーチンは,キー定義テーブルを作成します。 この後,キー定義はSMG$ADD_KEY_DEF,SMG$LOAD_KEY_DEFS,SMG$DEFINE_KEYルーチン を使用してこのテーブルに追加登録でき,また,SMG$READ_COMPOSED_LINEルーチンに よって使用されます。

戻される状態値

SS$_NORMAL 正常終了。
LIB$_INSVIRMEM 仮想メモリが不足しています。
SMG$_WRONUMARG 引数の数が誤っています。


SMG$CREATE_MENU ―Fill the Virtual Display with a Menu

Fill the Virtual Display with a Menuルーチンは,指定された仮想ディスプレ イに,指定された行から選択メニューを表示します。

形式

    SMG$CREATE_MENU   display-id ,choices [,menu-type] [,flags]
                     [,row] [,rendition-set] [,rendition-complement]

戻り値

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

引数

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

メニューを作成する仮想ディスプレイを指定します。 display-id 引数はディスプレイ識別子を格納した符号なしロングワードのアドレスで す。

choices
OpenVMS用法static array of char_string
データ型character string
アクセスread only
受け渡し方by descriptor

メニューに表示される各々の項目に対応する静的配列。 choices 引数は文字列の静的配列を示すディスクリプタのアドレスです。空白のメニ ュー項目は認識されないので,注意してください。

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

表示されるメニューのタイプを指定するビット・マスク。 menu-type 引数は省略可能で,メニュー・タイプを指定するロングワード・ビット・ マスクのアドレスです。この引数に対して指定できる値は次のとおりです。

SMG$K_BLOCK メニュー項目がマトリックス形式で表示されます(省 略時設定)。
SMG$K_ VERTICAL 各々のメニュー項目が 各々の行に表示されます。
SMG$K_HORIZONTAL 複数の メニュー項目がすべてひとつの行に表示されます。

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

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

SMG$M_DOUBLE_SPACE メニュー項目が,ダブル・スペースで表示さ れます。省略時設定はシングル・スペースです。
SMG$M_FIXED_FORMAT 各々のメニュー項目が一定の長さのフィールドで 表示されます。フィールドとは,一番大きなメニュー項目のサイズです。省略時は, 各々のメニュー項目のサイズによって表示されます。
SMG$M_WIDE_MENU メニュー項目に倍角文字が使用されます。省略時の設 定値は標準サイズ文字です。

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

仮想ディスプレイで,最初のメニュー項目が表示される行番号( 省略可能)。row 引数は,行番号を格納した符号付きロングワードのアドレスです。 row 引数を省略した場合,仮想ディスプレイのスクロール領域の1行目を使用します。

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_ USER1からSMG$M_USER8 ユーザ定義属性を表示します。

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

属性補足指定子。rendition-complement 引数は省略可能であ り,ロングワード・ビット・マスクのアドレスです。このロングワード・ビット・マ スクの各属性を設定すると,ディスプレイ内の対応する属性は補足されます。 rendition-set 引数に指定できる属性はすべて,rendition-complement引数によって 補足できます。

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

説明

SMG$CREATE_MENUルーチンは,仮想ディスプレイのスクロール領域上の 指定された行から,メニュー選択のリストを表示します。メニュー項目は,仮想ディ スプレイの2カラム目から表示が開始されます。複数のメニュー項目が同じ行にある場 合には,4カラム分の間隔をあけて分かれています。

選択は,以下のどれかの形式で,指定された属性で表示されます。

Vertical 各々のメニュー項目が各々の行に表示されます。
Horizontal 複数のメニュー項目がすべてひとつの行に表示 されます。
Block メニュー項目がマトリックス形式 で表示されます。

仮想ディスプレイの境界の中に入らないメニュー項目は,ディスプレイに表示され ませんが,SMG$SELECT_FROM_MENUルーチンによって後からスクロールされるために保 存されます。省略時設定では,メニュー項目はシングル・スペースで表示されますが, ダブル・スペースに変更することも可能です。各々の項目は,一列に4カラムずつスペー スをあけて表示されます。また,最も大きい文字列のサイズに等しいカラムの幅に統 一して表示することも可能です。

SMG$CREATE_MENUルーチンを呼び出したあとで,ユーザは,作成されたメニューを 含む行を乱すような文字を,ディスプレイに出力してはいけません。メニューを乱す ような文字が出力された場合には,予期しない結果になる場合があります。このメニ ューから項目を選択する場合にはSMG$SELECT_FROM_MENUルーチンを使用してください。

SMG$CREATE_MENUルーチンは,1次元のNCA,VSA文字配列をサポートしています。 NCA,VSA文字配列とは,VAX ada,VAX BASIC,VAX COBOL,DEC Fortran,VAX Pascal とVAX PL/Iで作成される文字配列を含みます(しかし,SMG$CREATE_MENUルー チンを VAX BASIC から呼び出す場合は,配列宣言にMAPは必要で す)。

メニュー項目の文字集合属性は,メニュー項目が表示される仮想ディスプレイの文 字集合属性によって,決められます。

戻される状態値

SS$_NORMAL 正常終了。
SMG$_INVDIS_ID display-id 引数に誤りがあります。
LIB$_xxxx LIB$CREATE_VM_ZONE,LIB$GET_VM,LIB$FREE_VMから戻され る状態値。
SMG$_xxxx SMG$PUT_ CHARS, SMG$BEGIN_DISPLAY_UPDATE,SMG$END_DISPLAY_UPDATEルーチンから戻される状態値。

注:SMG$BEGIN_DISPLAY_UPDATEルーチンとSMG$END_DISPLAY_ UPDATEルー チンはサポートしていません。

  1. SMG$CREATE_MENUルーチンを使用した例については,SMG$SELECT_FROM_ MENUルーチン を参照してください。


SMG$CREATE_PASTEBOARD ―Create a Pasteboard

Create Pasteboardルーチンはペーストボードを作成し,ペーストボード識別子を 返します。

形式

    SMG$CREATE_PASTEBOARD   pasteboard-id [,output-device]
                           [,number-of-pasteboard-rows]
                           [,number-of-pasteboard-columns] [,flags]
                           [,type-of-terminal]

戻り値

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

引数

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

新規生成されるペーストボードの識別子。pasteboard-id 引数 は,ペーストボード識別子を格納する符号なしロングワードのアドレスです。

output-device
VMS用法:device_name
データ型:character string
アクセス:read only
受け渡し方:by descriptor

ペーストボードに結びついた出力を書き出すファイル指定また は論理名。output-device 引数は,出力装置名を示すディスクリプタのアドレスです。 この引数を省略した場合の値はSYS$OUTPUTです。


注意

日本語SMGでは,ファイルへの出力はサポートされていません。


number-of-pasteboard-rows
OpenVMS用法longword_signed
データ型longword (signed)
アクセスwrite only
受け渡し方by reference

output-device 引数で指定された装置の行数。 number-of-pasteboard-rows 引数は, output-device 引数で指定された装置の行数を 格納する符号付きロングワードのアドレスです。この値は,ペーストボードの行数と なる場合もあります。

number-of-pasteboard-columns
OpenVMS用法longword_signed
データ型longword (signed)
アクセスwrite only
受け渡し方by reference

output-device 引数で指定された装置のカラム数。 number-of-pasteboard-columns 引数は output-device 引数で指定された装置のカラ ム数を格納する符号付きロングワードのアドレスです。

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

ペーストボードで使用される属性。flags 引数は省略可能で, フラグを格納した符号なしロングワードのアドレスです。システムで設定されている 動作では,ペーストボードが生成される時点でターミナル画面を消去します。以下の 値が指定できます。

SMG$M_KEEP_CONTENTS 初期化時に,画面を消去します。日本語SMG はすべてのターミナル画面を管理する際に最良の機能を提供するため, SMG$M_KEEP_CONTENTSの使用は望ましくありません。

type-of-terminal
OpenVMS用法mask_longword
データ型longword (unsiqned)
アクセスwrite only
受け渡し方by reference

ペーストボード関連の出力が書かれるSMG内部の装置タイプ。 type-of- terminal 引数はターミナル・タイプを格納する符号なしロングワードのア ドレスです。返される値は次のとおりです。


SMG$K_UNKNOWN
SMG$K_VTFOREIGN
SMG$K_HARDCOPY
SMG$K_VTTERMTABLE

SMG$K_VTTERMTABLE以外の値が返される場合,SMG$SNAPSHOTルーチンを使用してペー ストボードの内容を出力しなければなりません(現在の日本語SMGでは,SMG$SNAPSHOT ルーチンはサポートされていません)。

説明

SMG$CREATE_PASTEBOARDルーチンは新しいペーストボードを作成し, output-device 引数で指定された装置と結び付け,割り当てられたpasteboard-id 引 数を返します。すでにペーストボードが割り当てられている装置にペーストボードが 要求された場合は,このルーチンは既存のペーストボードの識別子を返し, SMG$_PASALREXI状態コードを戻します。

プログラムがSMG$CREATE_PASTEBOARDルーチンとSMG$CREATE_VIRTUAL_ KEYBOARDルー チンを呼ぶ場合,SMG$CREATE_PASTEBOARDルーチンが先に呼ばれることを確認してくだ さい。SMG$CREATE_PASTEBOARDルーチンより先にSMG$CREATE_VIRTUAL_KEYBOARDルーチ ンを呼ぶと,プログラムは正しく機能しません。

戻される状態値

SS$_NORMAL 正常終了。
LIB$_INSVIRMEM 要求されたバッファを割り当てるのに必要な仮想メモ リが不足しています。
SMG$_PASALREXI 終了。この装 置にはすでにペーストボードが存在しています。
SMG$_ WRONUMARG 引数の数が誤っています。
その他 LIB$GET_EF,
LIB$GET_VM,
$QIO,
$GETDVI
$ASSIGNから戻される状態値


SMG$CREATE_SUBPROCESS ―Create and Initialize a Subprocess

Create and Initialize a Subprocessルーチンは,DCLサブプロセスを生成し,そ のサブプロセスを仮想ディスプレイに対応づけます。

形式

    SMG$CREATE_SUBPROCESS   display-id [,AST-routine] [,AST-argument]

戻り値

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

AST-routine
OpenVMS用法ast_procedure
データ型procedure entry mask
アクセスcall without stack unwinding
受け渡し方by value

現在実行中のコマンドが終了したときに呼び出されるASTルー チン(省略可能)。AST-routine 引数はルーチンのプロシージャ・エントリ・マスクで す。

ASTルーチンは5つの引数を使用して呼び出されます。最初の引数は,display-id 引数,AST-argument 引数,command-status 引数の値を格納したデータ構造を示すポ インタです。ASTルーチンに対する他の4つの引数はR0,R1,PC,PSLです。

AST-routine 引数を指定した場合には,SMG$EXECUTE_COMMANDルーチンはそのルーチン に渡されたコマンドをバッファに登録し,各コマンドを順に実行し,各コマンドが終 了すると,指定されたASTルーチンを呼び出します。AST-routine 引数を指定しなかっ た場合には,SMG$EXECUTE_COMMANDルーチンは,指定されたコマンドが終了するのを待 ち,その後,制御をユーザに戻します。

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

ASTルーチンに対して指定する引数(省略可能)。AST-argument 引数は,ASTルーチンに渡される値を格納した符号なしロングワードです。

説明

SMG$CREATE_SUBPROCESSルーチンを使用すれば,DCLサブプロセスを生 成し,このサブプロセスを仮想ディスプレイに対応づけることができます(サブプロセ スはSET NOVERIFY とSET NOONのDCLコマンドを使用して初期化されます)。その後,メ イン・プロセスからSMG$EXECUTE_COMMANDルーチンを使用してサブプロセスが実行する コマンドを指定できます。

プロセス間通信はメール・ボックスを使用して実行されます。したがって,入力コ マンドと出力テキストを制御できます。コマンドをバッファに登録する場合には,オ プションとしてASTルーチンを使用することにより,コマンドが終了したことをメイン・ プロセスに通知します。このルーチンを使用するために,ブロードキャスト・トラッ ピングと要求されていない入力を禁止する必要はありません。

サブプロセスを生成する前に,日本語SMGは,必要なメールボックスとサブプロセ スを作成するための十分な資源があるかどうかを確認します。BYTLMの残存値は少なく とも5,000でなければならず,PRCLMの残存値は少なくとも1でなければなりません。

日本語SMGは,ユーザがSMG$DELETE_SUBPROCESSルーチンを呼び出さずに処理を終了 した場合,サブプロセスを削除する終了ハンドラを宣言します。しかし,場合によっ ては,これらの機能が提供する終了ハンドラが実行されないことがあります。この場 合には,DCLのSHOW PROCESS/SUBコマンドとDCLのSTOPコマンドを使用してサブプロセ スを削除しなければなりません。

戻される状態値

SS$_NORMAL 正常終了。
SMG$_INSQUOCRE サブプロセスを生成するのに必要なクォータが不足し ています。
SMG$_INVDIS_ID display-id 引数に誤り があります。
SMG$_SUBALREXI この display-id 引数 に対応するサブプロセスがすでに存在します(代替正常終了状態)。
SS$_ xxxx $GETDVI,$GETJPI,$DCLEXH,または$CREMBXから戻された状 態値。
LIB$_xxxx LIB$SPAWN,LIB$GET_EF, LIB$GET_VMから戻された状態値。


SMG$CREATE_VIEWPORT ―Create a Virtual Viewport

Create a Virtual Viewportルーチンは,ビューポートを作成し,そのビューポー トを仮想ディスプレイに対応づけます。ビューポートの位置とサイズは呼び出し側が 指定します。

形式

    SMG$CREATE_VIEWPORT   display-id ,viewport-row-start
                         ,viewport-column-start ,viewport-number-rows
                         ,viewport-number-columns

戻り値

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

引数

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

新しく作成されるビューポートに対応づけられる,仮想ディス プレイのディスプレイ識別子。display-id 引数は,この識別子を格納した符号なしロ ングワードのアドレスです。

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

ビューポートの1行目となる仮想ディスプレイの行番号。 viewport- row-start 引数は,行番号を格納した符号付きロングワードのアドレスで す。

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

ビューポートの1カラム目となる仮想ディスプレイのカラム番 号。viewport-column-start 引数は,カラム番号を格納した符号付きロングワードの アドレスです。

viewport-column-start 引数で指定されたカラムが,全角文字の右半分であった 場合には,そのカラムは表示されません。

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

ビューポート内の行数。viewport-number-rows 引数は,新し く作成されるビューポート内の行数を格納した符号付きロングワードのアドレスです。

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

ビューポート内のカラム数。viewport-number-columns 引数は, 新しく作成されるビューポート内のカラム数を格納した符号付きロングワードのアド レスです。

説明

SMG$CREATE_VIEWPORTルーチンはビューポートを作成し,そのビューポー トを特定の仮想ディスプレイに対応づけます。仮想ディスプレイはビューポートを作 成する前に作成しておかなければならず,各仮想ディスプレイに対してビューポート を1つだけ作成できます。ビューポートを表示するには,SMG$PASTE_VIRTUAL_DISPLAY ルーチンを呼び出すことにより,仮想ディスプレイをペーストしなければなりません。 仮想ディスプレイのビューポートの中に入る部分だけが表示されます。ビューポート はSMG$DELETE_VIEWPORT ルーチンを使用して削除できます。

viewport-column-start 引数で指定されたカラムが全角文字の右半分であった場 合には,そのカラムは表示されません。また,ビューポートが全角文字の左半分で終 了した場合にも,そのカラムは表示されません。

戻される状態値

SS$_NORMAL 正常終了。
SMG$_INVARG 行数またはカラム数が0より小さい値です。
SMG$_INVCOL 誤ったカラム番号が指定されました。
SMG$_INVDIS_ID display-id 引数に誤りがあります。
SMG$_INVROW 誤った行番号が指定されました。
SMG$_ WINEXISTS ビューポートはすでに仮想ディスプレイ内に存在しま す(代替正常終了状態)。
SMG$_ WRONUMARG 引数の数 が誤っています。

  1. C+
    C This DEC FORTRAN example creates two virtual displays, one
    C being a copy of the other. The initial virtual display is
    C filled and pasted to the pasteboard. The second virtual
    C display is assigned a viewport and then pasted to the
    C pasteboard. Therefore, only the section of the second
    C virtual display that falls inside the viewport is visible.
    C-
     IMPLICIT INTEGER (A-Z)
     INCLUDE '($SMGDEF)'
    
    C Create the Virtual Display. Give it a border.
    
     ROWS = 9
       COLUMNS = 32
    
     STATUS = SMG$CREATE_VIRTUAL_DISPLAY
         1         (ROWS, COLUMNS, DISPLAY1,SMG$M_BORDER )
     IF (.NOT. STATUS) call lib$signal(%val(STATUS))
    
    C Create the Pasteboard
    
     STATUS = SMG$CREATE_PASTEBOARD (PASTE1)
     IF (.NOT. STATUS) call lib$signal(%val(STATUS))
    
    C Put data in the Virtual Display
    
     STATUS = SMG$PUT_CHARS ( DISPLAY1,
         1  'This is row number 1, you see.', 1, 1)
     IF (.not. STATUS) call lib$signal(%val(STATUS))
    
     STATUS = SMG$PUT_CHARS ( DISPLAY1,
         1  'This is row number 2, you see.', 2, 1)
     IF (.not. STATUS) call lib$signal(%val(STATUS))
    
     STATUS = SMG$PUT_CHARS ( DISPLAY1,
         1  'This is row number 3, you see.', 3, 1)
     IF (.not. STATUS) call lib$signal(%val(STATUS))
    
     STATUS = SMG$PUT_CHARS ( DISPLAY1,
         1  'This is row number 4, you see.', 4,1)
     IF (.not. STATUS) call lib$signal(%val(STATUS))
    
     STATUS = SMG$PUT_CHARS ( DISPLAY1,
         1  'This is row number 5, you see.', 5, 1)
     IF (.not. STATUS) call lib$signal(%val(STATUS))
    
     STATUS = SMG$PUT_CHARS ( DISPLAY1,
         1  'This is row number 6, you see.', 6, 1)
     IF (.not. STATUS) call lib$signal(%val(STATUS))
    
     STATUS = SMG$PUT_CHARS ( DISPLAY1,
         1  'This is row number 7, you see.', 7, 1)
     IF (.not. STATUS) call lib$signal(%val(STATUS))
    
     STATUS = SMG$PUT_CHARS ( DISPLAY1,
         1  'This is row number 8, you see.', 8, 1)
     IF (.not. STATUS) call lib$signal(%val(STATUS))
    
     STATUS = SMG$PUT_CHARS ( DISPLAY1,
         1  'This is row number 9, you see.', 9, 1)
     IF (.not. STATUS) call lib$signal(%val(STATUS))
    
    C Paste the Virtual Display
     STATUS = SMG$PASTE_VIRTUAL_DISPLAY (DISPLAY1, PASTE1, 2, 2)
     IF (.NOT. STATUS) call lib$signal(%VAL(STATUS))
    
         STATUS = SMG$LABEL_BORDER (DISPLAY1, 'Full Display',,,SMG$M_BOLD)
     IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
     STATUS = SMG$COPY_VIRTUAL_DISPLAY (DISPLAY1, DISPLAY2)
     IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
     STATUS = SMG$LABEL_BORDER (DISPLAY2, 'Viewport',,,SMG$M_BOLD)
     IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
     STATUS = SMG$CREATE_VIEWPORT ( DISPLAY2, 3, 9, 3, 12)
     IF (.NOT. STATUS) call lib$signal(%VAL(STATUS))
    
     STATUS = SMG$PASTE_VIRTUAL_DISPLAY ( DISPLAY2, PASTE1, 15, 20)
     IF (.NOT. STATUS) call lib$signal(%VAL(STATUS))
    
     END
    
    この DEC FORTRAN の例では,最初の仮想ディスプレイが2番目の 仮想ディスプレイにコピーされます。2番目の仮想ディスプレイにはビューポートが対 応づけられています。 2番目の仮想ディスプレイをペーストすると,仮想ディスプレ イの中でビューポートの内部だけが表示されます。これは図 SMG-8に示すとおりです。

    図 SMG-8 ビューポートを作成することにより生成される 出力


SMG$CREATE_VIRTUAL_DISPLAY ―Create a Virtual Display

Create a Virtual Displayルーチンは,仮想ディスプレイを作成してその識別子 を返します。

形式

    SMG$CREATE_VIRTUAL_DISPLAY

                    number-of-rows ,number-of-columns ,display-id
                   [,display-attributes] [,video-attributes]
                   [,character-set]

戻り値

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

引数

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

新規に作成される仮想ディスプレイの行数。number-of-rows 引数は,行数を格納した符号付きロングワードのアドレスです。

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

新規に作成する仮想ディスプレイのカラム数。 number-of-columns 引数は,カラム数を格納した符号付きロングワードのアドレスで す。

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

新規に作成した仮想ディスプレイの識別子。display-id 引数 は,仮想ディスプレイの識別子が書き込まれる符号なしロングワードのアドレスです。

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

新規に作成する仮想ディスプレイの属性。display-attributes 引数は,仮想ディスプレイの属性を格納したロングワード・ビット・マスクのアドレ スです。この引数に対して指定できる値は次のとおりです。

SMG$M_BORDER 境界付き仮想ディスプレイを指定します。省略した 場合には,仮想ディスプレイ面に境界は表示されません。
SMG$M_BLOCK_BORDER ブロック形境界付き仮想ディスプレイを指定しま す。省略した場合は,仮想ディスプレイに境界は表示されません。
SMG$M_DISPLAY_CONTROLS 漢字ターミナルがグラフィック文字をサポー トする場合は,キャリッジ・リターンやライン・フィードなどの制御文字をグラフィ ック文字として表示することを指定します。
SMG$M_TRUNC_ICON 仮想ディスプレイの幅をこえる行を切り捨てた際に, その場所にアイコン(通常は菱形)を表示することを指定します。

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

仮想ディスプレイの全出力に適用される属性のシステム設定値。 video- attributes 引数は,ビデオ属性マスクを格納した符号なしロングワードのア ドレスです。この引数に対して指定できる値は次のとおりです。

SMG$M_BLINK 点滅する文字を表示します。
SMG$M_BOLD 通常の輝度より高い輝度で文字を表示します。
SMG$M_REVERSE 文字を反転表示します。つまり,仮想表示の現在 のシステム設定値の属性とは逆の状態で表示します。
SMG$M_UNDERLINE 下線を付けた文字を表示します。
SMG$M_ INVISIBLE 表示されない文字を指定します。つまり,仮想ディ スプレイに存在していても,ペーストボードに表示されない文字を指定します。
SMG$M_USER1からSMG$M_ USER8 ユーザ定義属性を表示しま す。

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

挿入されるテキストの文字集合。character-set 引数は,文字 集合指定子を格納した符号なしロングワードのアドレスです。この引数を省略した場 合,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漢字コードセット

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

SMG$DEFAULT_CHARACTER_SET論理名については,表 2-2を参照してください。

説明

SMG$CREATE_VIRTUAL_DISPLAYルーチンは,新しい仮想ディスプレイを 作成し,仮想ディスプレイの識別子を返します。仮想ディスプレイを作成したばかり の状態では,その仮想ディスプレイには空白が含まれ,仮想カーソルは1行目,1カラ ム目に設定されます。仮想スクロール領域は仮想ディスプレイ全体に設定されます。 仮想ディスプレイを表示可能な状態に設定するには,SMG$PASTE_VIRTUAL_DISPLAYルー チンを使用します。

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

戻される状態値

SS$_NORMAL 正常終了。
LIB$_INSVIRMEM 仮想メモリが不足しています。
SMG$_DSPIN_USE 同じディスプレイへの日本語SMGルーチンコールを中断 させたASTルーチンから,日本語SMGルーチンが呼ばれました。
SMG$_INVARG 引数が誤っています。video-attributes 引数または display-attributes 引数に認識されない値が指定されています。
SMG$_ WRONUMARG 引数の数が誤っています。

  1. C+
    C This DEC FORTRAN example program demonstrates the use of
    C SMG$ERASE_PASTEBOARD.
    C-
    
            IMPLICIT INTEGER*4 (A-Z)
            CHARACTER*80    OUT_STR,TRIM_STR
            CHARACTER*18    PROMPT          /'Please enter data '/
    
            SMG$M_BOLD = 1
            SMG$M_REVERSE = 2
            SMG$M_BLINK = 4
            SMG$M_UNDERLINE = 8
    C+
    C Establish the terminal keyboard as the virtual keyboard
    C by calling SMG$CREATE_VIRTUAL_KEYBOARD.
    C-
    
            STATUS = SMG$CREATE_VIRTUAL_KEYBOARD(KEYBOARD_ID,,,)
            IF (.NOT. STATUS) CALL LIB$STOP(%VAL(STATUS))
    C+
    C Establish the terminal screen as a pasteboard using
    C SMG$CREATE_PASTEBOARD.
    C-
    
            STATUS = SMG$CREATE_PASTEBOARD (NEW_PID,,,)
            IF (.NOT. STATUS) CALL LIB$STOP(%VAL(STATUS))
    C+
    C Establish a virtual display region by
    C calling SMG$CREATE_VIRTUAL_DISPLAY.
    C-
    
            STATUS = SMG$CREATE_VIRTUAL_DISPLAY (5,80,DISPLAY_ID,,,)
            IF (.NOT. STATUS) CALL LIB$STOP(%VAL(STATUS))
    C+
    C Paste the virtual display to the screen, starting at
    C row 10, column 15.  To paste the virtual display, use
    C SMG$PASTE_VIRTUAL_DISPLAY.
    C-
    
            STATUS = SMG$PASTE_VIRTUAL_DISPLAY(DISPLAY_ID,NEW_PID,10,15)
            IF (.NOT. STATUS) CALL LIB$STOP(%VAL(STATUS))
    C+
    C Prompt the user for input, and accept that input using
    C SMG$READ_STRING.
    C-
    
            STATUS = SMG$READ_STRING(KEYBOARD_ID,OUT_STR,PROMPT,,,,,,,)
            IF (.NOT. STATUS) CALL LIB$STOP(%VAL(STATUS))
    C+
    C Clear the screen using SMG$ERASE_PASTEBOARD.
    C-
    
            STATUS = SMG$ERASE_PASTEBOARD (NEW_PID)
            IF (.NOT. STATUS) CALL LIB$STOP(%VAL(STATUS))
    C+
    C Trim any trailing blanks from the user input
    C by calling STR$TRIM.
    C-
            STATUS = STR$TRIM(TRIM_STR,OUT_STR,STR_LEN)
            IF (.NOT. STATUS) CALL LIB$STOP(%VAL(STATUS))
    
    C+
    C Display the data input by the user using SMG$PUT_CHARS
    C and SMG$PUT_LINE.
    C-
    
            STATUS = SMG$PUT_CHARS(DISPLAY_ID,'You entered: ',,,,,,)
            IF (.NOT. STATUS) CALL LIB$STOP(%VAL(STATUS))
            STATUS = SMG$PUT_LINE(DISPLAY_ID,TRIM_STR(1:STR_LEN),,
            1                               SMG$M_REVERSE,0,,)
            IF (.NOT. STATUS) CALL LIB$STOP(%VAL(STATUS))
            END
    
    このFORTRANプログラムの例から生成される出力は,図 SMG-9に示すとおりです。

    図 SMG-9 SMG$CREATE_VIRTUAL_DISPLAYルーチンを呼 び出すFORTRANのプログラムが生成する出力


SMG$CREATE_VIRTUAL_KEYBOARD ―Create a Virtual Keyboard

Create a Virtual Keyboardルーチンは,仮想キーボードを作成してキーボード識 別子を返します。

形式

    SMG$CREATE_VIRTUAL_KEYBOARD

                    keyboard-id [,input-device] [,default-filespec]
                   [,resultant-filespec] [,recall-size]

戻り値

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

引数

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

新規に作成したキーボードの識別子。keyboard-id 引数は,キー ボード識別子を格納する符号なしロングワードのアドレスです。

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

仮想キーボードで使用される,ファイル指定,ファイル論理名, または漢字ターミナルの論理名。input-device 引数は,ファイル指定を示すディスク リプタのアドレスです。省略時の設定値はSYS$INPUTです。


注意

日本語SMGでは,ファイルからの入力はサポートされていません。


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

ファイル指定のシステム設定値。default-filespec 引数は, ファイル指定のシステム設定値を示すディスクリプタのアドレスです。default- filespec 引数を省略した場合は,空文字列を使用します。

input-device 引数でファイル名とファイル・タイプを指定し,default- filespec 引数で装置とディレクトリを指定することもできます。


注意

日本語SMGでは,ファイルからの入力はサポートされていません。


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

実際に使用されたファイル指定。resultant-filespec 引数は, 実際に使用されたファイル指定が,完全に展開された形式で書き込まれる文字列を示 すディスクリプタのアドレスです。


注意

日本語SMGでは,ファイルからの入力はサポートされていません。


recall-size
OpenVMS用法byte_unsigned
データ型byte (unsigned)
アクセスread only
受け渡し方by reference

再呼び出しのために保存される入力行数。recall-size 引数は 省略可能で,行数を格納した符号なしバイトのアドレスです。0に設定すると入力行を 再び呼び出すことができなくなります。recall-size 引数を省略した場合は,20行が 保存されます。

説明

SMG$CREATE_VIRTUAL_KEYBOARDルーチンは,ファイル指定(ターミナル 名またはRMSファイル)と仮想キーボードの関係を設定します。入力ストリームを識別 するため,キーボード識別子は他のSMG$プロシージャに渡されます。 SMG$CREATE_PASTEBOARDルーチンも同時に呼んでいる場合には,それが SMG$CREATE_VIRTUAL_KEYBOARDルーチンを呼び出す前に呼ばれていなければなりません。

プロシージャは漢字ターミナルにチャネルを割り当て,ターミナル・キーボードに アプリケーション・モード(サポート時のみ)を設定します。仮想キーボードが削除さ れる際に,これらの属性にはもとの値が復元されます。仮想キーボードはイメージの 終了時に自動的に削除されます。SMG$DELETE_VIRTUAL_KEYBOARDルーチンで削除するこ ともできます。

戻される状態値

SS$_NORMAL 正常終了。
LIB$_INSEF イベント・フラグ数が不足しています。
LIB$_INSTRDES 仮想ディスクリプタが誤っています。
LIB$_INSVIRMEM 仮想メモリが不足しています。
SMG$_FILTOOLON ファイル指定が長すぎます(255バイト以上)。
SMG$_WRONUMARG 引数の数が誤っています。
その他 $OPENまたは$CONNECTによりRMSから戻される状態値。 $GETDVIW,$ASSIGN,または$DCLEXHから戻される状態値。

  1. C+
    C This DEC FORTRAN example program demonstrates the use of
    C SMG$CREATE_VIRTUAL_KEYBOARD, SMG$CREATE_KEY_TABLE,
    C SMG$ADD_KEY_DEF, and SMG$READ_COMPOSED_LINE.
    C-
    
            INTEGER SMG$CREATE_VIRTUAL_KEYBOARD, SMG$CREATE_KEY_TABLE
            INTEGER SMG$ADD_KEY_DEF, SMG$READ_COMPOSED_LINE
            INTEGER SMG$DELETE_KEY_DEF, KEYBOARD, KEYTABLE, STATUS
    
    C+
    C Include the SMG definitions. In particular, we want SMG$M_KEY_NOECHO
    C and SMG$M_KEY_TERMINATE.
    C-
    
            INCLUDE '($SMGDEF)'
    
    C+
    C Create a virtual keyboard (using SMG$CREATE_VIRTUAL_KEYBOARD)
    C and create a key table (using SMG$CREATE_KEY_TABLE).
    C-
    
            STATUS = SMG$CREATE_VIRTUAL_KEYBOARD (KEYBOARD)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
            STATUS = SMG$CREATE_KEY_TABLE (KEYTABLE)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
    C+
    C Prompt the user with the following instructions.
    C-
    
            WRITE (6,*) 'When you see the prompt (->), strike the following'
            WRITE (6,*) 'keys (on the KEYPAD): '
            WRITE (6,*) '           PF1 '
            WRITE (6,*) '           5 '
            WRITE (6,*) '           PF3 '
            WRITE (6,*) ' '
            WRITE (6,*) 'When you have done this, the following sentence'
            WRITE (6,*) '(and nothing more) should appear following the'
            WRITE (6,*) 'prompt: '
            WRITE (6,*) '(PF3 should act as a carriage return.)'
            WRITE (6,*) ' '
            WRITE (6,*) 'NOW IS THE TIME FOR ALL TEXT TO APPEAR.'
    
    C+
    C Add key definitions by calling SMG$ADD_KEY_DEF.
    C-
    
            STATUS = SMG$ADD_KEY_DEF (KEYTABLE, 'PF1', , ,
         1  'NOW IS THE TIME FOR ')
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
            STATUS = SMG$ADD_KEY_DEF (KEYTABLE, 'KP5', , ,
         1  'TEXT TO APPEAR.')
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
            STATUS = SMG$ADD_KEY_DEF (KEYTABLE, 'PF3', ,
         1  SMG$M_KEY_NOECHO + SMG$M_KEY_TERMINATE ,
         1  'THIS SHOULD NOT BE ECHOED.  IF YOU CAN
         1  SEE THIS, AN ERROR EXISTS.')
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
    C+
    C Call SMG$READ_COMPOSED_LINE to read a line of input.
    C-
    
            WRITE(6,*) ' '
            STATUS = SMG$READ_COMPOSED_LINE (KEYBOARD, KEYTABLE, R_TEXT,
         1          '->')
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
            END
    
    出力例
         $ RUN example
    
         When you see the prompt (->), strike the following
         keys (on the KEYPAD):
                    PF1
                    5
                    PF3
    
         When you have done this, the following sentence
         (and nothing more) should appear following the
         prompt:
         (PF3 should act as a carriage return.)
    
         NOW IS THE TIME FOR ALL TEXT TO APPEAR.
    
         ->NOW IS THE TIME FOR ALL TEXT TO APPEAR.
    
         $
    


SMG$CURSOR_COLUMN ―Return Cursor Column Position

Return Cursor Column Positionルーチンは,指定された仮想ディスプレイ内の仮 想カーソルの,現在のカラム位置を戻します。

形式

    SMG$CURSOR_COLUMN   display-id

戻り値

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

SMG$CURSOR_COLUMNルーチンは現在の仮想カーソルのカラム位置を戻します。

引数

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

カラム位置が戻される対象となるディスプレイ。display-id 引数は,ディスプレイ識別子を格納した符号なしロングワードのアドレスです。

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

説明

SMG$CURSOR_COLUMNルーチンは,指定された仮想ディスプレイ内の,現 在の仮想カーソルのカラム位置の値を格納するロングワードを戻します。display-id 引数を省略した場合には,このルーチンはSMG$_ WRONUMARGを通知します。display-id 引数が誤っている場合には,このルーチンはSMG$_INVDIS_IDを通知します。

戻される状態値

SMG$_INVDIS_ID display-id 引数に誤りがあります。
SMG$_WRONUMARG 引数の数が誤っています。


SMG$CURSOR_ROW ―Return Cursor Row Position

Return Cursor Row Positionルーチンは,指定された仮想ディスプレイ内で仮想 カーソルの現在の行番号を戻します。

形式

    SMG$CURSOR_ROW   display-id

戻り値

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

SMG$CURSOR_ROWルーチンは現在の行番号を戻します。

引数

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

行番号が戻される対象となるディスプレイ。display-id 引数 は,ディスプレイ識別子を格納した符号なしロングワードのアドレスです。

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

説明

SMG$CURSOR_ROWルーチンは,指定された仮想ディスプレイの現在の仮 想カーソルの行番号の値を格納するロングワードを戻します。display- id 引数を省 略した場合には,このルーチンはSMG$_WRONUMARGを通知します。display-id 引数が誤 っている場合には,このルーチンはSMG$_ INVDIS_IDを通知します。

戻される状態値

SMG$_INVDIS_ID display-id 引数に誤りがあります。
SMG$_WRONUMARG 引数の数が誤っています。


SMG$DEFINE_KEY ―Perform a DEFINE/KEY Command

Perform a DEFINE/KEY Commandルーチンは,ユーザが指定したDEFINE/KEYコマン ドを実行します。

形式

    SMG$DEFINE_KEY   key-table-id ,command-string

戻り値

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

引数

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

DEFINE/KEYコマンドが実行されるキー定義テーブルの識別子。 key- table-id 引数は,キー・テーブル識別子を格納した符号なしロングワードのア ドレスです。

key-table-id 引数はSMG$CREATE_KEY_TABLEルーチンによって与えられます。

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

実行されるDEFINE/KEYコマンドを格納した文字列。 command-string 引数は,実行されるコマンドを示すディスクリプタのアドレスです。

DEFINE/KEYコマンドに対して指定できる修飾子は次のとおりです。

DEFINE/KEYコマンドの修飾子に対して,次の2つの制約事項が適用されます。

説明

SMG$DEFINE_KEYルーチンは,DEFINE/KEYコマンドを解析し,実行しま す。DEFINE/KEYコマンドを受け付けるだけで,そのコマンドを独自に解析しないプロ グラムは,このルーチンを使用できます。

SMG$DEFINE_KEYルーチンは,CLI$DCL_PARSEルーチンを呼び出すことにより,コマ ンド行を解析し,その後,必要に応じてSMG$ADD_KEY_DEFルーチンを呼び出します。も とのコマンドは,CLI$DCL_PARSEを呼び出すことにより復元できます。このプロシージ ャを使用する場合には,DCL Command Language Interpreterのもとでイメージを実行 していなければなりません。

戻される状態値

SS$_NORMAL 正常終了。
SMG$_WRONUMARG 引数の数が誤っています。
その 他 LIB$SCOPY_DXDX,CLI$ルーチン,SMG$ADD_KEY_DEF から戻された状態値。


SMG$DEL_TERM_TABLE ―Delete Terminal Table

Delete Terminal Tableルーチンは,個人用のTERMTABLE.EXEに対するアクセスを 終了し,仮想アドレス空間の割り当てを解除します。

形式

    SMG$DEL_TERM_TABLE

戻り値

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

引数

説明

SMG$DEL_TERM_TABLEルーチンは,個人用のTERMTABLE.EXEに対するアク セスを終了します。このルーチンの呼び出しは必ずしも必要ありません。このルーチ ンは,個人用の TERMTABLE.EXEによって使用されていた仮想アドレス空間を,呼び出 しプログラムが再利用しなければならないときに便利です。このルーチンを使用しな ければならないのは,漢字ターミナルに対して直接に日本語SMGルーチン以外の入出力 を実行する場合だけです。

戻される状態値

なし
SS$_NORMAL 正常終了。


SMG$DELETE_CHARS ―Delete Characters

Delete Charactersルーチンは仮想ディスプレイのカラムを削除します。

形式

    SMG$DELETE_CHARS   display-id ,number-of-columns ,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ルーチンによって与えられます。

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

削除カラム数。number-of-columns 引数は,削除するカラム数 を格納した符号付きロングワードのアドレスです。

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 引数は,削除操作を開始する カラムの位置を格納した符号付きロングワードのアドレスです。start-column 引数が 全角文字の右半分である場合は,その文字の左半分は未定義文字になります。

説明

SMG$DELETE_CHARSルーチンは,指定された行/カラム位置から,指定さ れたカラム数だけ削除します。この行の残りのカラムは左に移動し,削除された部分 を埋めます。単一行中のカラムだけを削除します。

削除できるカラム数より多くのカラム数を指定した場合,SMG$DELETE_ CHARSルー チンは指定されたカラムから行の最後までのカラムを削除します。

DEC漢字文字集合を使用している際に,全角文字の右半分から削除操作が始まる場 合は,その文字の左半分は未定義文字になります。また,全角文字の左半分で削除操 作が終了する場合は,その文字の右半分は未定義文字になります。

このルーチンを終了した後に,仮想カーソルは削除された最初のカラム位置に移動 します。

戻される状態値

SS$_NORMAL 正常終了。
SMG$_INVARG 引数が誤っています。指定されたカラム数が仮想ディスプ レイの幅をこえます。
SMG$_INVCOL カラム位置が誤 っています。指定されたカラムは仮想ディスプレイの内部に含まれません。
SMG$_INVDIS_ID display-id 引数が誤っています。
SMG$_INVROW 行の位置が誤っています。指定された行は仮 想ディスプレイの内部に含まれていません。
SMG$_WILUSERMS ペーストボードがビデオ・ターミナルでありません。
SMG$_WRONUMARG 引数の数が誤っています。

  1. C+
    C This DEC FORTRAN example program demonstrates the use of
    C SMG$DELETE_CHARS.
    C-
    
            INTEGER SMG$CREATE_VIRTUAL_DISPLAY, SMG$CREATE_PASTEBOARD
            INTEGER SMG$PASTE_VIRTUAL_DISPLAY,  SMG$PUT_CHARS
            INTEGER SMG$DELETE_CHARS, DISPLAY1, PASTE1
            INTEGER ROWS, COLUMNS, BORDER, STATUS
    C+
    C Create the virtual display be calling SMG$CREATE_VIRTUAL_DISPLAY.
    C To give it a border, set BORDER = 1. No border would be BORDER = 0.
    C-
    
            ROWS = 7
            COLUMNS = 50
            BORDER = 1
    
            STATUS = SMG$CREATE_VIRTUAL_DISPLAY
         1                                (ROWS, COLUMNS, DISPLAY1, 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_CHARS to put data in the virtual display.
    C-
            STATUS = SMG$PUT_CHARS ( DISPLAY1,
         1         ' This virtual display has 7 rows and 50 columns.', 2, 1)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
            STATUS = SMG$PUT_CHARS ( DISPLAY1,
         1         ' This is a bordered virtual display.', 4, 1)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
            STATUS = SMG$PUT_CHARS ( DISPLAY1,
         1         ' SMG$PUT_CHARS puts data in this virtual display.',6, 1)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
    C+
    C Paste the virtual display to the pasteboard using
    C SMG$PASTE_VIRTUAL_DISPLAY.
    C-
    
            STATUS = SMG$PASTE_VIRTUAL_DISPLAY ( DISPLAY1, PASTE1, 4, 15)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
    C+
    C Call SMG$DELETE_CHARS to delete 4 characters from row 4
    C starting from character (column) 14, removing the characters
    C "rder" from the word "bordered".
    C-
    
            STATUS = SMG$DELETE_CHARS ( DISPLAY1, 4, 4, 14)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
            END
    
    このFORTRANプログラムによって,SMG$DELETE_CHARSルーチンを呼び出す前に生成され る出力は図 SMG-10に示すとおりです。

    図 SMG-10 SMG$DELETE_CHARSルーチンを呼び出す前に生成 される出力

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

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


SMG$DELETE_KEY_DEF ―Delete Key Definition

Delete Key Definitionルーチンは,指定されたキー定義テーブルからキー定義を 削除します。

形式

    SMG$DELETE_KEY_DEF   key-table-id ,key-name [,if-state]

戻り値

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

引数

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

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

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

定義を削除するキーの名前を格納した文字列。key-name 引数 は,キー名を示すディスクリプタのアドレスです。実際に使用される前に,key-name 引数から後続の空白は削除され,大文字に変換されます。

使用できるキー名については,本書の 第3章表 3-1を参照してください。

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

key-name 引数をさらに条件指定する状態名を格納した文字列。 if- state 引数は,状態名を示すディスクリプタのアドレスです。この引数を省略し た場合には,無状態が使用されます。したがって,キーに複数の定義を割り当てて, if-state 引数の値に応じて適切な定義を使用する場合には,このルーチンがそれらの 定義の中から1つの定義だけを削除します。

説明

SMG$DELETE_KEY_DEFルーチンは,指定されたキー定義テーブルからキー 定義を削除します。

戻される状態値

SS$_NORMAL 正常終了。
SMG$_INVKEYNAM key-name 引数に誤りがあります。
SMG$_INVKTB_ ID key-table-id 引数に誤りがあります。
SMG$_KEYDEFPRO キー定義が保護されています。
SMG$_KEYNOTDEF キーが定義されていません。
SMG$_ WRONUMARG 引数の数が誤っています。


SMG$DELETE_LINE ―Delete Line

Delete Lineルーチンは仮想ディスプレイの行を削除します。

形式

    SMG$DELETE_LINE   display-id ,start-row [,number-of-rows]

戻り値

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 引数は,削除する最初の行の番号を格 納した符号付きロングワードのアドレスです。

pan=2>number-of-rows
OpenVMS用法longword_signed
データ型longword (signed)
アクセスread only
受け渡し方by reference

削除行数。number-of-rows 引数は,削除する行数を格納した 符号付きロングワードのアドレスです。

説明

SMG$DELETE_LINEルーチンは,1行以上を仮想ディスプレイから削除し, 残りの行を上にスクロールさせ削除された部分を埋めます。仮想ディスプレイの下部 には空行が挿入されます。仮想カーソルは,start-row 引数で指定された行の最初の カラムに移動します。

戻される状態値

SS$_NORMAL 正常終了。
SMG$_INVARG 引数が誤っています。
SMG$_INVDIS_ID display-id 引数が誤っています。
SMG$_INVROW 行の位置が誤っています。
SMG$_WILUSERMS ペーストボードがビデオ・ターミナルでありません。
SMG$_ WRONUMARG 引数の数が誤っています。

  1. C+
    C This DEC FORTRAN example program demonstrates the use of SMG$DELETE_LINE.
    C-
    
            IMPLICIT INTEGER (A-Z)
    C+
    C Create the virtual display by calling SMG$CREATE_VIRTUAL_DISPLAY.
    C To give it a border, set BORDER = 1.  No border would be BORDER = 0.
    C-
    
            ROWS = 7
            COLUMNS = 50
            BORDER = 1
    
            STATUS = SMG$CREATE_VIRTUAL_DISPLAY
         1        (ROWS, COLUMNS, DISPLAY1, 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_CHARS to put data in the virtual display.
    C-
    
            STATUS = SMG$PUT_CHARS ( DISPLAY1,
         1        ' This virtual display has 7 rows and 50 columns.', 2, 1)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
            STATUS = SMG$PUT_CHARS ( DISPLAY1,
         1        ' This is a bordered virtual display.', 4, 1)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
            STATUS = SMG$PUT_CHARS ( DISPLAY1,
         1        ' SMG$PUT_CHARS puts data in this virtual display.', 6, 1)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
    C+
    C Paste the virtual display to the pasteboard using
    C SMG$PASTE_VIRTUAL_DISPLAY.
    C-
    
            STATUS = SMG$PASTE_VIRTUAL_DISPLAY ( DISPLAY1, PASTE1, 4, 15)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
    C+
    C Call SMG$DELETE_LINE to delete rows 3, 4, and 5.
    C-
    
            STATUS = SMG$DELETE_LINE ( DISPLAY1, 3, 3)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
            END
    
    このFORTRANプログラムによって,SMG$DELETE_LINEルーチンを呼び出す前に生成され る出力は,図 SMG-12に示すとおりです。

    図 SMG-12 SMG$DELETE_LINEルーチンを呼び出す前にFORTRAN プログラムが生成する出力

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

    図 SMG-13 SMG$DELETE_LINEルーチンを呼び出した後に生成 される出力


SMG$DELETE_MENU ―End Access to a Menu in the Virtual Display

End Access to a Menu in the Virtual Displayルーチンは,指定された仮想ディ スプレイのメニュー選択へのアクセスを終了します。

形式

    SMG$DELETE_MENU   display-id [,flags]

戻り値

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

引数

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

メニュー選択を画面表示する仮想ディスプレイを指定します。 display- id 引数は,ディスプレイ識別子を格納した符号なしロングワードのアドレ スです。

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

省略可能なビットマスクであり,メニューを削除するときに可 能なアクションを指定します。flags 引数は,フラグを格納した符号なしロングワー ドのアドレスです。この引数に対して指定できる値は,SMG$M_ERASE_MENUのみです。 この値が指定された場合は,メニュー項目が含まれている行すべてが削除されます。

説明

SMG$DELETE_MENUルーチンは,指定された仮想ディスプレイでのメニュー 選択を中断します。flags 引数は省略可能で,メニューが削除された場合に,ディス プレイからメニュー項目を削除することを指定できます。

戻される状態値

SS$_NORMAL 正常終了。
LIB$_xxxx LIB$FREE_VMから戻された状態値。
SMG$_xxxx SMG$ERASE_DISPLAYルーチンから戻された状態値。


SMG$DELETE_PASTEBOARD ―Delete Pasteboard

Delete Pasteboardルーチンはペーストボードを削除します。

形式

    SMG$DELETE_PASTEBOARD   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
VMS用法:mask_longword
データ型:longword (unsigned)
アクセス:read only
受け渡し方:by reference

ペーストボード削除後にターミナル画面消去を行うかどうかを 指定するフラグ。flags 引数は省略可能で,フラグを格納した符号なしロングワード のアドレスです。指定できるのは,以下の値です。

0 画面を消去しない。
SMG$M_ERASE_PBD 画面を消去する(省略時の設定値)。

説明

SMG$DELETE_PASTEBOARDルーチンは仮想ディスプレイに全出力を書き出 し,ペーストボードの使用をすべて終了させて,ペーストボードに割り当てられてい た資源を解放します。

戻される状態値

SS$_NORMAL 正常終了。
SMG$_INVPAS_ID pasteboard-id 引数が誤っています。
SMG$_NOTPASTED 指定された仮想ディスプレイは指定されたペース トボードにペーストされていません。
SMG$_ WILUSERMS ペーストボードがビデオ・ターミナルではありません。
SMG$_WRONUMARG 引数の数が誤っています。
その 他 $DASSGN,LIB$FREE_VM,LIB$FREE_EFまたはSMG$FLUSH_BUFFERから戻され る状態値。


SMG$DELETE_SUBPROCESS ―Terminate a Subprocess

Terminate a Subprocessルーチンは,SMG$CREATE_SUBPROCESSルーチンを使用して 生成したサブプロセスを削除します。

形式

    SMG$DELETE_SUBPROCESS   display-id

戻り値

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

説明

SMG$DELETE_SUBPROCESSルーチンは,SMG$CREATE_SUBPROCESSルーチン を呼び出すことにより生成されたサブプロセスを削除します。 日本語SMGは独自の終了ハンドラを備えているので, ユーザ独自の終了ハンドラの内部から SMG$DELETE_SUBPROCESSルーチンを起動しないでください。詳しい説明は, 第4章第4.4節を参照してください。

戻される状態値

SS$_NORMAL 正常終了。
SMG$_INVDIS_ID display-id 引数に誤りがあります。
SMG$_NOSUBEXI 削除するプロセスが存在しません。
SS$_xxxx $DELPRCから戻された状態値。
LIB$_xxxx LIB$FREE_VMから戻された状態値。


SMG$DELETE_VIEWPORT ―Delete a Viewport

Delete a Viewportルーチンは,ペーストされているペーストボードから指定され たビューポートを削除します。

形式

    SMG$DELETE_VIEWPORT   display-id

戻り値

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

引数

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

削除するビューポートに対応づけられている仮想ディスプレイ の識別子。display-id 引数は,ディスプレイ識別子を格納した符号なしロングワード のアドレスです。

説明

SMG$DELETE_VIEWPORTルーチンはビューポートを削除します。ビューポート は,それがペーストされているペーストボードから自動的に"アンペースト"されます。 しかし,削除されるビューポートに対応づけられている仮想ディスプレイは削除され ません。この仮想ディスプレイを表示するには,SMG$PASTE_VIRTUAL_DISPLAYルーチン を使用して仮想ディスプレイをペーストボードにペーストしなければなりません。こ の仮想ディスプレイを削除するには,SMG$DELETE_VIRTUAL_DISPLAYルーチンを使用し ます。

戻される状態値

SS$_NORMAL 正常終了。
SMG$_INVDIS_ID display-id 引数に誤りがあります。
SMG$_NO_WINASSOC 仮想ディスプレイに対応づけられているビューポー トはありません。
SMG$_WRONUMARG 引数の数が誤って います。


SMG$DELETE_VIRTUAL_DISPLAY ―Delete Virtual Display

Delete Virtual Displayルーチンは仮想ディスプレイを削除します。

形式

    SMG$DELETE_VIRTUAL_DISPLAY   display-id

戻り値

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

説明

SMG$DELETE_VIRTUAL_DISPLAYルーチンは仮想ディスプレイを削除し, その仮想ディスプレイがペーストされているペーストボードから,仮想ディスプレイ を削除します。また,仮想ディスプレイに割り当てられているバッファ空間の割り当 てを解除します。

戻される状態値

SS$_NORMAL 正常終了。
SMG$_INVDIS_ID display-id 引数に誤りがあります。
SMG$_NOTPASTED 指定された仮想ディスプレイが指定されたペーストボー ドにペーストされていません。
SMG$_ WILUSERMS ペー ストボードがビデオ・ターミナルではありません。
SMG$_WRONUMARG 引数の数が誤っています。
その 他 LIB$FREE_VMから戻される状態値。


SMG$DELETE_VIRTUAL_KEYBOARD ―Delete Virtual Keyboard

Delete Virtual Keyboardルーチンは仮想キーボードを削除します。

形式

    SMG$DELETE_VIRTUAL_KEYBOARD   keyboard-id

戻り値

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

説明

SMG$DELETE_VIRTUAL_KEYBOARDルーチンは,仮想キーボードを削除しま す。仮想キーボード作成時に設定されたターミナル属性を以前の値に設定し,キーパ ッド・モード(数値またはアプリケーション・キーパッド・モード)は最初の状態に設 定されます。さらに,チャネルの割り当ても解除されます。

日本語SMGルーチンは独自の終了ハンドラを備えているため,ユーザ独自の終了ハ ンドラからこのルーチンを呼ばないでください。

戻される状態値

SS$_NORMAL 正常終了。
SMG$_INVKBD_ID keyboard-id 引数が誤っています。
SMG$_WRONUMARG 引数の数が誤っています。


SMG$DISABLE_BROADCAST_TRAPPING ― Disable Broadcast Trapping

Disable Broadcast Trappingルーチンは,指定された漢字ターミナルに対して, ブロードキャスト・メッセージのトラッピングを禁止します。

形式

    SMG$DISABLE_BROADCAST_TRAPPING   pasteboard-id

戻り値

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

引数

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

操作の対象となる漢字ターミナルのペーストボードを指定しま す。pasteboard-id 引数は,ペーストボード識別子を格納した符号なし ロングワードのアドレスです。

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

説明

SMG$DISABLE_BROADCAST_TRAPPINGルーチンは,指定された漢字ターミ ナルに対して,ブロードキャスト・メッセージのトラッピングを禁止します。 SMG$DISABLE_BROADCAST_TRAPPINGルーチンは,SMG$SET_BROADCAST_ TRAPPINGルーチン を使用して設定されたメールボックスの割り当てを解除し,ターミナル属性を再設定 します。したがって,ユーザはLIB$SPAWNルーチンを呼び出すことができるようになり ます。

SMG$SET_BROADCAST_TRAPPINGルーチンを使用して設定したブロードキャスト・ト ラッピングを禁止する場合には,このルーチンを使用しなければなりません。

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

ブロードキャスト・トラッピングと,要求されていない入力のトラッピングをどち らも許可した場合には,メールボックスの割り当てを解除するために, SMG$DISABLE_BROADCAST_TRAPPINGルーチンとSMG$DISABLE_ UNSOLICITED_INPUTルーチ ンの両方を起動しなければなりません。

戻される状態値

SS$_NORMAL 正常終了。
SMG$_WRONUMARG 引数の数が誤っています。
その 他 $QIOWから戻される状態値。


SMG$DISABLE_UNSOLICITED_INPUT ―Disable Unsolicited Input

Disable Unsolicited Inputルーチンは,要求されていない入力のトラッピングを 禁止します。

形式

    SMG$DISABLE_UNSOLICITED_INPUT   pasteboard-id

戻り値

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

引数

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

要求されていない入力が禁止されるキーボード(指定されたペー ストボードに対応づけられたキーボード)を指定します。pasteboard-id 引数は,ペー ストボード識別子を格納した符号なしロングワードのアドレスです。

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

説明

SMG$DISABLE_UNSOLICITED_INPUTルーチンは,指定されたペーストボー ドに対して,要求されていない入力のASTを禁止します。 SMG$DISABLE_UNSOLICITED_INPUTルーチンは,SMG$ENABLE_UNSOLICITED_ INPUTルーチ ンによって設定されたメールボックスの割り当てを解除し,ターミナル属性を再設定 します。したがって,ユーザはLIB$SPAWNルーチンを呼び出すことができるようになり ます。SMG$ENABLE_UNSOLICITED_ INPUTルーチンを使用して許可した,要求されていな い入力のトラッピングを禁止する場合には,このルーチンを使用しなければなりませ ん。

要求されていない入力のトラッピングとブロードキャスト・メッセージのトラッピ ングの両方を許可した場合には,メールボックスの割り当てを解除するために, SMG$DISABLE_UNSOLICITED_INPUTルーチンとSMG$DISABLE_ BROADCAST_TRAPPINGルーチ ンの両方を起動しなければなりません。

戻される状態値

SS$_NORMAL 正常終了。
SMG$_INVPAS_ID pasteboard- id 引数に誤りがあります。
SMG$_ WRONUMARG 引数の数が誤っています。
その他 $QIOWから戻される状態値。


SMG$DRAW_CHAR ―Draw a Character in a Virtual Display

Draw a Character in a Virtual Displayルーチンは,仮想ディスプレイ内の指定 された位置に文字を描きます。

形式

    SMG$DRAW_CHAR   display-id ,flags [,row] [,column]
                   [,rendition-set] [,rendition-complement]

戻り値

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

引数

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

仮想ディスプレイの識別子。display-id 引数は,この識別子 を格納した符号なしロングワードのアドレスです。

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

描く文字を示すビット・マスク(省略可能)。Flags 引数は,フ ラグを格納した符号なしロングワードのアドレスです。Flags 引数には以下の値を指 定できます。

  • SMG$M_UP

  • SMG$M_DOWN

  • SMG$M_LEFT

  • SMG$M_RIGHT

論理和演算を実行することにより,T文字,角を形成する文字,交差を形成する文 字などを描くことができます。値が0の場合には,菱形文字(◇)が描かれます。

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

指定された文字を描く位置を指定する行番号(省略可能)。row 引数は,行番号を格納した符号付きロングワードのアドレスです。row 引数を省略し た場合には,文字は現在の仮想カーソルの行位置に描かれます。

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

指定された文字を描く位置を指定するカラム番号(省略可能)。 column 引数は,カラム番号を格納した符号付きロングワードのアドレスです。column 引数を省略した場合には,文字は現在の仮想カーソルのカラム位置に描かれます。 column 引数が全角文字の右半分の位置になる場合,その文字の左半分は未定義文字に なります。また,column 引数が全角文字の左半分の位置になる場合,その文字の右半 分は未定義文字になります。

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

属性指定子。rendition-set 引数は省略可能であり,ロングワー ド・ビット・マスクのアドレスです。このロングワード・ビック・マスクの各属性を 設定すると,仮想ディスプレイ内の対応する属性が設定されます。rendition-set 引 数を使用して以下の属性を指定できます。

SMG$M_BLINK 点滅する文字を表示します。
SMG$M_BOLD 通常の輝度より高い輝度で文字を表示します。
SMG$M_INVISIBLE 表示されない文字を指定します。つまり,仮想 ディスプレイに存在していても,ペーストボードに表示されない文字を指定します。
SMG$M_ REVERSE 文字を反転表示します。つまり,仮 想ディスプレイの現在の省略時の属性とは逆の状態で表示します。
SMG$M_UNDERLINE 下線を付けた文字を表示します。
SMG$M_USER1からSMG$M_ USER8 ユーザ定義属性を表示します。

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

属性補足指定子。rendition-complement 引数は省略可能であ り,ロングワード・ビット・マスクのアドレスです。このロングワード・ビット・マ スクの各属性を設定すると,ディスプレイ内の対応する属性は補足されます。 rendition-set 引数に指定できる属性はすべて,rendition-complement引数によって 補足できます。

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 属性をオフに設定する。

説明

SMG$DRAW_CHARルーチンは,指定された仮想ディスプレイの指定された 位置に指定された文字を描きます。このルーチンは仮想カーソルの位置を変更しませ ん。描かれる文字は漢字ターミナルのタイプに応じて異なります。たとえば,SMG$は, 可能な場合にはターミナルのライン描画文字集合を使用します。その文字集合を使用 できない場合には,SMG$はラインを描くために+,-,および|を使用します。column 引数が全角文字の右半分の位置になる場合,その文字の左半分は未定義文字になりま す。また,column 引数が全角文字の左半分の位置になる場合,その文字の右半分は未 定義文字になります。

戻される状態値

SS$_NORMAL 正常終了。
SMG$_INVCOL カラム番号に誤りがあります。
SMG$_INVROW 行 番号に誤りがあります。
SMG$_ WRONUMARG 引数の数 が誤っています。

  1. C+
    C This DEC FORTRAN example demonstrates the use of
    C SMG$DRAW_CHAR to use the terminal line drawing
    C characters.
    C-
     IMPLICIT INTEGER (A-Z)
     INCLUDE '($SMGDEF)'
    
     s = SMG$CREATE_PASTEBOARD(p_id)
     IF (.NOT. s) CALL LIB$SIGNAL(%VAL(s))
     s = SMG$CREATE_VIRTUAL_DISPLAY(17,7,d_id,SMG$M_BORDER)
     IF (.NOT. s) CALL LIB$SIGNAL(%VAL(s))
     s = SMG$PASTE_VIRTUAL_DISPLAY(d_id,p_id,4,30)
     IF (.NOT. s) CALL LIB$SIGNAL(%VAL(s))
     s = SMG$SET_CURSOR_REL(d_id,1,3)
     IF (.NOT. s) CALL LIB$SIGNAL(%VAL(s))
    
     s = SMG$DRAW_CHAR(d_id,SMG$M_UP,1,4,SMG$M_BOLD)
     IF (.NOT. s) CALL LIB$SIGNAL(%VAL(s))
     s = SMG$DRAW_CHAR(d_id,SMG$M_DOWN,2,4,0,SMG$M_REVERSE)
     IF (.NOT. s) CALL LIB$SIGNAL(%VAL(s))
     s = SMG$DRAW_CHAR(d_id,SMG$M_LEFT,3,4,SMG$M_BLINK)
     IF (.NOT. s) CALL LIB$SIGNAL(%VAL(s))
     s = SMG$DRAW_CHAR(d_id,SMG$M_RIGHT,4,4,0,0)
     IF (.NOT. s) CALL LIB$SIGNAL(%VAL(s))
     s = SMG$DRAW_CHAR(d_id,SMG$M_UP + SMG$M_DOWN,5)
     IF (.NOT. s) CALL LIB$SIGNAL(%VAL(s))
     s = SMG$DRAW_CHAR(d_id,SMG$M_UP + SMG$M_LEFT,6)
     IF (.NOT. s) CALL LIB$SIGNAL(%VAL(s))
     s = SMG$DRAW_CHAR(d_id,SMG$M_UP + SMG$M_RIGHT,7)
     IF (.NOT. s) CALL LIB$SIGNAL(%VAL(s))
     s = SMG$DRAW_CHAR(d_id,SMG$M_DOWN + SMG$M_LEFT,8)
     IF (.NOT. s) CALL LIB$SIGNAL(%VAL(s))
     s = SMG$DRAW_CHAR(d_id,SMG$M_DOWN + SMG$M_RIGHT,9)
     IF (.NOT. s) CALL LIB$SIGNAL(%VAL(s))
     s = SMG$DRAW_CHAR(d_id,SMG$M_LEFT + SMG$M_RIGHT,10)
     IF (.NOT. s) CALL LIB$SIGNAL(%VAL(s))
     s = SMG$DRAW_CHAR(d_id,SMG$M_UP + SMG$M_DOWN + SMG$M_LEFT,11)
     IF (.NOT. s) CALL LIB$SIGNAL(%VAL(s))
     s = SMG$DRAW_CHAR(d_id,SMG$M_UP + SMG$M_DOWN + SMG$M_RIGHT,12)
     IF (.NOT. s) CALL LIB$SIGNAL(%VAL(s))
     s = SMG$DRAW_CHAR(d_id,SMG$M_DOWN + SMG$M_LEFT + SMG$M_RIGHT,13)
     IF (.NOT. s) CALL LIB$SIGNAL(%VAL(s))
     s = SMG$DRAW_CHAR(d_id,SMG$M_UP + SMG$M_LEFT + SMG$M_RIGHT,14)
     IF (.NOT. s) CALL LIB$SIGNAL(%VAL(s))
     s = SMG$DRAW_CHAR(d_id,SMG$M_UP + SMG$M_DOWN + SMG$M_RIGHT +
         1          SMG$M_LEFT, 15)
     IF (.NOT. s) CALL LIB$SIGNAL(%VAL(s))
     s = SMG$DRAW_CHAR(d_id,0,16)
     IF (.NOT. s) CALL LIB$SIGNAL(%VAL(s))
    
     END
    
    この例では,1つのカラム位置にライン描画文字を生成しています。


SMG$DRAW_LINE ―Draw a Line

Draw a Lineルーチンは,水平線または垂直線を描きます。

形式

    SMG$DRAW_LINE   display-id ,start-row ,start-column
                   ,end-row ,end-column [,rendition-set]
                   [,rendition-complement]

戻り値

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 引 数は,ライン描画を開始するカラム番号を格納した符号付きロングワードのアドレス です。

水平線の描画時に,start-column 引数が全角文字の右半分から始まった場合,左 半分は,未定義文字になります。垂直線描画時に,start-column引数が全角文字の右 半分あるいは左半分のバイト上にあった場合には,残りの部分は未定義文字になりま す。

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

ライン描画を終了する行を指定します。end-row 引数は,ライ ン描画を終了する行番号を格納した符号付きロングワードのアドレスです。

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

ライン描画を終了するカラムを指定します。end-column 引数 は,ライン描画を終了するカラム番号を格納した符号付きロングワードのアドレスで す。

水平線の描画時に,end-column 引数が全角文字の左半分で終わった場合,右半分 は,未定義文字になります。垂直線描画時に,end-column 引数が全角文字の右半分あ るいは左半分にあった場合には,残りの部分は未定義文字になります。

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-complement
OpenVMS用法mask_longword
データ型longword (unsigned)
アクセスread only
受け渡し方by reference

属性補足指定子。rendition-complement 引数は省略可能であ り,ロングワード・ビット・マスクのアドレスです。このロングワード・ビット・マ スクの各属性を設定すると,仮想ディスプレイ内の対応する属性が補足されます。 rendition-set 引数に指定できる属性はすべて,rendition-complement引数を使用し て補足できます。

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 属性をオフに設定する。

説明

SMG$DRAW_LINEルーチンは,指定された開始行/カラムから指定された 終了行/カラムまでラインを描きます。このルーチンは仮想カーソルの位置を変更しま せん。このルーチンでは,水平線または垂直線だけを描くことができます。ラインを 描くために使用される文字はターミナルのタイプに応じて異なります。可能な場合に は,日本語SMGルーチンは漢字ターミナルのライン描画文字集合を使用します。その文 字集合を使用できない場合には,日本語SMGルーチンはラインを描くために+,-,およ び|を使用します。

DEC漢字文字集合が使用されていた場合,描画される線が全角文字の左半分あるい は右半分にあった場合には残りの部分は未定義文字になります。

戻される状態値

SS$_NORMAL 正常終了。
SMG$_DIALINNOT 斜めのラインを描くことはできません。
SMG$_INVCOL カラム番号が誤っています。指定されたカラムは仮 想ディスプレイの外部です。
SMG$_INVDIS_ID display-id 引数に誤りがあります。
SMG$_INVROW 行番号が誤っています。指定された行は仮想ディスプレイの外部です。
SMG$_ WRONUMARG 引数の数が誤っています。

  1. C+
    C This DEC FORTRAN example program demonstrates the use of SMG$DRAW_LINE.
    C-
    
            INTEGER SMG$CREATE_VIRTUAL_DISPLAY, SMG$CREATE_PASTEBOARD
            INTEGER SMG$PASTE_VIRTUAL_DISPLAY, SMG$DRAW_LINE
            INTEGER DISPLAY1, PASTE1, ROWS, COLUMNS, BORDER, STATUS
    C+
    C First, create the virtual display using SMG$CREATE_VIRTUAL_DISPLAY.
    C To give it a border, set BORDER = 1. No border would be BORDER = 0.
    C-
    
            ROWS = 7
            COLUMNS = 50
            BORDER = 1
    
            STATUS = SMG$CREATE_VIRTUAL_DISPLAY
         1                                (ROWS, COLUMNS, DISPLAY1, 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 Draw a vertical line using SMG$DRAW_LINE.
    C Start at row 2, column 20. End at row 6.
    C-
    
            STATUS = SMG$DRAW_LINE (DISPLAY1, 2, 20, 6, 20)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
    C+
    C Now, use SMG$DRAW_LINE to draw a vertical line.
    C Start at row 6, column 40. End at row 2.
    C This is similar to the line drawn above, but we are drawing the
    C line in the reverse direction.
    C-
    
            STATUS = SMG$DRAW_LINE (DISPLAY1, 6, 40, 2, 40)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    C+
    C Draw a horizontal line now, again calling SMG$DRAW_LINE.
    C Start at row 4, column 8. End at column 50.
    C-
    
            STATUS = SMG$DRAW_LINE (DISPLAY1, 4, 8, 4, 50)
            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, 15)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
            END
    
    このFORTRANプログラムの例で生成される出力は図 SMG-14 に示すとおりです。

    図 SMG-14 SMG$DRAW_LINEルーチンを呼び出すFORTRANプログラ ムによって生成される出力


SMG$DRAW_RECTANGLE ―Draw a Rectangle

Draw a Rectangleルーチンは長方形を描きます。

形式

    SMG$DRAW_RECTANGLE   display-id ,start-row ,start-column
                        ,end-row ,end-column [,rendition-set]
                        [,rendition-complement]

戻り値

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 引数は,長方形の左上の角のカラム番号を格納した符号付きロングワードのアドレス です。start-colulmn 引数が全角文字上にあった場合,その残りの部分は,未定義文 字になります。

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

長方形の右下の角の行番号を指定します。end-row 引数は,長 方形の右下の角の行番号を格納した符号付きロングワードのアドレスです。

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

長方形の右下の角のカラム番号を指定します。end-column 引 数は,長方形の右下の角のカラム番号を格納した符号付きロングワードのアドレスで す。end-colulmn 引数が全角文字上にあった場合,その残りの部分は,未定義文字に なります。

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-complement
OpenVMS用法mask_longword
データ型longword (unsigned)
アクセスread only
受け渡し方by reference

属性補足指定子。rendition-complement 引数は省略可能であ り,ロングワード・ビット・マスクのアドレスです。このロングワード・ビット・マ スクの各属性を設定すると,仮想ディスプレイ内の対応する属性が補足されます。 rendition-set 引数に指定できる属性はすべて,rendition-complement引数を使用し て補足できます。

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 属性をオフに設定する。

説明

SMG$DRAW_RECTANGLEルーチンは,指定された左上の角と右下の角の位 置をもとに,仮想ディスプレイ内に長方形を描きます。このルーチンは仮想カーソル の位置を変更しません。長方形を構成するラインを描くために使用される文字は漢字 ターミナルのタイプに応じて異なります。可能な場合には,日本語SMGルーチンは漢字 ターミナルのライン描画文字集合を使用します。その文字集合を使用できない場合に は,日本語SMGルーチンはラインを描くために,+,-,および|を使用します。

DEC漢字文字集合を使用した場合に,長方形が全角文字上に描かれた場合には,全 角文字の残された部分は未定義文字になります。

戻される状態値

SS$_NORMAL 正常終了。
SMG$_INVCOL カラム番号が誤っています。指定されたカラムは仮想ディスプレイの外部です。
SMG$_INVDIS_ID display-id 引数に誤りがあります。
SMG$_INVROW 行番号が誤っています。指定された行 は仮想ディスプレイの外部です。
SMG$_WRONUMARG 引 数の数が誤っています。

  1. C+
    C This DEC FORTRAN example program demonstrates the use of
    C SMG$DRAW_RECTANGLE.
    C
    C This routine creates a virtual display and uses SMG$DRAW_RECTANGLE
    C to draw a rectangle inside the bordered virtual display.
    C-
    
    C+
    C Include the SMG definitions. In particular, we want SMG$M_BORDER.
    C-
    
            INCLUDE '($SMGDEF)'
            INTEGER SMG$CREATE_VIRTUAL_DISPLAY, SMG$CREATE_PASTEBOARD
            INTEGER SMG$PASTE_VIRTUAL_DISPLAY, SMG$DRAW_RECTANGLE
            INTEGER DISPLAY1, PASTE1, ROWS, COLUMNS, STATUS
    
    C+
    C Create a virtual display with a border by calling
    C 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 Using SMG$DRAW_RECTANGLE, draw a rectangle inside the bordered region.
    C-
    
            STATUS = SMG$DRAW_RECTANGLE (DISPLAY1, 2, 10, 6, 20)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
    C+
    C Paste the virtual display by calling SMG$PASTE_VIRTUAL_DISPLAY.
    C-
    
            STATUS = SMG$PASTE_VIRTUAL_DISPLAY ( DISPLAY1, PASTE1, 4, 15)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
            END
    
    このFORTRANプログラムの例で生成される出力は 図 SMG-15 に示すとおりです。

    図 SMG-15 SMG$DRAW_RECTANGLEルーチンを呼び出す FORTRANプログラムによって生成される出力


SMG$ENABLE_UNSOLICITED_INPUT ―Enable Unsolicited Input

Enable Unsolicited Inputルーチンは,要求されていない入力を検出し,ASTルー チンを呼び出します。

形式

    SMG$ENABLE_UNSOLICITED_INPUT   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 引数には,ルーチンのプロシージャ・ エントリ・マスクが格納されます。SMG$ENABLE_UNSOLICITED_ INPUTルーチンは,要求 されていない入力の存在を検出し,6つの引数を使用してASTルーチンを呼び出します。 6つの引数とは,pasteboard-id 引数,AST-argument 引数,R0,R1,PC,およびPSLで す。ASTルーチン引数は図 SMG-16に示すとおりです。

図 SMG-16 ASTルーチン引数

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

ASTルーチンに渡される値。AST-argument 引数には,ASTルー チンに渡される値が格納されています。

説明

SMG$ENABLE_UNSOLICITED_INPUTルーチンは要求されていない入力の存 在を検出し,AST ルーチンを呼び出します。

このルーチンは入力文字を読み込むわけではなく,単にASTルーチンを呼び出すこ とにより,SMG$READ_COMPOSED_LINE,SMG$READ_KEYSTROKE,SMG$READ_STRING, SMG$READ_VERIFYルーチンを使用して読み込み操作を実行しなければならないことを, アプリケーションに"通知"するだけです。要求されていない入力を読み込むのは,ユー ザの役割です。

SMG$ENABLE_UNSOLICITED_INPUTルーチンは,ユーザ・イメージにとって注意を必 要とするターミナル関連イベントが発生したときに,メッセージを受信するメールボ ックスを設定します。このメールボックスは,ターミナル・データではなく,状態メ ッセージをドライバからユーザ・プログラムに渡します。この状態メッセージは,先 読みバッファに要求されていないデータが存在するときにメールボックスに送信され ます。この場合,ユーザ・プロセスは,要求されていないデータ・メッセージを受信 した後,漢字ターミナルとの対話を開始します。この対話が終了した後,日本語SMGは 最後の入出力交換時に,要求されないデータ・メッセージ機能を再度許可します。読 み込み操作と次の読み込み操作の間には,1つのメッセージだけが送信されます。 SYSGENパラメータであるDEFMBXBUFQUOとDEFMBXMXMSGが,メールボックス作成時に使用 されます。

漢字ターミナルとメールボックスの相互作用についての詳しい説明は,『OpenVMS I/O User's Reference Manual』を参照してください。

戻される状態値

SS$_NORMAL 正常終了。
SMG$_INVPAS_ID pasteboard- id 引数に誤りがあります。
SMG$_ WRONUMARG 引数の数が誤っています。
その他 $QIOWから戻される状態値。


SMG$END_DISPLAY_UPDATE ―End Display Update

End Display Updateルーチンは,仮想ディスプレイに対するバッチ更新処理を終 了します。

形式

    SMG$END_DISPLAY_UPDATE   display-id

Returns

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

引数

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

影響を受ける仮想ディスプレイを指定します。display-id 引 数は,ディスプレイ識別子を格納した符号なしロングワードのアドレスです。

display-id 引数はSMG$CREATE_VIRTUAL_DISPLAYルーチンから戻されます。

説明

SMG$END_DISPLAY_UPDATEはSMG$BEGIN_DISPLAY_UPDATEと組み合わせて 使用し,特定の仮想ディスプレイに対する出力のバッチ処理を制御します。 SMG$BEGIN_DISPLAY_UPDATE を呼び出すたびに,"バッチ・カウント"が増分され,それ に対し,SMG$END_DISPLAY_UPDATEを呼び出すと,そのたびにこのカウントは減分され ます。バッチ・カウントが0になると,仮想ディスプレイはバッチ処理中に実行された すべての操作によって更新され,仮想ディスプレイがペーストされている場合には, ペーストボードに書き込まれます。

バッチ・カウントが0のときにSMG$END_DISPLAY_UPDATEを呼び出す操作は正しい操 作です。したがって,正常終了状態が戻されます。

戻される状態値

SS$_NORMAL 正常終了。
SMG$_BATSTIPRO 正常終了。バッチ処理はまだ実行中です。
SMG$_ BATWASOFF 正常終了。バッチ処理はすでに終了しています。
SMG$_INVDIS_ID display-id 引数に誤りがあります。
SMG$_WRONUMARG 引数の数が誤っています。


SMG$END_PASTEBOARD_UPDATE ―End Pasteboard Update

End Pasteboard Updateルーチンは,ペーストボードに対するバッチ更新処理を終 了します。

形式

    SMG$END_PASTEBOARD_UPDATE   pasteboard-id

戻り値

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

引数

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

バッチ・カウントを減分させるペーストボードを指定しま す。pasteboard-id 引数は,ペーストボード識別子を格納した符号なし ロングワードのアドレスです。

この引数はSMG$CREATE_PASTEBOARDルーチンによって与えられます。バッチ・カウ ントが0になると,バッファに格納されていた指定されたペーストボードに対するすべ ての出力がペーストボードに書き込まれます。

説明

SMG$END_PASTEBOARD_UPDATEルーチンはSMG$BEGIN_PASTEBOARD_ UPDATE ルーチンと組み合わせて使用し,特定のペーストボードに対する出力バッチ処理を制 御します。SMG$BEGIN_PASTEBOARD_UPDATEルーチンを呼び出すと,そのたびに "バッチ・ カウント"が増分されます。それに対し,SMG$END_PASTEBOARD_UPDATEルーチンを呼び 出すと,そのたびにこのカウントは減分されます。バッチ・カウントが0になると,ペー ストボードは画面に出力されます。

バッチ・カウントが0のときにSMG$END_PASTEBOARD_UPDATEルーチンを呼び出すのは 有効な操作です。このときは,正常終了の状態値が戻されます。

戻される状態値

SS$_NORMAL 正常終了。
SMG$_BATSTIPRO 正常終了。バッチ処理はまだ実行中です。
SMG$_ BATWASOFF 正常終了。バッチ処理はすでに終了しています。
SMG$_INVDIS_ID display-id 引数に誤りがあります。
SMG$_WRONUMARG 引数の数が誤っています。


SMG$ERASE_CHARS ―Erase Characters

Erase Charactersルーチンは,仮想ディスプレイ内のカラムを消去してそれらを 空白と置き換えます。

形式

    SMG$ERASE_CHARS   display-id ,number-of-columns ,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ルーチンによって与えられます。

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

消去するカラム数。number-of-columns 引数は,消去するカラ ム数を格納した符号付きロングワードのアドレスです。

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$ERASE_CHARSルーチンは,仮想ディスプレイのカラムを空白に置換 することにより,それらのカラムを消去します。消去操作では指定された行だけが変 更されます。number-of-columns 引数の値がその行のカラム数より大きい場合は,指 定された開始位置からその行の最後までのカラムが消去されます。このルーチンを終 了した後,仮想カーソルは消去された最初のカラム位置に移動します。

DEC漢字文字集合を使用している際に,全角文字の右半分から消去操作が始まる場 合は,その文字の右半分は空白になり,左半分は未定義文字になります。また,全角 文字の左半分で消去操作が終了する場合は,その文字の右半分は未定義文字になりま す。

戻される状態値

SS$_NORMAL 正常終了。
SMG$_INVCOL カラム位置が誤っています。指定されたカラムは仮想ディスプレイの内部に含ま れていません。
SMG$_INVDIS_ID display-id 引数が 誤っています。
SMG$_INVROW 行の位置が誤っていま す。
SMG$_WRONUMARG 引数の数が誤っています。

  1. C+
    C This DEC FORTRAN example demonstrates the use of SMG$ERASE_CHARS.
    C
    C Include the SMG definitions. In particular, we want SMG$M_BORDER.
    C-
    
            IMPLICIT INTEGER (A-Z)
            INCLUDE '($SMGDEF)'
    
    C+
    C Create a virtual display with a border by calling
    C 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 Call SMG$CREATE_PASTEBOARD to create the pasteboard.
    C-
    
            STATUS = SMG$CREATE_PASTEBOARD (PASTE1)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
    C+
    C Using SMG$PUT_CHARS, put data in the virtual display.
    C-
    
            STATUS = SMG$PUT_CHARS ( DISPLAY1,
         1  ' This virtual display has 7 rows and 50 columns.', 2, 1)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
            STATUS = SMG$PUT_CHARS ( DISPLAY1,
         1          ' This is a bordered virtual display.', 4, 1)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
            STATUS = SMG$PUT_CHARS ( DISPLAY1,
         1  ' SMG$PUT_CHARS puts data in this virtual display.', 6, 1)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
    C+
    C Call SMG$PASTE_VIRTUAL_DISPLAY to paste the virtual display.
    C-
    
            STATUS = SMG$PASTE_VIRTUAL_DISPLAY ( DISPLAY1, PASTE1, 4, 15)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
    C+
    C Erase 4 characters on row 4 starting from character (column) 14 by
    C calling SMG$ERASE_CHARS.  This will remove the characters "rder"
    C from the word "bordered".
    C-
    
            STATUS = SMG$ERASE_CHARS ( DISPLAY1, 4, 4, 14)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
            END
    
    このFORTRANプログラムによって生成される最初の出力は 図 SMG-17に示すとおりです。

    図 SMG-17 SMG$ERASE_CHARSルーチンを呼び出す前に生 成される出力

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

    図 SMG-18 SMG$ERASE_CHARSルーチンを呼び出した後に生成 される出力


SMG$ERASE_COLUMN ―Erase Column from Display

Erase Column From Displayルーチンは,仮想ディスプレイの指定された部分を, 指定された位置からカラムの最後まで消去します。

形式

    SMG$ERASE_COLUMN   display-id [,start-row] [,column-number]
                      [,end-row]

戻り値

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

引数

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

影響を受ける仮想ディスプレイの識別子。display-id 引数は, この仮想ディスプレイ識別子を格納した符号なしロングワードのアドレスです。

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

消去操作を開始する行番号(省略可能)。start-row 引数は,行 番号を格納した符号付きロングワードのアドレスです。この引数を省略した場合には, column-number 引数は無視され,消去操作はその仮想ディスプレイの仮想カーソルの 現在の位置から開始されます。

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

消去操作が開始されるカラム番号(省略可能)。column-number 引数は,カラム番号を格納した符号付きロングワードのアドレスです。この引数を省 略した場合には,start-row 引数は無視され,消去操作はその仮想ディスプレイの仮 想カーソルの現在の位置から開始されます。column-number 引数が,全角文字の右半 分である場合には,その文字の左半分は未定義文字になります。また,column-number 引数が,全角文字の左半分である場合には,その文字の右半分は未定義文字になりま す。

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

消去操作を終了する行番号(省略可能)。end-row 引数は,行番 号を格納した符号付きロングワードのアドレスです。

説明

SMG$ERASE_COLUMNルーチンを使用すれば,仮想ディスプレイのカラム を,指定した位置からそのカラムの最後まで消去できます。位置を指定しなかった場 合には,消去操作は指定された仮想ディスプレイの仮想カーソルの現在の位置から開 始されます。消去操作が正常終了した後,このルーチンは消去した最初の文字位置に 仮想カーソルを移動します。

DEC漢字文字集合が使用され,削除操作が全角文字の右半分で行われる場合,文字 の左半分は未定義文字になります。また,削除操作が全角文字の左半分で行われる場 合,文字の右半分は未定義文字になります。

戻される状態値

SS$_NORMAL 正常終了。
SMG$_INVCOL カラム番号が誤っています。指定されたカラムは仮想ディスプレイの外部です。
SMG$_INVDIS_ID display-id 引数に誤りがあります。
SMG$_INVROW 行番号が誤っています。指定された行 は仮想ディスプレイの外部です。
SMG$_WRONUMARG 引 数の数が誤っています。


SMG$ERASE_DISPLAY ―Erase Virtual Display

Erase Virtual Displayルーチンは,仮想ディスプレイ全体または一部を消去しテ キスト文字を空白で置き換えます。

形式

    SMG$ERASE_DISPLAY   display-id [,start-row] [,start-column]
                       [,end-row] [,end-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-row 引数を省略した場合は,start-column 引数も無視されて仮想ディスプ レイ全体が消去されます。start-row 引数と start-column 引数を指定しなかった場 合は,end-row 引数と end-column 引数は無視されて,仮想ディスプレイ全体が消去 されます。

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

消去操作を始めるカラム。start-column 引数は,消去操作が 開始されるカラム位置を格納した符号付きロングワードのアドレスです。

start-column 引数を省略した場合は,start-row 引数も無視されて仮想ディスプ レイ全体が消去されます。start-row 引数と start-column 引数を省略した場合は, end-row 引数と end-column 引数は無視されて仮想ディスプレイ全体が消去されます。

全角文字の右半分から消去操作が始まる場合は,その文字の左半分は未定義文字に なります。

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

消去操作を終了する行。end-row 引数は,最後に消去する行の 位置を格納した符号付きロングワードのアドレスです。最後に消去する行を指定しま す。

end-row 引数を省略した場合は,end-column 引数も無視されて仮想ディスプレイ 内の残りのすべての行が消去されます。

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

消去操作を終了するカラム。end-column 引数は,最後に消去 するカラム位置を格納した符号付きロングワードのアドレスです。最後に消去するカ ラムを指定します。

end-column 引数を省略した場合は, end-row 引数は無視されて仮想ディスプレ イ内の残りのすべてのカラムが消去されます。

全角文字の左半分で消去操作が終了する場合は,その文字の右半分は未定義文字に なります。

説明

SMG$ERASE_DISPLAYルーチンを実行すると,仮想ディスプレイ全体また はその一部が消去され,テキスト文字は空白に置換されます。開始位置を省略した場 合は1行目,1カラム目に設定されます。終了位置を省略した場合は,仮想ディスプレ イの最後の行または最後のカラムになります。したがって,display-id 引数だけを指 定すれば,仮想ディスプレイ全体を消去できます。この操作を実行した後,カーソル は,消去した部分の最初の位置に設定されます。仮想ディスプレイ全体を消去した場 合は,仮想カーソルは1行目,1カラム目に設定されます。

DEC漢字文字集合を使用している際に,全角文字の右半分から消去操作が始まる場 合には,その文字の左半分は未定義文字になります。また,全角文字の左半分で消去 操作が終了する場合は,その文字の右半分は未定義文字になります。

戻される状態値

SS$_NORMAL 正常終了。
SMG$_INVCOL カラム位置が誤っています。指定されたカラムは仮想ディスプレイの内部に含ま れていません。
SMG$_INVDIS_ID display-id 引数が 誤っています。
SMG$_INVROW 行の位置が誤っていま す。指定された行は仮想ディスプレイの内部に含まれていません。
SMG$_WRONUMARG 引数の数が誤っています。

  1. C+
    C This DEC FORTRAN example program demonstrates the use of SMG$ERASE_DISPLAY.
    C-
    
            IMPLICIT INTEGER (A-Z)
    
    C+
    C Call SMG$CREATE_VIRTUAL_DISPLAY to create the virtual
    C display. To give it a border, set BORDER = 1.
    C No border would be BORDER = 0.
    C-
    
            ROWS = 7
            COLUMNS = 50
            BORDER = 1
    
            STATUS = SMG$CREATE_VIRTUAL_DISPLAY
         1                        (ROWS, COLUMNS, DISPLAY1, BORDER)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
    C+
    C Using SMG$CREATE_PASTEBOARD, 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 in the virtual display.
    C-
            STATUS = SMG$PUT_CHARS ( DISPLAY1,
         1        ' This virtual display has 7 rows and 50 columns.', 2, 1)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
            STATUS = SMG$PUT_CHARS ( DISPLAY1,
         1        ' This is a bordered virtual display.', 4, 1)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
            STATUS = SMG$PUT_CHARS ( DISPLAY1,
         1        ' SMG$PUT_CHARS puts data in this virtual display.', 6, 1)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
    C+
    C Paste the virtual display by calling SMG$PASTE_VIRTUAL_DISPLAY.
    C-
    
            STATUS = SMG$PASTE_VIRTUAL_DISPLAY ( DISPLAY1, PASTE1, 4, 15)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
    C+
    C Call SMG$ERASE_DISPLAY to erase the display from row 2,
    C column 6, through row 4, column 28.
    C-
    
            STATUS = SMG$ERASE_DISPLAY ( DISPLAY1, 2, 6, 4, 28)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
            END
    
    このFORTRANプログラムによって生成される最初の出力は, 図 SMG-19に示すとおりです。

    図 SMG-19 SMG$ERASE_DISPLAYルーチンを呼ぶFORTRANプロ グラムによって生成される最初の出力

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

    図 SMG-20 SMG$ERASE_DISPLAYルーチンを呼び出した後に 生成される出力


SMG$ERASE_LINE ―Erase Line

Erase Lineルーチンは,仮想ディスプレイの1行全体またはその一部を消去します。

形式

    SMG$ERASE_LINE   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 引数も無視されて現在のカーソル位置が使用されます。

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

消去開始カラム。start-column 引数は,消去操作が開始され るカラム位置を格納した符号付きロングワードのアドレスです。この引数を省略した 場合は,start-row 引数も無視されて現在のカーソル位置が使用されます。

説明

SMG$ERASE_LINEルーチンは,指定された開始位置からその行の最後ま でを消去します。開始位置を省略した場合は,SMG$ERASE_LINEルーチンは現在の仮想 カーソルの位置から行の最後までのテキストを消去します。仮想カーソルは,消去さ れたテキストの最初の空白に設定されます。

DEC漢字文字集合を使用している際に,全角文字の右半分から消去操作が始まる場 合は,その文字の左半分は未定義文字になります。

戻される状態値

SS$_NORMAL 正常終了。
SMG$_INVCOL カラム位置が誤っています。指定されたカラムは仮想ディスプレイの外部です。
SMG$_INVDIS_ID display-id 引数が誤っています。
SMG$_INVROW 行の位置が誤っています。指定された 行は仮想ディスプレイの外部です。
SMG$_WRONUMARG 引数の数が誤っています。

  1. C+
    C This DEC FORTRAN example program demonstrates the use of
    C SMG$ERASE_LINE.
    C-
    
            IMPLICIT INTEGER (A-Z)
            INCLUDE '($SMGDEF)'
    
    C+
    C Use SMG$CREATE_VIRTUAL_DISPLAY to create a virtual display
    C with a border.
    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 Call SMG$CREATE_PASTEBOARD to create the pasteboard.
    C-
    
            STATUS = SMG$CREATE_PASTEBOARD (PASTE1)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
    C+
    C Put data in the virtual display by calling SMG$PUT_CHARS.
    C-
    
            STATUS = SMG$PUT_CHARS ( DISPLAY1,
         1       ' This virtual display has 7 rows and 50 columns.', 2, 1)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
            STATUS = SMG$PUT_CHARS ( DISPLAY1,
         1       ' This is a bordered virtual display.', 4, 1)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
            STATUS = SMG$PUT_CHARS ( DISPLAY1,
         1       ' SMG$PUT_CHARS puts data in this virtual display.', 6, 1)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
    C+
    C Use SMG$PASTE_VIRTUAL_DISPLAY to paste the virtual display.
    C-
    
            STATUS = SMG$PASTE_VIRTUAL_DISPLAY ( DISPLAY1, PASTE1, 4, 15)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
    C+
    C Call SMG$ERASE_LINE to erase line 2, and then again to
    C erase the last 4 words on line 4.
    C-
    
            STATUS = SMG$ERASE_LINE ( DISPLAY1, 2, 1)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
            STATUS = SMG$ERASE_LINE ( DISPLAY1, 4, 9)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
            END
    
    このFORTRANプログラムによって生成される最初の出力は,図 SMG-21に示すとおりです。

    図 SMG-21 SMG$ERASE_LINEルーチンを呼び出すFORTRANプロ グラムによって生成される最初の出力

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

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


SMG$ERASE_PASTEBOARD ―Erase Pasteboard

Erase Pasteboardルーチンは,ペーストボードの内容を消去します。

形式

    SMG$ERASE_PASTEBOARD   pasteboard-id

戻り値

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

引数

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

消去されるペーストボードを指定します。pasteboard-id 引数 は,ペーストボード識別子を格納した符号なしロングワードのアドレスです。

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

説明

SMG$ERASE_PASTEBOARDルーチンは,指定されたペーストボードの内容 を消去します。物理カーソルは左上の角(1行目,1カラム目)に設定されます。ペース トボードにペーストされる仮想ディスプレイがある場合には,次回の日本語SMGによる, ぺーストボードへの出力時に書き出されます。

戻される状態値

SS$_NORMAL 正常終了。
SMG$_BATWAS_ON ペーストボードがバッチ処理されています。
SMG$_INVPAS_ ID pasteboard-id 引数に誤りがあります。
SMG$_WRONUMARG 引数の数が誤っています。
SS$_xxxx $QIOWから戻されたエラー。

  1. C+
    C This DEC FORTRAN example program demonstrates the use of
    C SMG$ERASE_PASTEBOARD.
    C-
    
            IMPLICIT INTEGER*4 (A-Z)
            CHARACTER*80    OUT_STR,TRIM_STR
            CHARACTER*18    PROMPT          /'Please enter data '/
    
            SMG$M_BOLD = 1
            SMG$M_REVERSE = 2
            SMG$M_BLINK = 4
            SMG$M_UNDERLINE = 8
    C+
    C Establish the terminal keyboard as the virtual keyboard
    C by calling SMG$CREATE_VIRTUAL_KEYBOARD.
    C-
    
            STATUS = SMG$CREATE_VIRTUAL_KEYBOARD(KEYBOARD_ID,,,)
            IF (.NOT. STATUS) CALL LIB$STOP(%VAL(STATUS))
    C+
    C Establish the terminal screen as a pasteboard using
    C SMG$CREATE_PASTEBOARD.
    C-
    
            STATUS = SMG$CREATE_PASTEBOARD (NEW_PID,,,)
            IF (.NOT. STATUS) CALL LIB$STOP(%VAL(STATUS))
    C+
    C Establish a virtual display region by
    C calling SMG$CREATE_VIRTUAL_DISPLAY.
    C-
    
            STATUS = SMG$CREATE_VIRTUAL_DISPLAY (5,80,DISPLAY_ID,,,)
            IF (.NOT. STATUS) CALL LIB$STOP(%VAL(STATUS))
    C+
    C Paste the virtual display to the screen, starting at
    C row 10, column 15.  To paste the virtual display, use
    C SMG$PASTE_VIRTUAL_DISPLAY.
    C-
    
            STATUS = SMG$PASTE_VIRTUAL_DISPLAY(DISPLAY_ID,NEW_PID,10,15)
            IF (.NOT. STATUS) CALL LIB$STOP(%VAL(STATUS))
    C+
    C Prompt the user for input, and accept that input using
    C SMG$READ_STRING.
    C-
    
            STATUS = SMG$READ_STRING(KEYBOARD_ID,OUT_STR,PROMPT,,,,,,,)
            IF (.NOT. STATUS) CALL LIB$STOP(%VAL(STATUS))
    C+
    C Clear the screen using SMG$ERASE_PASTEBOARD.
    C-
    
            STATUS = SMG$ERASE_PASTEBOARD (NEW_PID)
            IF (.NOT. STATUS) CALL LIB$STOP(%VAL(STATUS))
    C+
    C Trim any trailing blanks from the user input
    C by calling STR$TRIM.
    C-
            STATUS = STR$TRIM(TRIM_STR,OUT_STR,STR_LEN)
            IF (.NOT. STATUS) CALL LIB$STOP(%VAL(STATUS))
    
    C+
    C Display the data input by the user using SMG$PUT_CHARS
    C and SMG$PUT_LINE.
    C-
    
            STATUS = SMG$PUT_CHARS(DISPLAY_ID,'You entered: ',,,,,,)
            IF (.NOT. STATUS) CALL LIB$STOP(%VAL(STATUS))
            STATUS = SMG$PUT_LINE(DISPLAY_ID,TRIM_STR(1:STR_LEN),,
            1                               SMG$M_REVERSE,0,,)
            IF (.NOT. STATUS) CALL LIB$STOP(%VAL(STATUS))
            END
    


SMG$EXECUTE_COMMAND ―Execute Command in a Subprocess

Execute Command in a Subprocessルーチンは,SMG$CREATE_SUBPROCESSルーチン を使用して生成したサブプロセスの内部で,指定されたコマンドを実行します。

形式

    SMG$EXECUTE_COMMAND   display-id ,command-desc [,flags]
                         [,ret-status]

戻り値

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

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

コマンド文字列。command-desc 引数はコマンド文字列を示す ディスクリプタのアドレスです。

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

オプションとして実行される動作を指定するビット・マスク( 省略可能)。flags 引数はフラグを格納した符号なしロングワードのアドレスです。 flags 引数に対して指定できる値は次のとおりです。

SMG$M_DATA_FOLLOWS この後に入力データが続きます。次の SMG$EXECUTE_COMMANDルーチンの呼び出しには,現在実行中のコマンドに対する入力デー タが含まれています。これが最後の入力データ項目である場合には,この値を指定し ないでください。この値を指定した場合には,ret-status 引数は戻されません。
SMG$M_SEND_EOF エンド・オブ・ファイル・マーカー を送信します。エンド・オブ・ファイル・マーカーはサブプロセスに送信されます。

ret-status
OpenVMS用法cond_value
データ型longword (unsigned)
アクセスwrite only
受け渡し方by reference

実行したコマンドの状態(省略可能)。コマンドがバッファに登 録されないときに戻されます。ret-status 引数は,この状態を格納する符号なしロン グワードのアドレスです。

説明

SMG$EXECUTE_COMMANDルーチンは,SMG$CREATE_SUBPROCESSルーチンを 使用して生成したサブプロセス内で,指定されたコマンドを実行します。コマンドが バッファに登録される場合には,このルーチンはコマンドをバッファに登録した後, 制御を戻し,コマンドが終了した後,ユーザが指定したASTルーチンを起動します。コ マンドがバッファに登録されない場合には,SMG$EXECUTE_COMMANDルーチンは,コマン ドが実行を終了するのを待ち,その後,コマンドの状態を戻します。

コマンド文字列を指定する場合には,DCLコマンドの1文字目としてドル記号($)を 指定しなければなりません。ドル記号から始まらないコマンド文字列は,前のコマン ドに対する入力データとして解釈されます。

SMG$EXECUTE_COMMANDルーチンは,コマンドを実行するときに,そのコマンドとコ マンドからの出力を指定された仮想ディスプレイに出力します。指定した仮想ディス プレイに対して入出力を実行しないでください。SPAWNコマンド,GOTOコマンド, LOGOUTコマンドをコマンド文字列として使用することはできず,これらのコマンドを 使用した場合には,予測できない結果が発生します。

入出力はターミナル・ドライバを通じてではなく,メールボックスを使用して実行 されるため,コマンド・プロンプトや,[Ctrl/C],[Ctrl /Y],[Ctrl/Z]などの単一文 字コマンドは使用できません。[Ctrl/Z]をサブプロセスに送信する場合には,flags 引数に対してSMG$M_SEND_EOFを指定しなければなりません。詳しい説明は,『OpenVMS I/O User's Reference Manual』のメールボックス・ドライバに関する節を参照してく ださい。

戻される状態値

SS$_NORMAL 正常終了。
SMG$_INPTOOLON 入力の長さが255バイト以上です。
SMG$_INVIDS_ ID display-id 引数に誤りがあります。
SMG$_NOSUBEXI サブプロセスが存在しません。
SS$_xxxx $QIO,$DCLAST,または$SYNCHから戻された状態値。
LIB$_xxxx LIB$ANALYZE_SDESCルーチンから戻された状態値。
SMG$_ xxxx SMG$PUT_LINEルーチンから戻された状態 値。


SMG$FIND_CURSOR_DISPLAY ―Find Display That Contains the Cursor

Find Display that Contains the Cursorルーチンは,物理カーソルが現在格納さ れている,最後にペーストされた仮想ディスプレイの識別子を戻します。

形式

    SMG$FIND_CURSOR_DISPLAY   pasteboard-id ,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ルーチンによって与えられます。

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

物理カーソルが存在する仮想ディスプレイの識別子が書き込ま れます。display-id 引数は,ディスプレイ識別子が書き込まれる符号なしロングワー ドのアドレスです。

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

物理カーソルの検索を開始する行番号。pasteboard-row 引数 は省略可能な引数であり,ペーストボードの行番号を格納した符号付きロングワード のアドレスです。物理カーソルの行番号の代わりに pasteboard-row 引数を使用でき ます。

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

物理カーソルが検索を開始するカラム番号。 pasteboard-column 引数は省略可能な引数であり,ペーストボード・カラム番号を格 納した符号付きロングワードのアドレスです。物理カーソルのカラム番号の代わりに pasteboard-column 引数を使用できます。

説明

SMG$FIND_CURSOR_DISPLAYルーチンは,指定されたペーストボードの物 理カーソルがどの仮想ディスプレイに格納されているかを判断し,仮想ディスプレイ の識別子を戻します。SMG$FIND_CURSOR_DISPLAYルーチンは,物理カーソルが格納され ている最後にペーストされた仮想ディスプレイの display-id 引数を戻します。仮想 ディスプレイに物理カーソルが格納されていない場合には,このルーチンは0を戻しま す。これは,ディスプレイ識別子としては無効な値です。

戻される状態値

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


SMG$FLUSH_BUFFER ―Flush Buffer

Flush Bufferルーチンは,バッファに保存されているすべての出力を漢字ターミ ナルに送信します。

形式

    SMG$FLUSH_BUFFER   pasteboard-id

戻り値

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

引数

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

出力するペーストボードを指定します。pasteboard-id 引数は, ペーストボード識別子を格納した符号なしロングワードのアドレスです。

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

説明

SMG$FLUSH_BUFFERルーチンを使用すると,バッファに保存されていて まだ送信されていない出力はすべて,ただちにペーストボードに送信されます。日本 語SMGは,通常バッファが満杯になったときにテキストを出力します。したがってこの ルーチンを使用しなければならないのは,まだ満杯になっていないバッファを出力し なければならない場合だけです。呼び出しプログラムは通常,何らかのCPU中心型演算 を実行する直前や,ペーストボードを最新の状態に更新しなければならないときに, このルーチンを呼び出します。

戻される状態値

SS$_NORMAL 正常終了。
SMG$_WRONUMARG 引数の数が誤っています。
SMG$_INVPAS_ID pasteboard-id 引数に誤りがあります。
SS$_xxxx $QIOWから戻されたエラー。


SMG$GET_BROADCAST_MESSAGE ―Get Broadcast Message

Get Broadcast Messageルーチンは,メッセージがペーストボードにブロードキャ ストされたかどうかを判断し,メッセージを受信している場合には,そのメッセージ を戻します。

形式

    SMG$GET_BROADCAST_MESSAGE

                    pasteboard-id [,message] [,message-length]
                   [,message-type]

戻り値

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

引数

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

ブロードキャスト・メッセージが存在するかどうかを確認する ペーストボードを指定します。pasteboard-id 引数は,ペーストボード識別子を格納 する符号なしロングワードのアドレスです。

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

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

ブロードキャスト・メッセージが存在した場合,そのメッセー ジが書き込まれる文字列。message 引数は,メッセージ・テキストが書き込まれる文 字列を示すディスクリプタのアドレスです。この引数を省略した場合には,ブロード キャスト・メッセージは破棄されます。

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

ブロードキャスト・メッセージの実際の長さが書き込まれま す。message-length 引数は,メッセージの長さが書き込まれる符号なし ワードのアドレスです。

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

ブロードキャスト・メッセージのタイプが書き込まれます。 message- type 引数は,メッセージのタイプが書き込まれる符号なしワードのアドレ スです。message-type 引数の値は$MSGDEFライブラリ定義によって定義されています。 message-type 引数の値がMSG$_TRMBRDCSTでない場合には,戻される状態値は SMG$_NOBRDMSGです。

説明

SMG$GET_BROADCAST_MESSAGEルーチンは,ブロードキャスト・トラッピ ングが許可されているときに,ブロードキャスト・メッセージが指定されたペースト ボードに送信されたかどうかを判断し,送信された場合には,message 引数にメッセー ジを戻します。すべてのブロードキャスト・メッセージが戻されるまで,このルーチ ンを繰り返し呼び出すことができます。すべてのブロードキャスト・メッセージが戻 されたならば,SMG$GET_BROADCAST_MESSAGEルーチンは正常終了状態としてSMG$_NO_ MORMSG を戻します。

戻される状態値

SS$_NORMAL 正常終了。
SMG$_INVPAS_ID pasteboard-id引数に誤りがあります。
SMG$_NO_ MORMSG 正常終了。受信したメッセージはすべて戻され ました。
SMG$_NONBRDMSG ブロードキャスト・メッセー ジは戻されませんでした。
SMG$_WRONUMARG 引数の数 が誤っています。
その他 LIB$SCOPY_ DXDXから戻さ れる状態値。


SMG$GET_DISPLAY_ATTR ―Get Display Attributes

Get Display Attributes ルーチンは仮想ディスプレイに関連する属性を戻します。

形式

    SMG$GET_DISPLAY_ATTR   display-id [,height] [,width]
                          [,display-attributes] [,video-attributes]
                          [,character-set] [,flags]

戻り値

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

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

仮想ディスプレイの行数。height 引数は省略可能で,仮想デ ィスプレイの行数が書き込まれる符号付きロングワードのアドレスです。

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

仮想ディスプレイのカラム数。width 引数は省略可能で,仮想 ディスプレイのカラム数が書き込まれる符号付きロングワードのアドレスです。

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

現在の仮想ディスプレイの属性。display-attributes 引数は 省略可能で,現在の仮想ディスプレイの属性が書き込まれる符号なしロングワードの アドレスです。

この引数に対して書き込まれる値は次のとおりです。

SMG$M_BORDER 境界付き仮想ディスプレイを指示します。
SMG$M_BLOCK_BORDER ブロック形境界付き仮想ディスプレイ を指示します。
SMG$M_DISPLAY_CONTROLS 漢字ターミ ナルがグラフィック文字をサポートする場合には,キャリッジ・リターンやライン・ フィードなどの制御文字をグラフィック文字として表示することを指示します。
SMG$M_TRUNC_ ICON 仮想ディスプレイの幅をこえる行を切 り捨てた際に,その場所にアイコン(通常は菱形)を表示することを指示します。

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

現在のビデオ属性。video-attributes 引数は省略可能で,現 在のビデオ属性が書き込まれる符号なしロングワードのアドレスです。

この引数に対して書き込まれる値は次のとおりです。

SMG$M_BLINK 点滅する文字を表示し ます。
SMG$M_BOLD 通常の輝度より高い輝度で文字を 表示します。
SMG$M_REVERSE 文字を反転表示します。 つまり,仮想表示の現在のシステム設定値の属性とは逆の状態で表示します。
SMG$M_UNDERLINE 下線を付けた文字を表示します。
SMG$M_ INVISIBLE 表示されない文字を指定します。つまり, 仮想ディスプレイに存在していても,ペーストボードに表示されない文字を指定しま す。
SMG$M_USER1からSMG$M_ USER8 ユーザ定義属性 を表示します。

character-set
OpenVMS用法longword_unsigned
データ型longword (unsigned)
アクセスwrite only
受け渡し方by reference

使用されている文字集合。character-set 引数は省略可能で, 現在の文字集合属性が書き込まれる符号なしロングワードのアドレスです。文字集合 が未定義の場合,SMG$C_UNKNOWNが戻ります。

文字集合(コードセット)
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漢字コードセッ ト

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

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

仮想ディスプレイ属性を格納するビット・マスク。flags 引数 は省略可能で,フラグを格納する符号なしロングワードのアドレスです。この引数に 格納される値は次のとおりです。

SMG$M_SUBPROCESS 仮想ディスプレイにサブプロセスがアタッチさ れています。
SMG$M_ MENU 仮想ディスプレイにメニ ューが含まれています。
SMG$M_VIEWPORT 仮想ディス プレイにビューポートが含まれています。

説明

SMG$GET_DISPLAY_ATTRルーチンは仮想ディスプレイの属性を返します。 オリジナルのSMGルーチンは,ASCII文字集合とDEC特殊文字集合のみをサポートしてい るため,SMG$GET_DISPLAY_ATTRルーチンは character- set 引数に,SMG$C_ASCIIまた はSMG$C_SPEC_GRAPHICSを戻します。日本語SMGでは,その他の文字集合をサポートし ているため,SMG$GET_DISPLAY_ ATTRルーチンは character-set 引数に日本語SMGでサ ポートしている文字集合を戻します。

戻される状態値

SS$_NORMAL 正常終了。
SMG$_INVDIS_ID display-id 引数が誤っています。
引数の数が誤っています。


SMG$GET_KEY_DEF ―Get Key Definition

Get Key Definitionルーチンは,指定されたキーに対するキー定義を戻します。

形式

    SMG$GET_KEY_DEF   key-table-id ,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ルーチンによって与えられます。

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

定義に対応するキーの名前を指定します。key-name 引数は, キー名を示すディスクリプタのアドレスです。

指定できるキーについては,第3章 表 3-1を参照してくだ さい。

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

キーが押された後に有効になる現在の状態名を指定します。 if-state 引数は,状態名を示すディスクリプタのアドレスです。

詳しい説明は,SMG$ADD_KEY_DEFルーチンの説明を参照してください。

attributes
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$GET_KEY_DEFルーチンは,指定された key-name 引数と if- state 引数に対応するキー定義を戻します。このキー定義は SMG$READ_ COMPOSED_LINEルー チンの呼び出しで使用できます。

戻される状態値

SS$_NORMAL 正常終了。
SMG$_INVKEYNAM key-name 引数に誤りがあります。
SMG$_INVKTB_ ID key-table-id 引数に誤りがあります。
SMG$_KEYNOTDEF キーが定義されていません。
SMG$_WRONUMARG 引数の数が誤っています。
その 他 LIB$SCOPY_DXDXから戻された状態値。


SMG$GET_KEYBOARD_ATTRIBUTES ―Get Keyboard Attributes

Get Keyboard Attributesルーチンは,仮想キーボードに関する情報を検索し,そ の情報をユーザ指定領域(キーボード情報テーブル(KIT))に格納します。

形式

    SMG$GET_KEYBOARD_ATTRIBUTES   keyboard-id , keyboard-info-table
                                 ,keyboard-info-table-size

戻り値

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

keyboard-info-table
OpenVMS用法unspecified
データ型unspecified
アクセスwrite only
受け渡し方by reference, array reference

キーボード情報が書き込まれます。keyboard-info-table引数 は,キーボード属性が書き込まれるデータブロックのアドレスです。

キーボード情報テーブル(KIT)は,そのサイズとフィールド参照が$SMGDEFに記述さ れているバイト・ブロックです。ユーザは正しいサイズのブロックを割り当て,その アドレスをこのルーチンに渡さなければなりません。

keyboard-info-table引数の値は次のシンボリック名を使用してアクセスできます。

SMG$L_DEV_CHAR 装置特性(ロングワード)
SMG$L_DEV_DEPEND 装置依存特性1
SMG$L_DEV_ DEPEND2 装置依存特性2
SMG$B_DEV_CLASS 装置クラス(バイト)−たとえば,DC$_TERM
SMG$B_RECALL_ NUM 再呼び出しバッファのサイズ(バイト )*
SMG$B_DEVTYPE 物理装置タイプ(バイト)−たとえ ば,TT$_VT100
SMG$B_ TYPEAHD_CHAR 先読みバッファ 内の最初の文字(バイト)*
SMG$W_NUM_COLUMNS 漢字ター ミナルの幅(ワード)
SMG$W_TYPEAHD_ CNT 先読みバッ ファ内の文字数(ワード)*

アスタリスク(*)を指定した項目は,装置が漢字ターミナルである場合 (DEVCLASS=DC$_TERM)を除き,0になります。

keyboard-info-table-size
OpenVMS用法longword_unsigned
データ型longword (unsigned)
アクセスread only
受け渡し方by reference

キーボード情報テーブルのサイズ。keyboard-info-table-size 引数は,KITのサイズ(バイト数)を格納した符号なしロングワードのアドレスです。

正確なサイズを指定しなければなりません。このサイズは,シンボル定数 SMG$C_KEYBOARD_INFO_BLOCKを使用して指定できます。

説明

SMG$GET_KEYBOARD_ATTRIBUTESルーチンは,仮想キーボードに関する情 報を検索し,この情報をキーボード情報テーブル(KIT)に格納します。KITは1バイト・ ブロックで構成されるユーザ指定領域です。

戻される状態値

SS$_NORMAL 正常終了。
SMG$_INVARG KITのサイズに誤りがあります。
SMG$_INVKBD_ID keyboard-id 引数に誤りがあります。


SMG$GET_NUMERIC_DATA ―Get Numeric Terminal Data

Get Numeric Terminal Dataルーチンは,TERMTABLE.EXEをアクセスし,指定され た論理値機能または数値機能に対応する値を戻します。

形式

    SMG$GET_NUMERIC_DATA   termtable-address ,request-code
                          ,buffer-address

戻り値

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

引数

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

情報を得たい漢字ターミナルの,TERMTABLEエントリのアドレ スを指定します。termtable-address 引数は,ターミナル機能テーブル(TERMTABLE)の アドレスを格納した符号なしロングワードのアドレスです。

SMG$GET_NUMERIC_DATAルーチンを呼び出す前に,SMG$INIT_TERM_TABLEルーチンま たは SMG$INIT_TERM_TABLE_BY_TYPEルーチンを呼び出すことにより,このターミナル 機能テーブルのアドレスを得ておかなければなりません。

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

情報を得たい機能を指定する要求コード。request-code 引数 は,この要求コードを格納した符号なしロングワード定数です。要求コードはSMG$K_ codeという形式であり,codeはたとえばANSI_CRTなどのターミナル機能テーブル (TERMTABLE)内のキーワードに対応します。SMG$K_code定数は,DECの提供する $SMGTRMPTRライブラリに定義されています。

使用できる機能フィールドについては,本書の 第5章表 5-1表 5-2表 5-3表 5-4 を参照してください。

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

SMG$GET_NUMERIC_DATAルーチンが,数値機能データを書き込 むロングワードの1バイト目のアドレス。buffer-address 引数は,このバッファのア ドレスを格納する符号なしロングワードです。

説明

SMG$GET_NUMERIC_DATAルーチンは,指定されたターミナル機能テーブ ルから要求された数値情報を検索します。SMG$GET_NUMERIC_DATAルーチンを呼び出す 前に,SMG$INIT_TERM_TABLEルーチンまたはSMG$INIT_TERM_ TABLE_BY_TYPEルーチンを 呼び出すことにより,そのターミナル機能テーブルのアドレスを得ておかなければな りません。このルーチンを使用しなければならないのは,独自のTERMTABLEアクセスを 実行する場合と,漢字ターミナルに対して直接日本語SMGによるもの以外の入出力を実 行する場合だけです。

戻される状態値

SS$_NORMAL 正常終了。
SMG$_INVREQCOD 要求コードに誤りがあります。
SMG$_INVTERTAB ターミナル機能テーブル・アドレスに誤りがあります。


SMG$GET_PASTEBOARD_ATTRIBUTES ―Get Pasteboard Attributes

Get Pasteboard Attributesルーチンは,ペーストボード属性を検索し,それをペー ストボード情報テーブルに格納します。

形式

    SMG$GET_PASTEBOARD_ATTRIBUTES

                    pasteboard-id ,pasteboard-info-table
                   ,pasteboard-info-table-size

戻り値

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

引数

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

情報が要求されるペーストボードを指定します。 pasteboard-id 引数は,ペーストボード識別子を格納した符号なしロングワードのア ドレスです。

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

pasteboard-info-table
OpenVMS用法unspecified
データ型unspecified
アクセスwrite only
受け渡し方by reference, array reference

ペーストボード属性が書き込まれます。 pasteboard-info-table 引数は,ペーストボード属性が書き込まれるデータ構造のア ドレスです。

SMG$L_DEVCHAR 装置属性(ロングワード)
SMG$L_ DEVDEPEND 装置依存特性1(ロングワード)
SMG$L_ DEVDEPEND2 装置依存特性2(ロングワード)
SMG$B_DEVCLASS 装置クラス(バイト)−たとえば,DC$_ TERM
SMG$B_SMG_DEVTYPE 内部SMG装置タイプ(バイト)。SMG$B_ SMG_DEVTYPEの値は次のいずれかです。
SMG$K_UNKNOWN
SMG$K_ VTFOREIGN
SMG$K_HARDCOPY
SMG$K_ VTTERMTABLE
SMG$B_PHY_DEVTYPE 物理装置タイプ(バイト)−たとえば,TT$_VT100。 SMG$B_PHY_DEVTYPEの値はSTARLETの$TTDEFに定義されています。
SMG$B_ROWS ペーストボードの行数(バイト)
SMG$W_WIDTH ペーストボードの幅(ワード)
SMG$B_ COLOR 背景色の設定(バイト)。 SMG$B_COLORの値は次のいずれかです。
SMG$C_COLOR_ UNKNOWN 認識されない背景色
SMG$C_COLOR_WHITE白の背景色
SMG$C_COLOR_ BLACK黒の背景色
SMG$C_COLOR_BLUE 青の背景色
SMG$C_COLOR_ CYAN青緑の背景色
SMG$C_COLOR_GREEN緑の背景色
SMG$C_COLOR_MAGENTA 紫の背景色
SMG$C_COLOR_RED赤の背景色
SMG$C_COLOR_ YELLOW黄色の背景色
SMG$C_COLOR_LIGHT明るい背景色
SMG$C_COLOR_DARK暗い背景色
SMG$C_COLOR_USER1ユーザ定義背景色1
SMG$C_COLOR_ USER2ユーザ定義背景色2
SMG$B_PARITY パリティ属性(バイト)−ペーストボードが漢字ターミナルでない場合には, このフィールドは0です。
SMG$W_SPEED 漢字ターミナルの通信速度(ワード)−ペーストボードが漢字ターミナルで ない場合には,このフィールドは0です。
SMG$W_FILL フィル属性(ワード)−ペーストボードがターミナルでない場合には, このフィールドは0です。
SMG$W_PHYS_CURSOR_ROW 物理カーソルの現在のペーストボード行番号(ワード)
SMG$W_PHYS_CURSOR_ COL 物理カーソルの現在のペーストボード・カラム番号(ワード)
SMG$L_ CURSOR_DID 物理カーソルが格納されて いる一番上のディスプレイのディスプレイ識別子(ロングワード)

pasteboard-info-table 引数内の値は,次のシンボリック名を使用してアクセス できます。

pasteboard-info-table-size
OpenVMS用法longword_unsigned
データ型longword (unsigned)
アクセスread only
受け渡し方by reference

ペーストボード情報テーブルのバイト数を指定します。 pasteboard- info-table-size 引数は,ペーストボード情報テーブルのサイズ(バイト 数)を格納した符号なしロングワードのアドレスです。

指定するサイズは正確な値でなければなりません。このサイズは, SMG$C_PASTEBOARD_INFO_BLOCKというシンボル定数を使用して指定できます。

説明

SMG$GET_PASTEBOARD_ATTRIBUTESルーチンは,ペーストボード属性を検 索し,それをペーストボード情報テーブルに格納します。

戻される状態値

SS$_NORMAL 正常終了。
SMG$_INVARG pasteboard-info-table- size 引数に指定されたサイズに 誤りがあります。
SMG$_WRONUMARG 引数の数が誤って います。


SMG$GET_PASTING_INFO ―Return Pasting Information

指定された仮想ディスプレイが現在ペーストされている場合には,Return Pasting Informationルーチンは,ペーストボードの行とカラム番号を返します。

形式

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

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

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

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

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

指定されたペーストボードに対して指定された仮想ディスプレ イの状態を示すビット・マスク。flags 引数は,フラグが書き込まれる符号なしロン グワードのアドレスです。flags 引数に対して指定できる値は次のとおりです。

0 仮想ディスプレイは指定されたペーストボードにペーストされ ていません。
SMG$M_ DISPLAY_PASTED display-id 引 数によって指定される仮想ディスプレイは,pasteboard-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$GET_PASTING_INFOルーチンは,まずdisplay-id 引数によって指定 される仮想ディスプレイが,pasteboard-id 引数によって指定されたペーストボード にペーストされているかどうかを確認します。この仮想ディスプレイがこのペースト ボードにペーストされている場合には,SMG$GET_PASTING_INFOルーチンは,ペースト されている仮想ディスプレイの1行目,および1カラム目に対応するペーストボードの 行番号とカラム番号を戻します。

戻される状態値

SS$_NORMAL 正常終了。
SMG$_ILLBATFNC ディスプレイはバッチ処理されています。
SMG$_INVDIS_ ID display-id 引数に誤りがあります。
SMG$_INVPAS_ID pasteboard- id 引数に誤りがあります。
SMG$_ WRONUMARG 引数の数が誤っています。


SMG$GET_TERM_DATA ―Get Terminal Data

Get Terminal Dataルーチンは,TERMTABLE.EXEにアクセスして,漢字ターミナル に指定した操作を実行させる文字シーケンスを返します。

形式

    SMG$GET_TERM_DATA   termtable-address ,request-code
                       ,maximum-buffer-length ,return-length
                       ,buffer-address [,input-argument-vector]

戻り値

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

引数

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

情報を得たい漢字ターミナルのTERMTABLEエントリのアドレ ス。termtable-address 引数は,ターミナル機能テーブル(TERMTABLE)の アドレスを格納したロングワードのアドレスです。

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

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

情報を得たい機能。code 引数はSMG$K_codeの形式をした要求コードを格 納した符号なしロングワードのアドレスです。SMG$K_code定数は,DECの提供 する$SMGTRMPTRライブラリに定義されています。

指定できる要求コードに関しては本書の 第5章表 5-1表 5-2表 5-3表 5-4 を参照してください。

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

機能データが書き込まれるバッファの最大長。 maximum-buffer-length 引数は,バッファに書き込める最大バイト数を格 納した符号付きロングワードのアドレスです。

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

バッファに実際に書き込まれたバイト数。return-length 引数 は,バッファに転送されたバイト数が書き込まれる符号付きロングワードのアドレス です。

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

機能データを受信するバッファの1バイト目のアドレス。 buffer-address引数は,バッファのアドレスが書き込まれる符号なしロングワードの アドレスです。

input-argument-vector
OpenVMS用法vector_longword_unsigned
データ型longword (unsigned)
アクセスread only
受け渡し方by reference, array reference

特定の機能操作用の文字シーケンスを作成するために使われる 引数を渡す,ロングワード・リストのアドレス。input-argument-vector 引数は,文 字シーケンスを作成するための引数を格納した符号なしロングワードの配列のアドレ スです。ある機能を操作する文字シーケンスを作成するためには引数が必要になる場 合があります。 input-argument-vector 引数は,これらの引数を渡すためのロングワー ド・リストのアドレスを指定します。最初のロングワードは次に続く引数の数を格納 していなければなりません。

説明

SMG$GET_TERM_DATAルーチンは,漢字ターミナルへの入出力を直接行う 場合,すなわち日本語SMGルーチンを使用せずに漢字ターミナルへの入出力を行う場合 に限って使用します。指定されたターミナル・タイプのTERMTABLE.EXEエントリにアク セスし,特定の操作を実行する文字シーケンスを返します。この文字シーケンスの漢 字ターミナルへの出力は行いません。

戻される状態値

SS$_NORMAL 正常終了。
SMG$_INVREQCOD 要求コードが誤っています。
SMG$_INVTERTAB TERMTABLEアドレスが誤っています。


SMG$GET_VIEWPORT_CHAR ―Get Characteristics of Display Viewport

Get Characteristics of Display Viewportルーチンは,指定されたビューポート の属性を戻します。

形式

    SMG$GET_VIEWPORT_CHAR

                    display-id [,viewport-row-start]
                   [,viewport-column-start] [,viewport-number-rows]
                   [,viewport-number-columns]

戻り値

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

引数

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

ビューポートに対応づけられている仮想ディスプレイの識別 子。display-id 引数は,この識別子を格納した符号なしロングワードの アドレスです。

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

ビューポートの開始行番号を受け取る引数(省略可能)。 viewport-row- start 引数は,この行番号が書き込まれる符号付きロングワードのア ドレスです。

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

指定されたビューポートの開始カラム番号を受け取る引数(省 略可能)。viewport-column-start 引数は,このカラム番号が書き込まれる符号付きロ ングワードのアドレスです。

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

指定されたビューポート内の行数を受け取る省略可能な引数。 viewport- number-rows 引数は,この行数が書き込まれる符号付きロングワードのア ドレスです。

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

指定されたビューポート内のカラム数を受け取る省略可能な引 数。viewport-number-columns 引数は,このカラム数が書き込まれる符 号付きロングワードのアドレスです。

説明

SMG$GET_VIEWPORT_CHARルーチンは,指定されたビューポートの要求さ れた属性を戻します。

戻される状態値

SS$_NORMAL 正常終了。
SMG$_INVDIS_ID display-id 引数に誤りがあります。
SMG$_NO_WINASSOC 仮想ディスプレイに対応づけられているビューポー トはありません。
SMG$_WRONUMARG 引数の数が誤って います。

  1. C+
    C This DEC FORTRAN example demonstrates the use of SMG$GET_VIEWPORT_CHAR.
    C The viewport created will start at row 3, column 4. It will consist of
    C 7 rows and 29 columns. Note the parameters used in the SMG$CREATE_VIEWPORT
    C routine. I request 26 rows and 55 columns, but my viewport is truncated
    C to fit.
    C-
     IMPLICIT INTEGER (A-Z)
     INCLUDE '($SMGDEF)'
    
    C Create the virtual display. Give it a border.
    
     ROWS = 4
     COLUMNS = 34
    
     STATUS = SMG$CREATE_VIRTUAL_DISPLAY
         1         ( ROWS, COLUMNS, DISPLAY1,SMG$M_BORDER )
     IF (.NOT. STATUS) CALL LIB$SIGNAL(%val(STATUS))
    
    C Create the pasteboard.
    
     STATUS = SMG$CREATE_PASTEBOARD (PASTE1)
     IF (.NOT. STATUS) CALL LIB$SIGNAL(%val(STATUS))
    
    C Put data in the virtual display.
    
     STATUS = SMG$PUT_CHARS ( DISPLAY1,
         1  'This is row number 1 of 4, you see', 1, 1 )
     IF (.not. STATUS) CALL LIB$SIGNAL(%val(STATUS))
    
     STATUS = SMG$PUT_CHARS ( DISPLAY1,
         1  'This is row number 2 of 4, you see', 2, 1 )
     IF (.not. STATUS) CALL LIB$SIGNAL(%val(STATUS))
    
     STATUS = SMG$PUT_CHARS ( DISPLAY1,
         1  'This is row number 3 of 4, you see', 3, 1 )
     IF (.not. STATUS) CALL LIB$SIGNAL(%val(STATUS))
    
     STATUS = SMG$PUT_CHARS ( DISPLAY1,
         1  'This is row number 4 of 4, you see', 4, 1 )
     IF (.not. STATUS) CALL LIB$SIGNAL(%val(STATUS))
    
    C Paste the virtual display.
    
     STATUS = SMG$COPY_VIRTUAL_DISPLAY(DISPLAY1,DISPLAY2)
     IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
     STATUS = SMG$LABEL_BORDER (DISPLAY1, 'Full Display',,,SMG$M_BOLD)
     IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
     STATUS = SMG$LABEL_BORDER (DISPLAY2,'Viewport',,,SMG$M_BOLD)
     IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
     STATUS = SMG$PASTE_VIRTUAL_DISPLAY ( DISPLAY1, PASTE1, 2, 2 )
     IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
     STATUS = SMG$CREATE_VIEWPORT ( DISPLAY2, 1, 5, 26, 55 )
     IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
     STATUS = SMG$PASTE_VIRTUAL_DISPLAY ( DISPLAY2, PASTE1, 8, 2 )
     IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
     CALL SMG$SET_PHYSICAL_CURSOR(PASTE1, 16, 1)
     TYPE *, ' '
     TYPE *, LIB$SIGNAL(%VAL(STATUS))
    
     STATUS = SMG$GET_VIEWPORT_CHAR ( DISPLAY2, A, B, C, D )
     IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
     TYPE *, ' '
     WRITE(5,7) A,B
    7 FORMAT(1X,'Row start = ',I2,8X,'Column start = ',I2)
     TYPE *, ' '
     WRITE(5,8) C,D
    8 FORMAT(1X,'Number of rows =',I2,4X,'Number of columns =',I3)
    
     END
    
    このプログラムの出力は図 SMG-23に示すとおり です。

    図 SMG-23 SMG$GET_VIEWPORT_CHARルーチンによって生成される 出力


SMG$HOME_CURSOR ―Home Cursor

Home Cursorルーチンは,仮想カーソルを仮想ディスプレイの指定した角に移動し ます。

形式

    SMG$HOME_CURSOR   display-id [,position-code]

戻り値

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

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

仮想カーソルの移動先を指定します。position-code 引数は, 位置コードを格納したロングワードのアドレスです。

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

コード 意味
SMG$C_UPPER_LEFT 1 行目,1カラム目(左上の角)。position-code 引数を指定しなかった場合には,これが 省略時の設定である。
SMG$C_LOWER_LEFT n 行目,1カラム目(ただし,n はディスプレイ内の行数である)。つまり,左 下の角である。入力を受け付けるときに,仮想ディスプレイを上向きにスクロールす る場合には,このコードを使用すると便利である。
SMG$C_ UPPER_RIGHT 1行目,m カラム目(ただし,m はディス プレイ内のカラム数である)つまり,右上の角である。
SMG$C_LOWER_RIGHT n 行目,m カラム目(ただし, n はディスプレイ内の行数であり,m はディスプレイ内のカラム 数である)。つまり,右下の角である。

説明

SMG$HOME_CURSORルーチンは,position-code 引数に指定されたコード に従って,仮想カーソルを指定された仮想ディスプレイの角に移動します。仮想ディ スプレイのサイズを知っておく必要はなく,また,仮想カーソルの位置も必要ありま せん。position-code 引数を省略した場合には,SMG$HOME_CURSORルーチンは仮想カー ソルを仮想ディスプレイの左上の角に移動します。

戻される状態値

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


SMG$INIT_TERM_TABLE ―Initialize Terminal Table

Initialize Terminal Tableルーチンは,指定された漢字ターミナルに対して, TERMTABLEデータベースを初期化することにより,その後のSMG$GET_TERM_DATAの呼び 出しで,その漢字ターミナルに対する情報とコマンド文字列を検索できるようにしま す。

形式

    SMG$INIT_TERM_TABLE   terminal-name, termtable-address

戻り値

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

引数

terminal-name
OpenVMS用法device_name
データ型character string
アクセスread only
受け渡し方by reference

漢字ターミナルの名前を指定します。terminal-name 引数は, ターミナル名を示すディスクリプタのアドレスです。名前はTERMTABLE.EXE内のエント リでなければなりません。

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

TERMTABLE.EXE内の特定のタイプの漢字ターミナルのエントリ のアドレス。termtable-address 引数は,ターミナル機能テーブルのアドレスが書き 込まれる符号なしロングワードのアドレスです。

指定されたタイプの漢字ターミナルに対してSMG$GET_TERM_DATAルーチンを呼び出 す場合には,このアドレスを使用します。termtable-address引数は SMG$INIT_TERM_TABLE_BY_TYPEルーチンによっても与えられます。

説明

SMG$INIT_TERM_TABLEルーチンは,その後でSMG$GET_TERM_DATAルーチ ンを呼び出すときに,その漢字ターミナルに対して情報とコマンド文字列を検索でき るように,指定された漢字ターミナルに対してTERMTABLEデータベースを初期化します。 このルーチンを使用しなければならないのは,漢字ターミナルに対して,直接日本語 SMGによるもの以外の入出力を実行する場合だけです。

SMG$INIT_TERM_TABLEルーチンは,まずTERM$TABLOCという論理名の領域から TERMTABLE.EXEを検索します。TERMTABLE.EXEをその領域から検索できない場合には, このルーチンはグローバル・セクションSMG$TERMTABLEを検索します。

戻される状態値

SS$_NORMAL 正常終了。
SMG$_GBLSECMAP 正常終了。定義はグローバル・セクションTERMTABLEか ら検出されました。
SMG$_PRISECMAP 正常終了。定義 は個人用のTERMTABLEから検出されました。
SMG$_UNDTERNAM ターミナル名が定義されていません。
SMG$_UNDTERNOP 未定義ターミナル。漢字ターミナルに対する定義 を検索できず,個人用のTERMTABLEも見つかりませんでした。
SMG$_UNDTERNOS 未定義ターミナル。漢字ターミナルに対する定義を検 索できず,システムTERMTABLEも見つかりませんでした。


SMG$INIT_TERM_TABLE_BY_TYPE ―Initialize TERMTABLE by VMS Terminal Type

Initialize TERMTABLE by VMS Terminal Typeルーチンは,指定された漢字ターミ ナルに対してTERMTABLEデータベースを初期化することにより,その後で SMG$GET_TERM_DATA ルーチンを呼び出したときに,その漢字ターミナルに対する情報 とコマンド文字列を検索できるようにします。

形式

    SMG$INIT_TERM_TABLE_BY_TYPE

                            terminal-type
                            ,termtable-address
                            [,terminal-name]

戻り値

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

引数

terminal-type
OpenVMS用法byte_signed
データ型byte (signed)
アクセスread only
受け渡し方by reference

漢字ターミナルの装置タイプであり,VMSシンボリック・ター ミナル・タイプまたは$GETDVIシステム・サービスが戻す値によって指定されます。 terminal-type 引数は,ターミナル・タイプを格納した符号付きバイトのアドレスで す。

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

TERMTABLE.EXE内の特定のターミナル・タイプのエントリのア ドレス。termtable-address 引数は,ターミナル・エントリのアドレスが書き込まれ る符号なしロングワードのアドレスです。

指定されたタイプの漢字ターミナルに対して,SMG$GET_TERM_DATAプロシージャを 呼び出す場合には,このアドレスを使用します。

terminal-name
OpenVMS用法device_name
データ型character string
アクセスwrite only
受け渡し方by descriptor

装置タイプに対応するターミナル名が書き込まれる文字列。 terminal- name 引数は,ターミナル名が書き込まれる文字列を示すディスクリプタの アドレスです。

説明

SMG$INIT_TERM_TABLE_BY_TYPEルーチンは,指定されたターミナル・タ イプに対して,TERMTABLEデータベースを初期化することにより,その後で SMG$GET_TERM_DATAルーチンを呼び出したときに,そのタイプの漢字ターミナルに対し て情報とコマンド文字列を検索できるようにします。このルーチンを使用しなければ ならないのは,漢字ターミナルに対して直接日本語SMGによるもの以外の入出力を実行 する場合だけです。

SMG$INIT_TERM_TABLE_BY_TYPEルーチンはまず,TERM$TABLOCという論理名の領域 からTERMTABLE.EXEを検索します。その領域からTERMTABLE.EXEを検索できなかった場 合には,このルーチンはグローバル・セクションSMG$TERMTABLEを検索します。

戻される状態値

SS$_NORMAL 正常終了。
SMG$_GBLSECMAP 正常終了。定義はグローバル・セクションTERMTABLEか ら検索されました。
SMG$_PRISECMAP 正常終了。定義 は個人用のTERMTABLEから検索されました。
SMG$_UNDTERNAM ターミナル名が定義されていません。
SMG$_UNDTERNOP 未定義ターミナル。漢字ターミナルに対する定義 を検索できず,個人用のTERMTABLEも見つかりませんでした。
SMG$_UNDTERNOS 未定義ターミナル。漢字ターミナルに対する定義を検 索できず,システムTERMTABLEも見つかりませんでした。


SMG$INSERT_CHARS ―Insert Characters

Insert Charactersルーチンは仮想ディスプレイに文字を挿入します。

形式

    SMG$INSERT_CHARS   display-id ,character-string ,start-row
                      ,start-column [,rendition-set]
                      [,rendition-complement] [,character-set]

戻り値

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

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

挿入文字列。character-string 引数は,挿入される文字列を 示すディスクリプタのアドレスです。

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 引数は,カラム位置を 格納した符号付きロングワードのアドレスです。

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-complement
OpenVMS用法mask_longword
データ型longword (unsigned)
アクセスread only
受け渡し方by reference

属性補足指定子。rendition-complement 引数は省略可能で, ロングワード・ビット・マスクのアドレスです。この引数で指定する補足的な属性が 仮想ディスプレイ上に設定されます。rendition-set 引数で指定できる属性は,すべ てrendition-complement 引数で補足指定することができます。

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

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

挿入されるテキストの文字集合。character-set 引数は,文字 集合コードを格納した符号なしロングワードのアドレスです。

この引数を省略した場合,SMG$CREATE_VIRTUAL_DISPLAYルーチンまたは SMG$CHANGE_VIRTUAL_DISPLAYルーチンで設定された値が使用されます。

文字集合(コードセット)
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漢字コードセット

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

説明

SMG$INSERT_CHARSルーチンは,start-row 引数と start-column 引数 によって指定される位置に指定される文字列を挿入します。挿入された文字列の右側 の文字は右にシフトされますが,その行に格納できない文字は切り捨てられます。仮 想カーソルは,最後に挿入された文字位置に設定されます。

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

DEC漢字文字集合を使用している際に,全角文字の右半分から挿入操作が始まる場 合は,その分割された文字は2つの未定義文字になり,挿入された文字列の初めと終わ りに置かれます。また,行の最後の全角文字の右半分が切り捨てられる場合は,その 文字の左半分は未定義文字になります。

戻される状態値

SS$_NORMAL 正常終了。
LIB$_INVSTRDES 文字列ディスクリプタが誤っています。
SMG$_INVARG 認識されない属性コードが指定されています。
SMG$_INVCOL カラム位置が誤っています。指定されたカラ ムは仮想ディスプレイの外部です。
SMG$_INVDIS_ID display-id 引数が誤っています。
SMG$_INVROW 行の位置が誤っています。指定された行は仮想ディスプレイの外部です。
SMG$_WILUSERMS ペーストボードがビデオ・ターミナルでありませ ん。
SMG$_WRONUMARG 引数の数が誤っています。

  1. C+
    C This DEC FORTRAN example program demonstrates the use of SMG$INSERT_CHARS.
    C-
    
            IMPLICIT INTEGER (A-Z)
            INCLUDE '($SMGDEF)'
    
    C+
    C Use SMG$CREATE_VIRTUAL_DISPLAY to create a virtual display
    C with a border.
    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 Call SMG$CREATE_PASTEBOARD to create the pasteboard.
    C-
    
            STATUS = SMG$CREATE_PASTEBOARD (PASTE1)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
    C+
    C Put data in the virtual display by calling SMG$PUT_CHARS.
    C-
    
            STATUS = SMG$PUT_CHARS ( DISPLAY1,
         1       ' This virtual display has 7 rows and 50 columns.', 2, 1 )
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
            STATUS = SMG$PUT_CHARS ( DISPLAY1,
         1       ' This is a bordered virtual display.', 4, 1 )
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
            STATUS = SMG$PUT_CHARS ( DISPLAY1,
         1       ' SMG$PUT_CHARS puts data in this virtual display.', 6, 1 )
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
    C+
    C Use SMG$PASTE_VIRTUAL_DISPLAY to paste the virtual display.
    C-
    
            STATUS = SMG$PASTE_VIRTUAL_DISPLAY ( DISPLAY1, PASTE1, 4, 15 )
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
    C+
    C Call SMG$INSERT_CHARS to add a row 1 of text, starting at column 6.
    C Underline these characters.
    C-
    
            STATUS = SMG$INSERT_CHARS ( DISPLAY1,
         1          'This is a new row.', 1, 6, SMG$M_UNDERLINE )
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
    C+
    C Calling SMG$INSERT_CHARS again, add text to row 6.
    C Note that there will be some characters that will no
    C longer fit on the line. They will be discarded. The
    C new text will be bolded.
    C-
    
            STATUS = SMG$INSERT_CHARS ( DISPLAY1,
         1          'to this bordered display.', 6, 28, SMG$M_BOLD )
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
            END
    
    このFORTRANプログラムがSMG$INSERT_CHARSルーチンを呼び出す前に生成する出力は, 図 SMG-24に示すとおりです。

    図 SMG-24 SMG$INSERT_CHARSルーチンを呼び出す前に 生成される出力

    このFORTRANプログラムがSMG$INSERT_CHARSルーチンを呼んだ後に生成する出力は, 図 SMG-25に示すとおりです。

    図 SMG-25 SMG$INSERT_CHARSルーチンを呼んだ後に生 成される出力


SMG$INSERT_LINE ―Insert Line

Insert Lineルーチンは,仮想ディスプレイに1行を挿入して仮想ディスプレイを スクロールします。

形式

    SMG$INSERT_LINE   display-id ,start-row [,character-string]
                     [,direction] [,rendition-set]
                     [,rendition-complement] [,flags]
                     [,character-set]

戻り値

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 引数は,行の 位置を格納した符号付きロングワードのアドレスです。

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

SMG$INSERT_LINEルーチンによって挿入される文字列。 character- string 引数はこの文字列を示すディスクリプタのアドレスです。

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

スクロール方向。direction 引数は,方向コードを格納したロ ングワード・ビット・マスクのアドレスです。この引数に対して指定できる値は SMG$M_UPとSMG$M_DOWNです。この引数を省略した場合は,SMG$M_UPが設定されます。

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-complement
OpenVMS用法mask_longword
データ型longword (unsigned)
アクセスread only
受け渡し方by reference

属性補足指定子。rendition-complement 引数は省略可能で, ロングワード・ビット・マスクのアドレスです。この引数で指定する補足的な属性が 仮想ディスプレイ上に設定できます。rendition-set 引数で指定できる属性はすべて, rendition-complement 引数で補足指定することができます。

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

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

動作指定のビット・マスク。flags 引数は省略可能で,フラグ を格納した符号なしロングワードのアドレスです。テキストを1行に格納できない場合 に,どのような動作を実行するかを指定します。この引数に対して指定できる値は次 のとおりです。

0 自動改行しないことを指定します(省略時の設定値)。
SMG$M_WRAP_CHAR 行の最後の文字で自動改行します。
SMG$M_WRAP_WORD 行の最後の空白で自動改行します。

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

出力されるテキストの文字集合。character-set 引数は,文字 集合コードを格納した符号なしロングワードのアドレスです。この引数を省略した場 合は,SMG$CREATE_VIRTUAL_DISPLAYルーチンまたはSMG$CHANGE_VIRTUAL_ DISPLAYルー チンで設定された値が使用されます。

文字集合(コードセット)
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漢字コードセット

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

説明

SMG$INSERT_LINEルーチンは,仮想ディスプレイの最初の行と最後の行 を除く行に1行挿入できます。既存の行は指定された方向にスクロールされ,挿入のた めの空間が作成されます。character-string 引数を指定した場合は,その文字列が生 成される空間に書き込まれますが,省略した場合は空白になります。文字列が仮想デ ィスプレイの幅より短い場合は空白が埋め込まれます。

flags 引数がSMG$M_WRAP_WORDまたはSMG$M_WRAP_CHARで,指定した文字列が仮想 ディスプレイの幅より長い場合は,SMG$INSERT_LINEルーチンは別の行をスクロールし, あふれた文字を生成される空間に書き込みます。flags 引数が0の場合は,あふれた文 字は切り捨てられます。仮想カーソルは,最後に書き込まれた文字の次の文字位置に 設定されます。

挿入操作でDEC漢字文字集合を指定し,あふれた文字が全角文字の右半分の部分か ら切り捨てられる場合は,その文字の左半分は未定義文字になります。

仮想ディスプレイの最初の行または最後の行に行を挿入してスクロールする場合に ついては,SMG$PUT_LINEを参照してください。

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

戻される状態値

SS$_NORMAL 正常終了。
SMG$_INVARG 引数が誤っています。指定された方向が上または下であり ません。
SMG$_INVCOL カラム位置が誤っています。
SMG$_INVDIS_ID display-id 引数が誤っています。
SMG$_INVROW 行の位置が誤っています。
SMG$_WILUSERMS ペーストボードがビデオ・ターミナルでありませ ん。
SMG$_ WRONUMARG 引数の数が誤っています。

  1. C+
    C This DEC FORTRAN example program demonstrates the use of SMG$INSERT_LINE.
    C
    C Include the SMG definitions. In particular, we want SMG$M_BORDER,
    C SMG$M_UNDERLINE, and SMG$M_UP.
    C-
    
            IMPLICIT INTEGER (A-Z)
            INCLUDE '($SMGDEF)'
    
    C+
    C Use SMG$CREATE_VIRTUAL_DISPLAY to create a virtual display
    C with a border.
    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 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_CHARS to put data in the virtual display.
    C-
    
            STATUS = SMG$PUT_CHARS ( DISPLAY1,
         1        ' This virtual display has 7 rows and 50 columns.', 2, 1 )
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
            STATUS = SMG$PUT_CHARS ( DISPLAY1,
         1        ' This is a bordered virtual display.', 4, 1 )
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
            STATUS = SMG$PUT_CHARS ( DISPLAY1,
         1        ' SMG$PUT_CHARS puts data in this virtual display.', 6, 1 )
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
    C+
    C Paste the virtual display by calling SMG$PASTE_VIRTUAL_DISPLAY.
    C-
    
            STATUS = SMG$PASTE_VIRTUAL_DISPLAY ( DISPLAY1, PASTE1, 4, 15 )
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
    C+
    C Call SMG$INSERT_LINE to add a line of text after line 6 and scroll
    C the display. Also, underline the new characters.
    C-
    
            STATUS = SMG$INSERT_LINE ( DISPLAY1, 7,
         1          'This is a new line.', SMG$M_UP, SMG$M_UNDERLINE )
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
            END
    
    FOTRANプログラムによって生成される最初の出力は 図 SMG-26に示すとおりです。

    図 SMG-26 SMG$INSERT_LINEルーチンを呼び出す前に生成さ れる出力

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

    図 SMG-27 SMG$INSERT_LINEルーチンを呼び出した後に生成 される出力


SMG$INVALIDATE_DISPLAY ―Mark a Display as Invalid

Mark a Display as Invalidルーチンは,ディスプレイを無効状態としてマークし, ディスプレイ全体を再表示します。

形式

    SMG$INVALIDATE_DISPLAY   display-id

Returns

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

引数

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

影響を受ける仮想ディスプレイを指定します。display-id 引 数は,ディスプレイ識別子を格納した符号なしロングワードのアドレスです。

display-id はSMG$CREATE_VIRTUAL_DISPLAYから戻されます。

説明

SMG$INVALIDATE_DISPLAYはディスプレイを無効状態としてマークし, ディスプレイ全体を再表示します。このルーチンは通常,日本語SMGを利用せずに,出 力がディスプレイに書き込まれたことを検出したときに使用します。

このルーチンは,仮想ディスプレイの"フットプリント"のペーストボードの内容を 無効にすることにより,仮想ディスプレイを再表示します。ディスプレイが隠されて いる場合には,仮想ディスプレイの隠されている部分だけが再表示されます(ディスプ レイ全体が再表示されるわけではありません)。

戻される状態値

SS$_NORMAL 正常終了。
SMG$_INVDIS_ID display-id 引数に誤りがあります。


SMG$KEYCODE_TO_NAME ―Translate a Key Code into a Key Name

Translate a Key Code into a Key Nameルーチンは,キーボードのキーのキー・ コードを対応するキー名に変換します。

形式

    SMG$KEYCODE_TO_NAME   key-code ,key-name

戻り値

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

引数

key-code
OpenVMS用法word_unsigned
データ型word (unsigned)
アクセスread only
受け渡し方by reference

キー名に変換するキー・コードを指定します。key-code 引数 は,キー・コードを格納した符号なしワードのアドレスです。

key-code 引数は,SMG$READ_COMPOSED_LINE,SMG$READ_KEYSTROKE, SMG$READ_STRING,SMG$READ_VERIFYルーチンから戻される word- terminator-code 引 数と同じです。

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

key-code 引数が変換されるキーの名前を格納する文字列。key- name 引数は,キー名を格納する文字列を示すディスクリプタのアドレス です。key-name 引数はキーの名前です。たとえば,COMMAや PERIOD,KP4な どです。

説明

SMG$KEYCODE_TO_NAMEルーチンは,キーボードのキーのキー・コードを 対応するキー名に変換します。このキー・コードは,SMG$READ_ KEYSTROKEルーチンが word-terminator-code 引数に戻すコードと同じです。 key-code 引数の形式は SMG$K_TRM_keynameです(たとえば,SMG$K_ TRM_DELETE)。

終了文字の値についての詳しい説明は, 第3章表 3-1を参照してください。

戻される状態値

SS$_NORMAL 正常終了。
SMG$_INVKEYNAM key-name 引数に誤りがあります。


SMG$LABEL_BORDER ―Label a Virtual Display Border

Label a Virtual Display Borderルーチンは,仮想ディスプレイの境界上のラベ ルを指定します。

形式

    SMG$LABEL_BORDER   display-id [,text] [,position-code] [,units]
                      [,rendition-set] [,rendition-complement]
                      [,character-set]

戻り値

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

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

境界上の新ラベル。text 引数はラベル・テキストを示すディ スクリプタのアドレスです。この引数を省略した場合は,仮想ディスプレイにラベル は表示されません。

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

ラベル付け位置。position-code 引数は,位置コードを格納し た符号なしロングワードのアドレスです。上下左右のどの境界にラベルを付けるかを 指定します。この引数に対して指定できる値は次のとおりです。

SMG$K_TOP 上側境界にラベルを表示します。
SMG$K_BOTTOM 下側境界にラベルを表示します。
SMG$K_ RIGHT 右側境界にラベルを表示します。
SMG$K_LEFT 左側境界にラベルを表示します。

この引数を省略した場合は,ラベルは上側境界上に表示されます。


注意

SMG$K_RIGHTと SMG$K_LEFTは,文字集合がDEC漢字文字集合のときは使用できません。


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

境界上のラベル付け開始位置。units 引数は文字位置を格納し た符号付きロングワードのアドレスです。この引数を省略した場合は,ラベルは指定 した境界上で中寄せされます。

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

属性指定子。rendition-set 引数は省略可能で,ロングワード・ ビット・マスクのアドレスです。この引数で指定する属性が仮想ディスプレイ上に設 定されます。この引数に対して指定できる値は次のとおりです。

SMG$M_BLINK 点滅する文字を表示します。
SMG$M_BOLD 通常の輝度より高い輝度で文字を表示します。
SMG$M_INVISIBLE 表示されない文字を指定します。つまり,仮想 ディスプレイに存在していても,ペーストボードに表示されない文字を指定します。
SMG$M_ REVERSE 文字を反転表示します。つまり,仮 想表示の現在のシステム設定値の属性とは逆の状態で表示します。
SMG$M_UNDERLINE 下線を付けた文字を表示します。
SMG$M_USER1からSMG$M_ USER8 ユーザ定義属性を表示します。

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

属性補足指定子。rendition-complement 引数は省略可能で, ロングワード・ビット・マスクのアドレスです。この引数で指定する補足的な属性が 仮想ディスプレイ上に設定されます。rendition-set 引数で指定できる属性はすべて, rendition-complement 引数で補足指定することができます。

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

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

境界上にラベルとして置かれるテキストの文字集合。 character-set 引数は,文字集合コードを格納した符号なしロングワードのアドレス です。この引数を省略した場合,SMG$CREATE_VIRTUAL_DISPLAYルーチンまたは SMG$CHANGE_VIRTUAL_DISPLAYルーチンで設定された値が使用されます。

文字集合(コードセット)
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漢字コードセット

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

説明

SMG$LABEL_BORDERルーチンは,仮想ディスプレイに表示するラベルの テキストを指定するために使用します。指定した仮想ディスプレイに境界表示属性 (SMG$M_BORDER)が設定されていない場合は,この属性が強制的に設定されます。ラベ ル文字列を指定すると,現在のラベル・テキストと置き換えられます。空(null)のラ ベル文字列を指定した場合は,境界にラベルは表示されません。指定した位置からラ ベル・テキストを境界内に格納できない場合は,このルーチンはSMG$_INVARGを戻しま す。

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 DEC 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
    
    このプログラムから生成される出力は図 SMG-28に示す とおりです。

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


SMG$LIST_KEY_DEFS ―List Key Definitions

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

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

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 Command Language Interpreterのもとで実行していなければなりません。 このルーチンは,コマンド行を処理するときに検出したエラーを通知します。詳しい 説明は,SMG$DEFINE_KEYルーチンを参照してください。

戻される状態値

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


SMG$LOAD_VIRTUAL_DISPLAY ―Load a Virtual Display from a File

Load a Virtual Display from a Fileルーチンは,新しい仮想ディスプレイを作 成し,SMG$SAVE_VIRTUAL_DISPLAYルーチンを使用して保存した仮想ディスプレイを新 しい仮想ディスプレイにロードします。

形式

    SMG$LOAD_VIRTUAL_DISPLAY   display-id [,filespec]

戻り値

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

引数

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

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

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

指定された仮想ディスプレイが保存されているファイルのファ イル指定を格納した文字列。filespec 引数はファイル指定を格納した文字列です。

filespec 引数を省略した場合には,SMG$LOAD_VIRTUAL_DISPLAYルーチンは省略時 のファイル指定としてSMGDISPLY.DATを検索します。

説明

SMG$LOAD_VIRTUAL_DISPLAYルーチンは新しい仮想ディスプレイを作成 し,SMG$SAVE_VIRTUAL_DISPLAYルーチンを使用して保存した仮想ディスプレイを,そ の新しい仮想ディスプレイにロードします。新しい仮想ディスプレイには,保存され ている仮想ディスプレイからテキスト,ビデオ属性,文字集合,およびディスプレイ 属性がロードされますが,メニュー,ビューポート,およびサブプロセスの内容はロー ドされません。新しい仮想ディスプレイはペーストボードにペーストされません。

戻される状態値

SS$_NORMAL 正常終了。
SMG$_INVDIS_ID display-id引数に誤りがあります。
SMG$_ xxxx SMG$CREATE_VIRTUAL_DISPLAYルーチンから戻された条件値。
RMS$_xxxx $OPEN,$CONNECT,$PUT,および $CLOSEから戻されたエラー。


SMG$MOVE_TEXT ―Move Text from One Virtual Display to Another

Move Text from One Virtual Display to Anotherルーチンは,1つの仮想ディス プレイから別の仮想ディスプレイにテキスト領域を移動します。長方形の対角線上の2 つの角を指定することにより,SMG$MOVE_TEXTルーチンはテキストの幅と高さを判断し ます。

形式

    SMG$MOVE_TEXT   display-id ,top-left-row ,top-left-column
                   ,bottom-right-row ,bottom-right-column
                   ,display-id2 [,top-left-row2] [,top-left-column2]
                   [,flags]

戻り値

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

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

移動するテキスト領域の左上行。top-left-row 引数は,行の 位置を格納した符号なしロングワードのアドレスです。

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

移動するテキスト領域の左上カラム。top-left-column 引数は, カラム位置を格納した符号なしロングワードのアドレスです。

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

移動するテキスト領域の右下行。bottom-right-row 引数は, 行の位置を格納した符号なしロングワードのアドレスです。

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

移動するテキスト領域の右下カラム。bottom-right-column 引 数は,カラム位置を格納した符号なしロングワードのアドレスです。

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

テキスト移動先の仮想ディスプレイの識別子。display-id 引 数は,仮想ディスプレイの識別子を格納した符号なしロングワードのアドレスです。

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

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

テキストの移動先領域の右上行。top-left-row2 引数は省略可 能で,行の位置を格納した符号なしロングワードのアドレスです。この引数を省略し た場合は,テキストは現在仮想カーソルが設定されている行に移動されます。

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

テキストの移動先領域の左上カラム。top-left-column2 引数 は省略可能で,カラム位置を格納した符号なしロングワードのアドレスです。この引 数を省略した場合は,テキストは仮想カーソルが現在設定されているカラムに移動さ れます。

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

動作指定ビット・マスク。flags 引数は省略可能で,フラグを 格納した符号なしロングワードのアドレスです。指定されたテキストを移動する際に どのような動作を実行するかを指定します。この引数に対して指定できる値は次のと おりです。

SMG$M_TEXT_ONLY テキストだけを移動し,属性を移動しないこと を指定します。
SMG$M_ TEXT_SAVE 移動の後,テキス トを消去しないことを指定します。

説明

SMG$MOVE_TEXTルーチンは,1つの仮想ディスプレイから別の仮想ディ スプレイにテキスト領域を移動します。移動の対象となる領域は,top-left-row 引数, top-left-column 引数,bottom-right-row 引数,bottom-right-column 引数で指定し ます。仮想カーソルの位置は変更されません。

図 SMG-29 テキスト移動のための引数

テキスト領域は,宛先となる仮想ディスプレイの現在の仮想カーソルの行およびカラ ムに移動されます。別の位置にテキストを移動する場合は,省略可能な top-left-row2 引数と top-left-column2 引数を使用します。

システム設定値では,最初(移動元)の仮想ディスプレイの属性も移動され,テキス ト領域を移動した後,テキストは最初の仮想ディスプレイから消去されます。これら のシステム設定値を変更する場合は flags 引数を使用します。

DEC漢字文字集合を使用している際に,移動操作の結果として全角文字が半分ずつ に分割される場合は,全角文字の分割された各部分は未定義文字になります。

戻される状態値

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


SMG$MOVE_VIRTUAL_DISPLAY ―Move Virtual Display

Move Virtual Displayルーチンは,ペーストボード上で仮想ディスプレイを移動 しますが,ペースト順序は変更しません。

形式

    SMG$MOVE_VIRTUAL_DISPLAY

                            display-id
                            ,pasteboard-id
                            ,pasteboard-row
                            ,pasteboard-column
                            [,top-display-id]

戻り値

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

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

移動操作が実行されるペーストボードを指定します。 pasteboard-id 引数は,ペーストボード識別子を格納した符号なしロングワードのア ドレスです。

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

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

指定された仮想ディスプレイの,新しい位置を示すペーストボー ドの行番号を指定します。pasteboard-row 引数は,行番号を格納した符号付きロング ワードのアドレスです。

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

指定された仮想ディスプレイの新しい位置を示すペーストボー ドのカラム番号を指定します。pasteboard-column 引数は,カラム番号を格納した符 号付きロングワードのアドレスです。

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

移動する display-id 引数がペーストされるときに,そのディ スプレイの上になる仮想ディスプレイの識別子。top-display-id 引数は,仮想ディス プレイ識別子を格納した符号なしロングワードのアドレスです。top- display-id 引 数を使用できるのは,display-id 引数によって指定される仮想ディスプレイが現在ペー ストされておらず,top-display-id 引数によって指定される仮想ディスプレイがペー ストされている場合だけです。

説明

SMG$MOVE_VIRTUAL_DISPLAYルーチンは,仮想ディスプレイを現在の位 置から指定された位置に移動し,仮想ディスプレイがペーストされている場合には, ペースト順序をそのまま保存します。移動されるディスプレイが現在ペーストされて いない場合には,SMG$MOVE_VIRTUAL_DISPLAYルーチンは,ユーザに対して2つのオプシ ョンを示します。省略時の設定では,SMG$MOVE_VIRTUAL_DISPLAYルーチンはペースト 順序の1番上の,指定された位置に仮想ディスプレイをペーストします。

しかし,top-display-id 引数が指定された場合には,SMG$MOVE_VIRTUAL_ DISPLAY ルーチンは移動する仮想ディスプレイを,top-display-id 引数によって指定される仮 想ディスプレイの下にペーストします。この場合には,top-display-id 引数によって 指定される仮想ディスプレイはすでにペーストされていなければなりません。

ディスプレイを異なるペーストボード間で移動することはできません。それにもか かわらず,pasteboard-id 引数を指定しなければならないのは,特定の仮想ディスプ レイを複数のペーストボードにペーストできるからです。

仮想ディスプレイがバッチ処理される場合には,このルーチンを使用してはいけま せん。

戻される状態値

SS$_NORMAL 正常終了。
SMG$_ILLBATFNC ディスプレイがバッチ処理されています。誤操作です。
SMG$_INVDIS_ID display-id 引数に誤りがあります。
SMG$_INVPAS_ID pasteboard-id 引数に誤りがありま す。
SMG$_WRONUMARG 引数の数が誤っています。

SMG$REPASTE_VIRTUAL_DISPLAYルーチンに示されているFORTRANプログラ ムの例を参照してください。


SMG$NAME_TO_KEYCODE ―Translate a Key Name into a Key Code

Translate a Key Name into a Key Codeルーチンは,キーボードのキーのキー名 を対応するキー・コードに変換します。

形式

    SMG$NAME_TO_KEYCODE   key-name ,key-code

戻り値

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

引数

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

キー・コードに変換されるキーの名前を格納した文字列。 key-name 引数は,キー名を格納した文字列を示すディスクリプタのアドレスです。 key- name 引数は単なるキーの名前であり,たとえば,COMMA,PERIOD,KP4などです。

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

key-name 引数を変換した後のキー・コードが書き込まれます。 key- code 引数は,キー・コードを格納する符号なしワードのアドレスです。

key-code 引数は,SMG$READ_COMPOSED_LINE,SMG$READ_KEYSTROKE, SMG$READ_STRING,SMG$READ_VERIFYルーチンによって与えられる word- terminator-code 引数と同じです。

説明

SMG$NAME_TO_KEYCODEルーチンは,キーボードのキーのキー名を対応す るキー・コードに変換します。このキー・コードは,SMG$READ_ COMPOSED_LINE, SMG$READ_KEYSTROKE,SMG$READ_STRING,SMG$READ_ VERIFYルーチンから word-terminator-code 引数に戻されるコードと同じです。このルーチンから戻される キー・コードの形式は SMG$K_TRM_ keynameです。たとえば,キー名としてENTERを指 定した場合には,このルーチンから戻されるキー・コードはSMG$K_TRM_ENTERです。

終了文字コードについての詳しい説明は,第3章表 3-1を参照してください。

戻される状態値

SS$_NORMAL 正常終了。
SMG$_INVKEYNAM key-name 引数に誤りがあります。


SMG$PASTE_VIRTUAL_DISPLAY ―Paste Virtual Display

Paste Virtual Displayルーチンは,仮想ディスプレイをペーストボードにペース トします。

形式

    SMG$PASTE_VIRTUAL_DISPLAY

                             display-id
                             ,pasteboard-id
                             [,pasteboard-row]
                             [,pasteboard-column]
                             [,top-display-id]

戻り値

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

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

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

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

指定された仮想ディスプレイの1行目が置かれるペーストボー ドの行。pasteboard-row 引数は,行の位置を格納した符号付きロングワードのアドレ スです。

pasteboard-row 引数が省略された場合,仮想ディスプレイがペーストされた最後 の行が用いられます。pasteboard-row 引数が省略され,かつ仮想ディスプレイが1度 もペーストされなかったことがない場合には1行目が用いられます。

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

指定された仮想ディスプレイの1カラム目が置かれるペースト ボードのカラム。pasteboard-column 引数は,カラム位置を格納した符号付きロング ワードのアドレスです。

pasteboard-columm 引数が省略された場合,仮想ディスプレイがペーストされた 最後のカラムが用いられます。pasteboard-columm 引数が省略され,かつ仮想ディス プレイが1度もペーストされなかったことがない場合には,1カラム目が用いられます。

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

display-id 引数で指定された仮想ディスプレイをその下にペー ストする仮想ディスプレイの識別子。top-display-id 引数は省略可能で,この識別子 を格納した符号なしロングワードのアドレスです。この引数で指定された仮想ディス プレイはすでにペーストされていなくてはいけません。

説明

top-display-id 引数が指定されていない場合,SMG$PASTE_ VIRTUAL_DISPLAYはペーストボードに仮想ディスプレイを置き,仮想ディスプレイを表 示可能にします。top-display-id 引数が指定されている場合は, SMG$PASTE_VIRTUAL_DISPLAYは top-display-id 引数で指定された仮想ディスプレイの 下に display-id 引数で指定された仮想ディスプレイをペーストします。この場合, top-display-id 引数で指定された仮想ディスプレイはすでにペーストされていなくて はなりません。

仮想ディスプレイがバッチ処理されている場合はこのルーチンを使用してはいけま せん。

戻される状態値

SS$_NORMAL 正常終了。
SMG$_ILLBATFNC 仮想ディスプレイはバッチ処理されています。誤操作 です。
SMG$_INVDIS_ID display-id 引数が誤ってい ます。
SMG$_INVPAS_ID pasteboard-id 引数が誤って います。
SMG$_WRONUMARG 引数の数が誤っています。


SMG$POP_VIRTUAL_DISPLAY ―Delete a Series of Virtual Displays

Delete a Series of Virtual Displaysルーチンは,指定された仮想ディスプレイ を削除し,さらに指定されたペーストボード上の指定された仮想ディスプレイの上に ペーストされているすべてのディスプレイを削除します。

形式

    SMG$POP_VIRTUAL_DISPLAY   display-id ,pasteboard-id

戻り値

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

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

ディスプレイの削除操作が実行されるペーストボードを指定し ます。pasteboard-id 引数は,ペーストボード識別子を格納した符号なしロングワー ドのアドレスです。

説明

SMG$POP_VIRTUAL_DISPLAYルーチンは,指定されたペーストボードから1 つ以上のディスプレイを削除します(単にペーストを取り消すだけではありません)。 この場合,指定されたディスプレイから削除を開始し,その後,そのディスプレイよ りペースト順序が上にあるすべてのディスプレイも削除します(つまり,指定されたデ ィスプレイの後でペーストされたすべてのディスプレイを削除します)。

戻される状態値

SS$_NORMAL 正常終了。
SMG$_INVDIS_ID display-id 引数に誤りがあります。
SMG$_INVPAS_ ID pasteboard-id 引数に誤りがあります。
SMG$_WRONUMARG 引数の数が誤っています。


SMG$PUT_CHARS ―Write Characters to a Virtual Display

Write Characters to a Virtual Displayルーチンは,仮想ディスプレイ内に指定 されたテキストを書き込みます。

形式

    SMG$PUT_CHARS   display-id ,text [,start-row] [,start-column]
                   [,flags] [,rendition-set] [,rendition-complement]
                   [,character-set]

戻り値

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

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

仮想ディスプレイへ書き込まれる文字。text 引数は,文字列 を示すディスクリプタのアドレスです。

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 引数は,カラム位置 を格納した符号付きロングワードのアドレスです。この引数を省略した場合は,出力 は現在のカラムから開始されます。全角文字の右半分からカラムが始まる場合は,そ の文字の左半分は未定義文字になります。

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

文字書き込み前の動作を指定する省略可能なビット・マスク。 flags 引数は,フラグを格納した符号なしロングワードのアドレスです。この引数に 対して指定できる値は次のとおりです。

0 行を消去しないことを指定します(省略時の設定値)。
SMG$M_ERASE_LINE 行全体を消去します。
SMG$M_ERASE_TO_ EOL 行の残りの部分を消去します。

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

属性指定子。rendition-set 引数は省略可能で,ロングワード・ ビット・マスクのアドレスです。この引数で指定する属性が仮想ディスプレイ上に設 定されます。この引数に対して指定できる値は次のとおりです。

SMG$M_BLINK 点滅する文字を表示します。
SMG$M_BOLD 通常の輝度より高い輝度で文字を表示します。
SMG$M_INVISIBLE 表示されない文字を指定します。つまり,仮想 ディスプレイに存在していても,ペーストボードに表示されない文字を指定します。
SMG$M_ REVERSE 文字を反転表示します。つまり,仮 想表示の現在のシステム設定値の属性とは逆の状態で表示します。
SMG$M_UNDERLINE 下線を付けた文字を表示します。
SMG$M_USER1からSMG$M_ USER8 ユーザ定義属性を表示します。

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

属性補足指定子。rendition-complement 引数は省略可能で, ロングワード・ビット・マスクのアドレスです。この引数で指定する補足的な属性が 仮想ディスプレイ上に設定されます。rendition-set 引数で指定できる引数はすべて, rendition-complement 引数で補足指定することができます。

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

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

挿入されるテキストの文字集合。character-set 引数は,文字 集合コードを格納した符号なしロングワードのアドレスです。この引数を省略した場 合は,SMG$CREATE_VIRTUAL_DISPLAYルーチンまたはSMG$CHANGE_VIRTUAL_ DISPLAYルー チンで設定された値が使用されます。

文字集合(コードセット)
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漢字コードセット

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

説明

SMG$PUT_CHARSルーチンはテキストを指定された仮想ディスプレイに書 き込み,既存のテキストを置換します。このルーチンは1行だけを書き込みます。既存 のテキストを保存して,新しいテキストを書き込む場合は,SMG$INSERT_CHARSルーチ ンを使用します。

flags 引数を省略した場合は,SMG$PUT_CHARSルーチンは,新しいテキストが書き 込まれる文字位置だけを変更します。しかし,flags 引数に対して SMG$M_ERASE_LINE を指定することにより,新しいテキストを書き込む前に行を消去することができます。 また,flags 引数にSMG$M_ERASE_TO_ EOLを指定することにより,テキストを書き込ん だ後で残りの行を消去することも可能です。カーソルは,最後に書き込まれたテキス トのすぐ後の文字位置に設定されます。仮想ディスプレイからあふれた分の文字は切 り捨てられますが,仮想ディスプレイに対して SMG$M_TRUNC_ICON属性が設定されてい る場合には,SMG$PUT_CHARSルーチンが行の一部を切り捨てたことを示すアイコンを出 力します。

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

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

戻される状態値

SS$_NORMAL 正常終了。
LIB$_INVSTRDES 文字列ディスクリプタが誤っています。
SMG$_ INVCOL カラム位置が誤っています。
SMG$_INVDIS_ID display-id 引数が誤っています。
SMG$_INVROW 行の位置が誤っています。
SMG$_ WILUSERMS ペーストボードがビデオ・ターミナルでありません。
SMG$_WRONUMARG 引数の数が誤っています。

  1. C+
    C This DEC FORTRAN example program demonstrates the use of
    C SMG$PUT_CHARS.
    C-
    
            INTEGER SMG$CREATE_VIRTUAL_DISPLAY, SMG$CREATE_PASTEBOARD
            INTEGER SMG$PASTE_VIRTUAL_DISPLAY,  SMG$PUT_CHARS
            INTEGER DISPLAY1, PASTE1, ROWS, COLUMNS, BORDER, STATUS
    C+
    C Create the virtual display. To give it a border, set BORDER = 1.
    C No border would be BORDER = 0.
    C-
            ROWS = 7
            COLUMNS = 50
            BORDER = 1
    
            STATUS = SMG$CREATE_VIRTUAL_DISPLAY
         1        (ROWS, COLUMNS, DISPLAY1, BORDER)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
    C+
    C Create the pasteboard.
    C-
    
            STATUS = SMG$CREATE_PASTEBOARD (PASTE1)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
    C+
    C Put data in the virtual display.
    C-
    
            STATUS = SMG$PUT_CHARS ( DISPLAY1,
         1        ' This virtual display has 7 rows and 50 columns.', 2, 1 )
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
            STATUS = SMG$PUT_CHARS ( DISPLAY1,
         1        ' This is a bordered virtual display.', 4, 1 )
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
            STATUS = SMG$PUT_CHARS ( DISPLAY1,
         1        ' SMG$PUT_CHARS puts data in this virtual display.', 6, 1 )
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
    C+
    C Paste the virtual display.
    C-
    
            STATUS = SMG$PASTE_VIRTUAL_DISPLAY ( DISPLAY1, PASTE1, 4, 15 )
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
            END
    
    このFORTRANプログラムによって生成される出力は,図 30に示すとおりです。

    図 SMG-30 SMG$PUT_CHARSルーチンを呼ぶFORTRANプログラムに よって生成される出力


SMG$PUT_CHARS_HIGHWIDE ―Write Double-Height Double-Width Characters

The Write Double-Height Double-Width Charactersルーチンは仮想ディスプレイ に4倍角の文字を書き込みます。

形式

    SMG$PUT_CHARS_HIGHWIDE   display-id ,text [,start-row]
                            [,start-column] [,rendition-set]
                            [,rendition-complement] [,character-set]

戻り値

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

引数

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

4倍角の文字が書き込まれる仮想ディスプレイを指定します。 display- id 引数は,この仮想ディスプレイ識別子を格納した符号なしロングワード のアドレスです。

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

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

仮想ディスプレイへ書き込まれる文字。text 引数は,文字列 を示すディスクリプタのアドレスです。

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

文字書き込み開始行。start-row 引数は,開始行番号を格納し た符号付きロングワードのアドレスです。start-row 引数が省略されている場合,ある いはゼロに等しい場合は出力は現在の行から始まります。

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

文字書き込み開始カラム。start-column 引数は,開始カラム 番号を格納した符号付きロングワードのアドレスです。start-column 引数が省略され ている場合,あるいはゼロに等しい場合は,出力は現在のカラムから始まります。全 角文字の右半分からカラムが始まる場合は,その文字の左半分は未定義文字になりま す。

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-complement
OpenVMS用法mask_longword
データ型longword (unsigned)
アクセスread only
受け渡し方by reference

属性補足指定子。rendition-complement 引数は省略可能な, ロングワード・ビット・マスクのアドレスであり,このロングワード・ビット・マス ク内の各属性を設定すると,ディスプレイ内の対応する属性が補足されます。 rendition-set 引数に指定できる属性はすべて,rendition-complement引数で補足で きます。

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 属性をオフに設定する。

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

挿入されるテキストの文字集合。character-set 引数は,文字 集合コードを格納した符号なしロングワードのアドレスです。この引数を省略した場 合は,SMG$CREATE_VIRTUAL_DISPLAYルーチンまたはSMG$CHANGE_VIRTUAL_ DISPLAYルー チンで設定された値が使用されます。

文字集合(コードセット)
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漢字コードセット

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

説明

SMG$PUT_CHARS_HIGHWIDEルーチンは指定された仮想ディスプレイに4倍 角の文字を書き込みます。対応するペーストボードの行は,半角/全角文字と4倍角文 字を混在して格納することはできません。その行が半角/全角文字を格納していた場合 には,その部分は空白になります。テキストが1行よりも短い場合は,空白が埋め込ま れます。仮想カーソルは,最後に書き込まれたテキストのすぐ後の文字位置に設定さ れます。

ターミナルが4倍角文字をサポートしていない場合は,同じ文字が2行にわたって表 示されます。

仮想ディスプレイからあふれた分の文字は切り捨てられますが,仮想ディスプレイ に対してSMG$M_TRUNC_ICON属性が設定されている場合には,SMG$PUT_CHAR_HIGHWIDEルー チンが行の一部を切り捨てたことを示すアイコンを出力します。

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

戻される状態値

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


SMG$PUT_CHARS_MULTI ―Put Text with Multiple Renditions to Display

The Put Text with Multiple Renditions to Displayルーチンは,仮想ディスプ レイに複数のレンディションで,テキストを書き込みます。

形式

    SMG$PUT_CHARS_MULTI   display-id ,text [,start-row]
                         [,start-column] [,flags] [,rendition-string]
                         [,rendition-complement] [,character-set]

戻り値

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

引数

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

影響を受ける仮想ディスプレイの識別子。display-id 引数は, この仮想ディスプレイ識別子を格納した符号なしロングワードのアドレスです。

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

出力されるテキスト。text 引数は,テキストを示すディスク リプタのアドレスです。

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 引数は,カラム位置 を格納した符号付きロングワードのアドレスです。この引数を省略した場合は,出力 は現在のカラムから開始されます。全角文字の右半分からカラムが始まる場合は,そ の文字の左半分は未定義文字になります。

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

文字書き込み前の動作を指定する省略可能なビット・マスク。 flags 引数は,フラグを格納した符号なしロングワードのアドレスです。この引数に 対して指定できる値は次のとおりです。

0 行を消去しないことを指定します(省略時の設定値)。
SMG$M_ERASE_LINE 行全体を消去します。
SMG$M_ERASE_TO_ EOL 行の残りの部分を消去します。

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

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

全角文字の左半分と右半分に違う属性が指定された場合は,全角文字の左半分に指 定された属性がその全角文字に適用されます。

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

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

ビデオ属性を制御するビット・マスク文字列(省略可能)。 rendition- complement 引数は省略可能であり,ロングワード・ビット・マスクのア ドレスです。このロングワード・ビット・マスクの各属性を設定すると,仮想ディス プレイ内の対応するカラム属性は補足されます。全角文字の左半分と右半分に違う補 足属性が指定された場合は,全角文字の左半分に指定された補足属性がその全角文字 に適用されます。

rendition-string 引数と rendition-complement 引数の両方に,同じビットを指 定した場合は,最初に rendition-string 引数が評価され,その後 rendition-complement 引数が評価されます。これら2つの引数を組み合わせて使用す ることにより,ユーザは1回のプロシージャ呼び出しで仮想ディスプレイの各属性を制 御することができます。各属性で次の変換が可能です。

設定 補足 動作
0 0 属性を省略時の状態に設定する。
1 0 属性をオンに設定する。
0 1 属性を省略時の逆の状態に設定する。
1 1 属性をオフに設定する。

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

挿入されるテキストの文字集合。character-set 引数は,文字 集合コードを格納した符号なしロングワードのアドレスです。この引数を省略した場 合は,SMG$CREATE_VIRTUAL_DISPLAYルーチンまたはSMG$CHANGE_VIRTUAL_ DISPLAYルー チンで設定された値が使用されます。

文字集合(コードセット)
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漢字コードセット

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

説明

SMG$PUT_CHARS_MULTIルーチンは,仮想ディスプレイに多様なレンディ ションでテキストを書き込むことを可能にします。SMG$PUT_CHARS_ MULTIルーチンは, 指定された位置にある既存のテキストを上書きします。既存のテキストを保存し,新 しいテキストを書き込む場合には,SMG$INSERT_CHARSルーチンを使用してください。

省略時設定では,SMG$PUT_CHARS_MULTIルーチンは,新しいテキストが書かれてい る文字の位置のみを修正します。しかし,flags 引数にSMG$M_ ERASE_LINEを指定する ことによって,新しいテキストが書かれる前に行を消去することができます。また, flags 引数にSMG$M_ERASE_TO_EOLを指定することによって新しいテキストが書かれた 後に,残りの行を消去することができます。カーソルは,最後のテキストが書かれた すぐ後の位置に残ります。

このルーチンは,1行のみに書き込むということに注意してください。つまり,仮 想ディスプレイからあふれた分の文字は切り捨てられます。しかし,仮想ディスプレ イに対してSMG$M_TRUNC_ICON属性が設定されている場合には,SMG$PUT_CHARS_MULTIルー チンが行の一部を切り捨てたことを示すアイコンを出力します。

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

戻される状態値

SS$_NORMAL 正常終了。
LIB$_INVSTRDES 文字列ディスクリプタが誤っています。
SMG$_INVARG 引数が誤っています。
SMG$_ INVCOL カラム番号の指定が誤っています。
SMG$_INVROW 行番号の指定が誤っています。
SMG$_WILUSERMS ペーストボードがビデオ・ターミナルでありません。
SMG$_WRONUMARG 引数の数が誤っています。


SMG$PUT_CHARS_WIDE ―Write Double-Width Characters

The Write Double-Width Charactersルーチンは,仮想ディスプレイに倍角の文字 を書き込みます。

形式

    SMG$PUT_CHARS_WIDE   display-id ,text [,start-row]
                        [,start-column] [,rendition-set]
                        [,rendition-complement] [,character-set]

戻り値

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

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

仮想ディスプレイに書き込まれる文字。text 引数は,テキス トを示すディスクリプタのアドレスです。

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 引数は,カラム位置 を格納した符号付きロングワードのアドレスです。この引数を省略した場合は,出力 は現在のカラムから開始されます。全角文字の右半分からカラムが始まる場合は,そ の文字の左半分は未定義文字になります。

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_ USER1からSMG$M_USER8 ユーザ定義属性を表示します。

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

属性補足指定子。rendition-complement 引数は省略可能で, ロングワード・ビット・マスクのアドレスです。この引数で指定する補足的な属性が 仮想ディスプレイ上に設定されます。rendition-set 引数で指定できる引数はすべて, rendition-complement 引数で補足指定することができます。

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

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

挿入されるテキストの文字集合。character-set 引数は,文字 集合コードを格納した符号なしロングワードのアドレスです。この引数を省略した場 合は,SMG$CREATE_VIRTUAL_DISPLAYルーチンまたはSMG$CHANGE_VIRTUAL_ DISPLAYルー チンで設定された値が使用されます。

文字集合(コードセット)
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漢字コードセット

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

説明

SMG$PUT_CHARS_WIDEルーチンは,倍角のテキストを指定された仮想デ ィスプレイに書き込みます。既存のテキストがある場合には,そこに上書きします。1 行に半角/全角文字と倍角文字を混在して格納することはできません。その行に半角/ 全角文字が書かれていた場合には,空白に書き直されます。仮想カーソルは,テキス トが書かれる最初の文字の位置におかれます。

仮想ディスプレイに対してSMG$M_TRUNC_ICON属性が設定されている場合には, SMG$PUT_CHAR_WIDEルーチンが行の一部を切り捨てたことを示すアイコンを出力します。

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

戻される状態値

SS$_NORMAL 正常終了。
LIB$_INVSTRDES 文字列ディスクリプタが誤っています。
SMG$_INVARG 引数が誤っています。
SMG$_ INVCOL カラム位置が誤っています。
SMG$_INVDIS_ID display-id 引数が誤っています。
SMG$_INVROW 行の位置が誤っています。
SMG$_ WILUSERMS ペーストボードがビデオ・ターミナルでありません。
SMG$_WRONUMARG 引数の数が誤っています。


SMG$PUT_HELP_TEXT ―Output Help Text to the Display

The Output Help Text to the Displayルーチンは,仮想ディスプレイ上に指定さ れたトピックのヘルプ・テキストを出力します。

形式

    SMG$PUT_HELP_TEXT   display-id [,keyboard-id] [,help-topic]
                       [,help-library] [,rendition-set]
                       [,rendition-complement] [,character-set]

戻り値

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

引数

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

ヘルプ・テキストが書き込まれる仮想ディスプレイを指定しま す。display-id 引数は仮想ディスプレイ識別子を格納した符号なしロン グワードのアドレスです。

仮想ディスプレイはペーストされていなければならず,重ねたりバッチ処理された りすることはできないので注意してください。

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

入力するために使用される仮想キーボードの識別子(省略可 能)。keyboard-id 引数は,仮想キーボード識別子を格納した符号なしロ ングワードのアドレスです。keyboard-id 引数が指定されない場合は,入力 はできません。

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

省略可能なヘルプ・トピック。help-topic 引数は,ヘルプ・ トピック文字列を示すディスクリプタのアドレスです。

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

省略可能なヘルプ・ライブラリの名前。help-library 引数は, ヘルプ・ライブラリの名前を示すディスクリプタのアドレスです。省略時の設定値は SYS$HELP:HELPLIB.HLBです。

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-complement
OpenVMS用法mask_longword
データ型longword (unsigned)
アクセスread only
受け渡し方by reference

属性補足指定子。rendition-complement 引数は省略可能であ り,ロングワード・ビット・マスクのアドレスです。rendition-set 引数に指定でき る属性はすべて,rendition-complement 引数によって補足できます。

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 属性をオフに設定する。

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漢字コードセット

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

説明

SMG$PUT_HELP_TEXTルーチンは,指定された仮想ディスプレイに指定さ れたトピックのヘルプ・テキストを戻し,出力します。テキストは仮想スクロール領 域に出力されます。keyboard-id 引数を指定した場合には,仮想スクロール領域に最 後の行が出力されたときに,入力を要求するプロンプトが表示されます。このプロン プトに対して,<Return>キーを押せばそのまま継続して表示され,新しいトピック を入力すれば,それに対するヘルプ・テキストを受け取ることができます。

display-id 引数によって指定される仮想ディスプレイは,バッチ処理されたりビ ューポートを格納したりできません。keyboard-id 引数が指定された場合には,仮想 ディスプレイは重ねることはできません。また,仮想ディスプレイは少なくとも3行な くてはなりません。

Super DEC漢字,DEC漢字文字,JISカタカナ文字, ASCII文字以外で構成されたヘ ルプ・トピック文字列はサポートしていません。

戻される状態値

SS$_NORMAL 正常終了。
SMG$_ILLBATFNC 仮想ディスプレイ,ペーストボードがバッチ処理され ています。
SMG$_INVARG 引数が誤っています。
SMG$_INVDIS_ID display-id 引数に誤りがあります。
SMG$_NOTPASTED display-id 引数によって指定された仮想 ディスプレイがペーストされていません。
LIB$_xxxx LIB$FIND_IMAGE_SYMBOLから戻された状態値。
LBR$_xxxx LBR$OUTPUT_HELP から戻された状態値。
SMG$_xxxx SMG$SET_ CURSOR_ABS,SMG$CHECK_FOR_OCCLUSIONから戻され た状態値。


SMG$PUT_LINE ―Write Line to Virtual Display

Write Line to Virtual Displayルーチンは,1行のテキストを仮想ディスプレイ に書き込みます。

形式

    SMG$PUT_LINE   display-id ,text [,line-advance] [,rendition-set]
                  [,rendition-complement] [,flags] [,character-set]
                  [,direction]

戻り値

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

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

書き込まれる文字。text 引数は,文字列を示すディスクリプ タのアドレスです。

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

行書き込み後のスクロール行数。line-advance 引数は,進め る行数を格納した符号付きロングワードのアドレスです。この引数を省略した場合は, 1が設定されます。0を指定すると,SMG$PUT_LINEルーチンは既存のテキストに上書き します。

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

属性指定子。rendition-set 引数は省略可能で,ロングワード・ ビット・マスクのアドレスです。この引数で指定された属性が仮想ディスプレイ上に 設定されます。この引数に対して指定できる値は次のとおりです。

SMG$M_BLINK 点滅する文字を表示します。
SMG$M_BOLD 通常の輝度より高い輝度で文字を表示します。
SMG$M_INVISIBLE 表示されない文字を指定します。つまり,仮想 ディスプレイに存在していても,ペーストボードに表示されない文字を指定します。
SMG$M_ REVERSE 文字を反転表示します。つまり,仮 想表示の現在のシステム設定値の属性とは逆の状態で表示します。
SMG$M_UNDERLINE 下線を付けた文字を表示します。
SMG$M_USER1からSMG$M_ USER8 ユーザ定義属性を表示します。

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

属性補足指定子。rendition-complement 引数は省略可能で, ロングワード・ビット・マスクのアドレスです。この引数で指定する補足的な属性が 仮想ディスプレイ上に設定されます。rendition-set 引数で指定できる引数はすべて, rendition-complement 引数で補足指定することができます。

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

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

動作指定ビット・マスク。flags 引数は省略可能で,フラグを 格納した符号なしロングワードのアドレスです。テキストが1行で格納できない場合に 実行する動作を指定します。この引数に対して指定できる値は次のとおりです。

0 自動改行しないことを指定します(省略時の設定値)。
SMG$M_WRAP_CHAR 行の最後の文字で自動改行します。
SMG$M_WRAP_WORD 行の最後の空白で自動改行します。

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

出力されるテキストの文字集合。character-set 引数は,文字 集合コードを格納した符号なしロングワードのアドレスです。この引数を省略した場 合は,SMG$CREATE_VIRTUAL_DISPLAYルーチンまたはSMG$CHANGE_VIRTUAL_ DISPLAYルー チンで設定された値が使用されます。

文字集合(コードセット)
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漢字コードセット

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

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

スクロール方向。direction 引数は,方向コードを格納したロ ングワード・ビット・マスクのアドレスです。この引数に対して指定できる値は SMG$M_UPとSMG$M_DOWNです。この引数を省略した場合は,SMG$M_UPが設定されます。

説明

SMG$PUT_LINEルーチンは,現在の仮想カーソルの位置からテキストを 仮想ディスプレイに書き込みます。テキストが1番下または1番上の行に到達した後(ス クロールの方向に応じて異なる)このルーチンを呼び出すと,仮想ディスプレイはスク ロールします。指定されたテキストが1行より短い場合は,必要に応じて空白が埋め込 まれます。

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

SMG$PUT_LINEルーチンを呼び出した後,仮想カーソルの位置は出力の対象となる 次の行の1カラム目に設定されます。出力の対象となる次の行は,line-advance 引数 と direction 引数によって決定されます。SMG$PUT_LINEルーチンを続けて呼び出して も,前の出力の上に新しい出力が重ならないように,line-advance 引数のシステム設 定値は1になっています。仮想ディスプレイ上にテキスト行を書き込むための日本語SMG ルーチンとしては,他に SMG$INSERT_LINEルーチンがあります。

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

DEC漢字文字集合を使用している際に,現在の仮想カーソルの位置が全角文字の右 半分である場合は,その文字の左半分は未定義文字になります。また,あふれる文字 が切り捨てられる際に,全角文字の右半分から切り捨てられる場合は,その文字の左 半分は未定義文字になります。

戻される状態値

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

  1. C+
    C This DEC FORTRAN example program demonstrates the use of SMG$PUT_LINE.
    C-
    
    C+
    C Include the SMG definitions. In particular, we want SMG$M_BORDER and
    C SMG$M_UNDERLINE.
    C-
    
            IMPLICIT INTEGER (A-Z)
            INCLUDE '($SMGDEF)'
            CHARACTER*30 TEXT(3)
    
    C+
    C Create a virtual display with a border.
    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 Create the pasteboard.
    C-
    
            STATUS = SMG$CREATE_PASTEBOARD (PASTE1)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
    C+
    C Put data in the virtual display.
    C-
    
            TEXT(1) = 'This virtual display has 7'
            TEXT(2) = 'rows and 50 columns.'
            TEXT(3) = 'Text entered by SMG$PUT_LINE.'
    
    C+
    C After the first line of text is printed, call SMG$PUT_LINE to
    C advance two lines.
    C-
    
            STATUS = SMG$PUT_LINE ( DISPLAY1, TEXT(1), 2 )
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
    C+
    C Now, use SMG$PUT_LINE to underline the next line of text.
    C Notice that 30 characters are being underlined. Advance 1
    C line of text after displaying the line.
    C-
    
            STATUS = SMG$PUT_LINE ( DISPLAY1, TEXT(2), 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 ( DISPLAY1, TEXT(3) )
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
    C+
    C Paste the virtual display.
    C-
    
            STATUS = SMG$PASTE_VIRTUAL_DISPLAY ( DISPLAY1, PASTE1, 4, 15 )
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
            END
    
    このFORTRANプログラムによって生成される出力は 図 SMG-31に示すとおりです。

    図 SMG-31 SMG$PUT_LINEルーチンを呼び出すFORTRANプログラム によって生成される出力

    次のプログラムは,SMG$PUT_LINEルーチンの新しい direction 引数の使用を示してい ます。この引数を用いるため,SMG$PUT_WITH_SCROLLルーチンは必要なくなりました。

  2. C+
    C This DEC FORTRAN example program demonstrates the use of the DIRECTION
    C parameter in the SMG$PUT_LINE routine.
    C
    C The DIRECTION parameter in SMG$PUT_LINE makes SMG$PUT_WITH_SCROLL
    C an obsolete routine. This example is the same as the SMG$PUT_WITH_SCROLL
    C routine, except that the calls to SMG$PUT_WITH_SCROLL have been
    C replaced by calls to SMG$PUT_LINE.
    C-
           INCLUDE '$SMGDEF'
    
           IMPLICIT INTEGER*4 (A-Z)
    
    C+
    C Call SMG$CREATE_PASTEBOARD to establish the terminal screen
    C as a pasteboard.
    C-
    
           STATUS = SMG$CREATE_PASTEBOARD (NEW_PID)
           IF (.NOT. STATUS) CALL LIB$STOP(%VAL(STATUS))
    C+
    C Using SMG$CREATE_VIRTUAL_DISPLAY, establish a virtual display region.
    C-
    
           STATUS = SMG$CREATE_VIRTUAL_DISPLAY (5,80,DISPLAY_ID)
           IF (.NOT. STATUS) CALL LIB$STOP(%VAL(STATUS))
    
    C+
    C Paste the virtual display to the screen, starting at
    C row 10, column 15, by calling SMG$PASTE_VIRTUAL_DISPLAY.
    C-
           STATUS = SMG$PASTE_VIRTUAL_DISPLAY(DISPLAY_ID,NEW_PID,10,15)
           IF (.NOT. STATUS) CALL LIB$STOP(%VAL(STATUS))
    C+
    C Define a scrolling region through a call to
    C SMG$SET_DISPLAY_SCROLL_REGION.
    C-
    
           STATUS = SMG$SET_DISPLAY_SCROLL_REGION(DISPLAY_ID,1,5)
           IF (.NOT. STATUS) CALL LIB$STOP(%VAL(STATUS))
    C+
    C Call SMG$PUT_LINE and SMG$ERASE_LINE to write three
    C scrolling lines to the screen.  The first line will be underlined,
    C the second blinking, and the third in reverse video.
    C-
    
           DO I = 1,10
           IF ((I/2) + (I/2) .EQ. I) THEN
                   DIR = SMG$M_UP
           ELSE
                   DIR = SMG$M_DOWN
           ENDIF
    
           STATUS = SMG$PUT_LINE (DISPLAY_ID,
         1     'This line is  underlined',,SMG$M_UNDERLINE,,,,DIR)
           IF (.NOT. STATUS) CALL LIB$STOP(%VAL(STATUS))
    
           STATUS = SMG$ERASE_LINE(DISPLAY_ID)
           IF (.NOT. STATUS) CALL LIB$STOP(%VAL(STATUS))
    
           STATUS = SMG$PUT_LINE (DISPLAY_ID,'This line is blinking', ,
         1      SMG$M_BLINK,,,,DIR)
           IF (.NOT. STATUS) CALL LIB$STOP(%VAL(STATUS))
    
           STATUS = SMG$ERASE_LINE (DISPLAY_ID)
           IF (.NOT. STATUS) CALL LIB$STOP(%VAL(STATUS))
    
           STATUS = SMG$PUT_LINE (DISPLAY_ID,'This line is reverse
         1      video',,SMG$M_REVERSE,,,,DIR)
           IF (.NOT. STATUS) CALL LIB$STOP(%VAL(STATUS))
    
           STATUS = SMG$ERASE_LINE (DISPLAY_ID)
           IF (.NOT. STATUS) CALL LIB$STOP(%VAL(STATUS))
           ENDDO
    
           END
    


SMG$PUT_LINE_HIGHWIDE ―Write Double-Height and Double-Width Line

The Write Double-Height and Double-Width Lineルーチンは1行のテキストを4倍 角の文字で書き込みます。

形式

    SMG$PUT_LINE_HIGHWIDE   display-id ,text [,line-advance]
                           [,rendition-set] [,rendition-complement]
                           [,flags] [,character-set]

戻り値

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

引数

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

仮想ディスプレイ識別子。display-id 引数は仮想ディスプレ イ識別子を格納した符号なしロングワードのアドレスです。

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

仮想ディスプレイへ書き込まれる文字。text 引数は,文字列 を示すディスクリプタのアドレスです。

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

行書き込み後のスクロール行数。line-advance 引数は,進め る行数を格納した符号付きロングワードのアドレスです。この引数は省略可能です。

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

属性指定子。rendition-set 引数は省略可能で,ロングワード・ ビット・マスクのアドレスです。この引数で指定された属性が仮想ディスプレイ上に 設定されます。この引数に対して指定できる値は次のとおりです。

SMG$M_BLINK 点滅する文字を表示します。
SMG$M_BOLD 通常の輝度より高い輝度で文字を表示します。
SMG$M_INVISIBLE 表示されない文字を指定します。つまり,仮想 ディスプレイに存在していても,ペーストボードに表示されない文字を指定します。
SMG$M_ REVERSE 文字を反転表示します。つまり,仮 想表示の現在のシステム設定値の属性とは逆の状態で表示します。
SMG$M_UNDERLINE 下線を付けた文字を表示します。
SMG$M_USER1からSMG$M_ USER8 ユーザ定義属性を表示します。

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

属性補足指定子。rendition-complement 引数は省略可能で, ロングワード・ビット・マスクのアドレスです。この引数で指定する補足的な属性が 仮想ディスプレイ上に設定されます。rendition-set 引数で指定できる引数はすべて, rendition-complement 引数で補足指定することができます。

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

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

動作指定ビット・マスク。flags 引数は省略可能で,フラグを 格納した符号なしロングワードのアドレスです。テキストが1行で格納できない場合に 実行する動作を指定します。この引数に対して指定できる値は次のとおりです。

0 自動改行しないことを指定します(省略時の設定値)。
SMG$M_WRAP_CHAR 行の最後の文字で自動改行します。
SMG$M_WRAP_WORD 行の最後の空白で自動改行します。

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

挿入されるテキストの文字集合。character-set 引数は,文字 集合コードを格納した符号なしロングワードのアドレスです。この引数を省略した場 合は,SMG$CREATE_VIRTUAL_DISPLAYルーチンまたはSMG$CHANGE_VIRTUAL_ DISPLAYルー チンで設定された値が使用されます。

文字集合(コードセット)
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漢字コードセット

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

説明

SMG$PUT_LINE_HIGHWIDEルーチンは,仮想ディスプレイに,4倍角文字 のテキスト行を書き込むために使用されます。このルーチンは,現在の仮想カーソル の位置から行末まで書き込みます。テキストが1行よりも短い場合は,空白が埋め込ま れます。

仮想ディスプレイの右側境界を越えたテキストは,flags 引数に制御されます。 flags 引数で自動改行を指定した場合は,line-advance 引数で指定した行数だけスク ロールされ,あふれた文字を次の行に挿入するための空間が作成されます。flags 引 数で自動改行を指定していない場合は,あふれた文字は切り捨てられます。

SMG$PUT_LINE_HIGHWIDEルーチンを呼び出した後で,仮想カーソルの位置は出力の 対象となる,次の行の1カラム目に設定されます。出力の対象となる次の行は, line-advance 引数によって決定されます。line-advance引数のシステム設定値は2に なっていますので,引き続きSMG$PUT_LINE_ HIGHWIDEルーチンを呼び出しても,上書 きされることはありません。

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

戻される状態値

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


SMG$PUT_LINE_MULTI ―Write Line with Multiple Renditions to Display

The Write Line with Multiple Renditions to Displayルーチンは,複数の属性 を含む行を仮想ディスプレイに書き込みます。カーソル移動がともなう場合もありま す。

形式

    SMG$PUT_LINE_MULTI   display-id ,text ,rendition-string
                        [,rendition-complement] [,line-advance]
                        [,flags] [,direction] [,character-set]

戻り値

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

引数

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

行が書き込まれる仮想ディスプレイの識別子。display-id 引 数は,仮想ディスプレイの識別子を格納した符号なしロングワードのアドレスです。

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

仮想ディスプレイに書き込まれる文字。text 引数は,文字列 を示すディスクリプタのアドレスです。

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

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

全角文字の左半分と右半分に違う属性が指定された場合は,全角文字の左半分に指 定された属性がその全角文字に適用されます。

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

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

ビデオ属性を制御するビット・マスク文字列(省略可能)。 rendition- complement 引数は省略可能であり,ロングワード・ビット・マスクのア ドレスです。ビット・マスク内に属性が設定されている場合には,仮想ディスプレイ 内の対応するカラム属性が補足されます。全角文字の左半分と右半分に違う補足属性 が指定された場合は,全角文字の1バイト目に指定された補足属性がその全角文字に適 用されます。

同じビットが rendition-set 引数と rendition-complement 引数の両方に指定さ れている場合には,最初に rendition-set 引数が評価され,その後, rendition-complement 引数が評価されます。これらの2つの引数を組み合わせて使用 すれば,1回のプロシージャ呼び出しで仮想ディスプレイの各属性を制御できます。各 属性で次の変換が可能です。

設定 補足 動作
0 0 属性を省略時の状態に設定する。
1 0 属性をオンに設定する。
0 1 属性を省略時の逆の状態に設定する。
1 1 属性をオフに設定する。

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

行書き込み後のスクロール行数。line-advance 引数は,進め る行数を格納した符号付きロングワードのアドレスです。

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

テキストが1行に格納できない場合に,実行する動作を指定す るビット・マスク(省略可能)。flags 引数は,フラグを格納した符号なしロングワー ドのアドレスです。この引数に対して指定できる値は次のとおりです。

0 自動改行しないことを指定します(省略時の設定値)。
SMG$M_WRAP_CHAR 行の最後の文字で自動改行します。
SMG$M_WRAP_WORD 行の最後の空白で自動改行します。

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

スクロールの方向を指定するビット・マスク(省略可能)。 direction 引数は,方向コードを格納したロングワードのアドレスです。

指定できる値はSMG$M_UP,SMG$M_DOWNです。省略時の設定はSMG$M_UPです。

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

出力されるテキストの文字集合。character-set 引数は,文字 集合コードを格納した符号なしロングワードのアドレスです。この引数を省略した場 合は,SMG$CREATE_VIRTUAL_DISPLAYルーチンまたはSMG$CHANGE_VIRTUAL_ DISPLAYルー チンで設定された値が使用されます。

文字集合(コードセット)
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漢字コードセット

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

説明

SMG$PUT_LINE_MULTIルーチンによって,複数の属性を含む行を,仮想 ディスプレイに書き込むことができます。カーソル移動がともなう場合もあります。 SMG$PUT_LINE_MULTIルーチンは,現在の仮想カーソルの位置からその行の行末まで書 き込みます。テキストが1行より短い場合は,空白が埋め込まれます。

テキストが右側境界を超えている場合には,flags 引数の値によって制御されます。

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

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

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

戻される状態値

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


SMG$PUT_LINE_WIDE ―Write Double-Width Line

Write Double-Width Lineルーチンは,倍角のテキスト行を仮想ディスプレイに書 き込みます。

形式

    SMG$PUT_LINE_WIDE   display-id ,text [,line-advance]
                       [,rendition-set] [,rendition-complement]
                       [,flags] [,character-set]

戻り値

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

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

仮想ディスプレイへ書き込まれる文字。text 引数は,文字列 を示すディスクリプタのアドレスです。

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

行書き込み後のスクロール行数。line-advance 引数は,進め る行数を格納した符号付きロングワードのアドレスです。この引数は省略可能です。

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

属性指定子。rendition-set 引数は省略可能で,ロングワード・ ビット・マスクのアドレスです。この引数で指定された属性が仮想ディスプレイ上に 設定されます。この引数に対して指定できる値は次のとおりです。

SMG$M_BLINK 点滅する文字を表示します。
SMG$M_BOLD 通常の輝度より高い輝度で文字を表示します。
SMG$M_INVISIBLE 表示されない文字を指定します。つまり,仮想 ディスプレイに存在していても,ペーストボードに表示されない文字を指定します。
SMG$M_ REVERSE 文字を反転表示します。つまり,仮 想表示の現在のシステム設定値の属性とは逆の状態で表示します。
SMG$M_UNDERLINE 下線を付けた文字を表示します。
SMG$M_USER1からSMG$M_ USER8 ユーザ定義属性を表示します。

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

属性補足指定子。rendition-complement 引数は省略可能で, ロングワード・ビット・マスクのアドレスです。この引数で指定する補足的な属性が 仮想ディスプレイ上に設定されます。rendition-set 引数で指定できる引数はすべて, rendition-complement 引数で補足指定することができます。

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

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

テキストが,1行に格納できない場合に実行する動作を指定するビット・ マスク(省略可能)。flags 引数は,フラグを格納した符号なしロングワード のアドレスです。この引数に対して指定できる値は次のとおりです。

0 自動改行しないことを指定します(省略時の設定値)。
SMG$M_WRAP_CHAR 行の最後の文字で自動改行します。
SMG$M_WRAP_WORD 行の最後の空白で自動改行します。

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

出力されるテキストの文字集合。character-set 引数は,文字集合コー ドを格納した符号なしロングワードのアドレスです。この引数を省略した 場合は,SMG$CREATE_VIRTUAL_DISPLAYルーチンまたはSMG$CHANGE_VIRTUAL_ DISPLAYルーチンで設定された値が使用されます。

文字集合(コードセット)
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漢字コードセット

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

説明

SMG$PUT_LINE_WIDEルーチンは,倍角のテキストを仮想ディスプレイに 書き込みます。SMG$PUT_LINE_WIDEルーチンは,現在の仮想カーソルの位置からテキス トを書き始めます。テキストが1行より短い場合は,空白が埋め込まれます。

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漢字文字集合を使用する際に,全角文字の右半分から書き込み操作が始まる場 合は,その文字の左半分は未定義文字になります。また,行の一部が切り捨てられる 際に,全角文字の右半分から切り捨てられる場合は,その文字の左半分は未定義文字 になります。

戻される状態値

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

  1. C+
    C This DEC 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プログラムによって生成される出力は, 図 SMG-32に示すとおりです。

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


SMG$PUT_STATUS_LINE ―Output Line of Text to Hardware 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漢字コードセット

[1] DEC補助文字集合または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

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]ファンクション・キーを使用するため,ファンクション・キーと,行編集を同 時に許可することはできません。

かな漢字変換キーの定義は,SMG$DEFINE_KEYルーチンやSMG$ADD_KEY_DEFルーチン によるキー定義に優先されます。character-set 引数がSMG$C_ KANJIの場合には, 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漢字コードセット

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

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漢字文字集合であった場合には,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

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漢字コードセッ ト

[1] DEC補助文字集合または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 DEC 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プログラムによって生成される出力は, 図 SMG-33 に示すとおりです。

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


SMG$READ_KEYSTROKE ―Read a Single Character

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 引数を指定しなければなりません。

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 属性をオフに設定する。

説明

SMG$READ_KEYSTROKEルーチンは,指定された仮想キーボードからキー ストロークを読み込み,そのキーストロークの終了文字コードをSMG$K_TRM_keynameの 形式で戻します。読み込まれるキーストロークは画面にエコー表示されません。この キーストロークは標準的な英字,キーパッド・キーまたはファンクション・キー,ま たは矢印キー([↑],[↓],[←],[→])のいずれでもかまいません。

SMG$READ_KEYSTROKEルーチンを使用する場合には,ペーストボードと仮想ディス プレイの両方に対してディスプレイのバッチ処理を禁止しておかなければなりません。

VT100,VT200シリーズ,およびVT300シリーズのキーボードから,すべてのキーを 読み込むことができますが,以下は例外です。

一部のキーおよびキー定義はユーザが定義可能ですが,なるべく定義しないように してください。これらのキーとキー定義を使用した場合,日本語SMGはエラーを戻すわ けではありませんが,DCLレベルで次の特殊な方法で漢字ターミナルを設定していない 限り,これらのキーの組み合わせに割り当てた定義は実行されません。

これらの特殊なターミナル設定を使用することは望ましくありません。ターミナル・ ドライバに制御を与えるために省略時の設定を変更した場合,その結果がどのように なるかを十分理解していない限り,これらの特殊な設定を使用すると,予測できない 結果が発生することがあります。

戻される状態値

SS$_NORMAL 正常終了。
SS$_ABORT 実行中に入出力操作が強制終了されました(SMG$CANCEL_INPUT によって)。
SS$_CANCEL キューに登録中に入力操作 が取り消されました(SMG$CANCEL_INPUTによって)。
SMG$_EOF ファイルの最後。
SMG$_INVDIS_ID display-id 引数に誤りがあります。
SMG$_INVKBD_ ID keyboard-id 引数に誤りがあります。
SMG$_WRONUMARG 引数の数が誤っています。
SS$_xxx $QIOWから戻されたエラー。
LIB$_xxx LIB$SCOPY_R_DXから戻されたエラー。
RMS$_xxx $GETから戻されたエラー(RMS$_EOFを除く)。

  1. C+
    C This DEC FORTRAN example program demonstrates the use of
    C SMG$READ_KEYSTROKE.
    C-
    
    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 First, include the SMG definitions. In particular, we want SMG$M_BORDER.
    C-
    
            IMPLICIT INTEGER (A-Z)
            INCLUDE '($SMGDEF)'
            CHARACTER*3 TEXT
            CHARACTER*27 TEXT_OUTPUT
    
    C+
    C Use SMG$CREATE_VIRTUAL_DISPLAY to create a virtual
    C display with a border.
    C-
    
            ROWS = 7
            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 using SMG$CREATE_PASTEBOARD.
    C-
    
            STATUS = SMG$CREATE_PASTEBOARD ( PASTE1 )
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
    C+
    C Use SMG$CREATE_VIRTUAL_KEYBOARD to create a virtual keyboard.
    C-
    
            STATUS = SMG$CREATE_VIRTUAL_KEYBOARD ( KEYBOARD1 )
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
    C+
    C Using SMG$PASTE_VIRTUAL_DISPLAY, 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))
    
            STATUS = SMG$PUT_LINE ( DISPLAY1,
         1          'Enter the character K after the >> prompt.' )
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
            STATUS = SMG$PUT_LINE ( DISPLAY1,
         1          'This character will not be echoed as you type it.' )
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
            STATUS = SMG$PUT_LINE ( DISPLAY1,
         1  'The terminal character equivalent of K is displayed.' )
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
            STATUS = SMG$PUT_LINE ( DISPLAY1, ' ' )
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
    C+
    C Call SMG$READ_KEYSTROKE to read a keystroke from the virtual
    C pasteboard.
    C-
    
            STATUS = SMG$READ_KEYSTROKE ( KEYBOARD1, TERM_CHAR, '>>', ,
         1          DISPLAY1 )
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
            STATUS = SMG$PUT_LINE ( DISPLAY1, ' ' )
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
    C+
    C Use OTS$CVT_L_TI to convert the decimal value of TERM_CHAR to
    C a decimal ASCII text string.
    C-
    
            STATUS = OTS$CVT_L_TI ( TERM_CHAR, TEXT )
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
            TEXT_OUTPUT = ' TERMINAL CHARACTER IS: ' // TEXT
    
    C+
    C Call SMG$PUT_LINE and SMG$PUT_CHARS to print the decimal
    C ASCII text string.
    C-
    
            STATUS = SMG$PUT_LINE ( DISPLAY1, TEXT_OUTPUT )
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
            STATUS = SMG$PUT_CHARS ( DISPLAY1, TEXT, 7, 25 )
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
            END
    
    このFORTRANプログラムによって生成される出力は 図 SMG-34 に示すとおりです。

    図 SMG-34 SMG$READ_KEYSTROKEルーチンを呼び出すFORTRAN プログラムが生成する出力


SMG$READ_STRING ―Read String

Read Stringルーチンは,仮想キーボードから文字列を読み込みます。

形式

    SMG$READ_STRING   keyboard-id ,resultant-string [,prompt-string]
                     [,maximum-length] [,modifiers] [,timeout]
                     [,terminator-set] [,resultant-length]
                     [,word-terminator-code] [,display-id]
                     [,initial-string] [,rendition-set]
                     [,rendition-complement] [,terminator-string]
                     [,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ルーチンによって与えられます。

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

入力行が書き込まれる文字列。resultant-string 引数は,テ キストが書き込まれる文字列を示すディスクリプタのアドレスです。

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

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

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

読み込む最大バイト数を指定します。maximum-length 引数は, 読み込む最大バイト数を格納した符号付きロングワードのアドレスです。この引数に 対して指定できる最大値は512です。省略時の設定は512になります。

かな漢字変換を使用する場合には,変換中ではなく,変換後に maximum- length 引数に指定されたバイト数で変換された文字列は,切り捨てられます。ただし,変換バ ッファの最大長が512バイトであるため,512バイトを超える文字列は変換できません。 得られた文字列の最後が全角文字の左半分であった場合には,その文字の左半分は切 り捨てられ,maximum-length 引数よりも1バイト短い文字列が返されます。

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

オプションとして実行される動作を指定するビット・マスク( 省略可能)。modifiers 引数は,フラグを格納した符号なしロングワードのアドレスで す。

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

TRM$M_TM_CVTLOW 小文字を大文字に変換します。ASCII文字および 補助文字に対してのみ有効です。
TRM$M_TM_NOECHO 入力された文字を画面にエコー表示しません。入力文字列の文字集合としてDEC漢字文 字集合が指定された場合には無視されます。
TRM$M_ TM_PURGE 読み込み操作を実行する前に,先読みを可能にするバッファを消 去します。
TRM$M_TM_ TRMNOECHO 終了文字は入力さ れません。
TRM$M_TM_NOEDIT 拡張編集機能が禁止さ れます。入力文字列の文字集合としてDEC漢字文字集合が指定された場合には,行編集 は禁止されません。
TRM$M_TM_NORECALL 行再呼び出 し機能が禁止されます。

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

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

プロンプトを表示した後,入力操作が終了するまでに認められ る秒数を指定します。timeout 引数は,時間切れの値を格納した符号付きロングワー ドのアドレスです。

timeout 引数を指定した場合には,満了時間の前に入力されたすべての文字,ま たは終了キーが入力されるまでに入力されたすべての文字はresultant-string 引数に 戻されます。この引数を省略した場合には,終了文字が入力されるまで,入力操作は 有効です。

terminator-set
VMS用法:unspecified
データ型:unspecified
アクセス:read only
受け渡し方:by descriptor, fixed length

どの文字が終了文字として取り扱われるかを指定するマスク( 短い形式),またはこのようなマスクを示すディスクリプタ(長い形式)。 terminator-set 引数は,マスクを示すディスクリプタのアドレス

0〜31の範囲のASCII値を持つ終了文字を使用する場合には,2ロングワードで構成 される短い形式を使用してください。最初のロングワードは0であり,2番目のロング ワードは終了文字ビット・マスクです。このマスクを作成するには,適切な終了文字 の ASCII値に対応するビットを設定します。たとえば,[Ctrl/A] (ASCIIの1 )が終了 文字であることを指定するには,terminator-set マスクのビット1を設定します。

0〜31以外のASCII値を持つ終了文字を使用する場合には,長い形式を使用します。 まず,この形式のディスクリプタを作成してください。

マスク自体は短い形式の場合と同じ形式です。しかし,長い形式では,短い形式の場 合より包括的な終了文字集合を使用できます。たとえば,16バイトのマスク・サイズ の場合には,7ビットのASCII文字を終了文字として設定できますが,マスク・サイズ が32バイトの場合には,8ビット文字を終了文字として設定できます。1〜32バイトの マスク・サイズを使用できます。

終了文字マスクがすべて0の場合には,指定された終了文字は存在しません。その 場合,読み込み操作は,maximum-length 引数に指定された文字数が転送されたとき, または時間切れが満了したときに,読み込み操作を終了します。

terminator-set 引数を省略した場合には,終了文字集合はOpenVMSの省略時の終 了文字集合になります。詳しい説明は,『OpenVMS I/O User's Reference Manual』を 参照してください。

character-set 引数にSMG$C_KANJIが指定された場合には,かな漢字変換キーに設 定されているキーを終了文字として指定しても,終了文字として認識されません。

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

読み込まれたバイト数と,resultant-string 引数の最大サイ ズのどちらか小さい方が書き込まれます。resultant-length 引数は,読み込まれたバ イト数または最大サイズが書き込まれる符号なしワードのアドレスです。

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

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

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

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

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

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


注意

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


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

初期文字列(省略可能)。initial-string 引数は,フィールド の初期文字列を格納した省略可能な文字列を示すディスクリプタのアドレスです。文 字列はキーボードから入力されたかのように,ディスプレイの入力領域に書き込まれ ます。文字列は通常の方法で編集できます(TRM$M_TM_NOEDITが設定されていない場合)。 文字列長は maximum-length 引数より短くなければなりません。短くない場合には, SMG$READ_STRINGルーチンはただちに終了し,キーボード入力は受け付けられません。

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

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漢字コードセット

[1] DEC補助文字集合または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漢字文字集合の場合には,日本語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 DEC 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プログラムによって生成され る出力は図 SMG-35に示すとおりです。このプログラムは 入力を待ちます。カーソルは"prompt"という単語のすぐ後に移動します。

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

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

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


SMG$READ_VERIFY ―Read and Verify a String

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]

Returns

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漢字文字集合が指定された場合には無 視されます。
TRM$M_TM_R_ JUST 入力は右詰めされま す。入力文字列の文字集合としてDEC漢字文字集合とSuper DEC漢字が指定された場合 には無視されます。

修飾子についての詳しい説明は,『OpenVMS I/O User's Reference Manual』のター ミナル・ドライバの節を参照してください。TRM$ シンボルは,DECが提供 するシステム・シンボル・ライブラリ内の $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 ユーザ定義属性を表 示します。

rendition-set 引数を使用する場合には,display-id 引数を指定しなければなり ません。

rendition-complement
VMS用法:mask_longword
データ型:longword (unsigned)
アクセス: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 属性をオフに設定する。

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

読み込んだバイト数が書き込まれます。input-length 引数は, SMG$READ_VERIFYルーチンが読み込んだバイト数が書き込まれる,符号な しワードのアドレスです。

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

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漢字コードセット

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

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

説明

このルーチンは,指定された仮想キーボードから一連の文字を読み込み, そのシーケンスをピクチャ文字列に対して検査します。その後,読み込んだ文字を呼 び出し側に戻します。呼び出し側は,終了文字を示すコードを戻すことも指定できま す。表示属性の指定はプロンプト(プロンプトが存在する場合)と入力文字列のエコー 表示の両方に適用されます。

読み込み/検査操作についての詳しい説明は,『OpenVMS I/O User's Reference Manual』を参照してください。SMG$READ_VERIFYルーチンを使用する場合には,ペース トボードと仮想ディスプレイの両方に対して,ディスプレイのバッチ処理を禁止して おかなければなりません。

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

戻される状態値

SS$_NORMAL 正常終了。
SS$_ABORT 実行中に入出力操作が強制終了されました(SMG$CANDEL_INPUT ルーチンによって)。
SS$_CANCEL キューに登録中に 入力操作が取り消されました(SMG$CANCEL_INPUTルーチンによって)。
SMG$_DISREQ SMG$READ_VERIFYルーチンを呼び出したときに,右詰 めが指定されました。display-id 引数は,指定されませんでした。TERMTABLE.EXEか らこの漢字ターミナルに対してSCROLL_REVERSEシーケンスが検索されませんでした。 display-id 引数をSMG$READ_VERIFYルーチンの呼び出しに追加するか,またはSCROLL_ REVERSEシーケンスをTERMTABLE.EXEに追加してください。
SMG$_EOF ファイルの最後。
SMG$_INVCOL カラム番号の指定に誤りがあります。
SMG$_INVDIS_ID display-id 引数に誤りがあります。
SMG$_INVKBD_ID keyboard-id 引数に誤りがあります。
SMG$_LENNOTEQL picture-string 引数と initial-string 引数の 長さが等しくありません。
SMG$_LENMUSONE fill-character 引数と clear-character 引数の長さは1でなければなりません。
SMG$_WRONUMARG 引数の数が誤っています。
SS$_ xxx $QIOWから戻されたエラー。
JSY$_xxx JSY$から戻されたエラー。
LIB$_xxx LIB$SCOPY_R_DXから戻されたエラー。
RMS$_xxx $GETから戻されたエラー(RMS$_EOFを除く)。
IM$_ xxx IMLIBから戻されたエラー。


SMG$REMOVE_LINE ―Remove a Line from a Virtual Display

Remove a Line from a Virtual Displayルーチンは,SMG$DRAW_LINEまたは SMG$DRAW_RECTANGLEルーチンを使用して作成したラインを指定された仮想ディスプレ イから削除します。

形式

    SMG$REMOVE_LINE   display-id ,start-row ,start-column ,end-row
                     ,end-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 引数は,カラム番号を格納した符号付きロングワードのア ドレスです。

水平線削除の場合で start-column 引数が全角文字の右半分上であった場合,残る 左半分の部分は未定義文字になります。垂直線削除の場合で,start-column 引数が全 角文字上にあった場合には,それぞれの残る部分は未定義文字になります。

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

ラインの削除を終了する行を指定します。end-row 引数は,行 番号を格納した符号付きロングワードのアドレスです。

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

ラインの削除を終了するカラムを指定します。end-column 引 数は,カラム番号を格納した符号付きロングワードのアドレスです。

水平線削除の場合で end-column 引数が全角文字の左半分上であった場合,残る右 半分の部分は未定義文字になります。垂直線削除の場合で,end-column 引数が全角文 字上にあった場合には,それぞれの残る部分は未定義文字になります。

説明

SMG$REMOVE_LINEルーチンは,SMG$DRAW_LINEまたはSMG$DRAW_ RECTANGLEルーチンを使用して作成したラインを,指定された開始行/カラムから指定 された終了行/カラムまで削除します。

このルーチンはユーザが指定したラインを消去しますが,ラインの交点にあるライ ン描画文字は残されます(ライン描画文字は漢字ターミナルのライン描画文字集合です。 この文字集合を使用できない場合には,+,-,および|が使用されます)。

DEC漢字文字集合が使用されており,描画されたラインが全角文字に上にあった場 合には,その全角文字の残りの部分は未定義文字になります。

戻される状態値

SS$_NORMAL 正常終了。
SMG$_DIALINNOT 斜めのラインは削除できません。
SMG$_INVCOL カラム番号が誤っています。指定されたカラムは仮想ディ スプレイの外部です。
SMG$_INVROW 行番号が誤って います。指定された行は仮想ディスプレイの外部です。
SMG$_WRONUMARG 引数の数が誤っています。


SMG$REPAINT_SCREEN ―Repaint Current Pasteboard

Repaint Current Pasteboardルーチンは,日本語SMGルーチンによるもの以外の入 出力が実行された後,指定されたペーストボードを描き直します。

形式

    SMG$REPAINT_SCREEN   pasteboard-id

戻り値

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

引数

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

リペイントされるペーストボードを指定します。 pasteboard-id 引数は,ペーストボード識別子を格納した符号なしロングワードのア ドレスです。

説明

SMG$REPAINT_SCREENルーチンは,指定されたペーストボードを描き直 します。このルーチンは,外部エージェント(たとえば,ブロードキャスト・メッセー ジ)がペーストボードを乱したときに使用します。

戻される状態値

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

  1. C+
    C This DEC FORTRAN example program demonstrates
    C the use of SMG$REPAINT_SCREEN.
    C-
    
            IMPLICIT INTEGER (A-Z)
    
    C+
    C Create the virtual display by calling
    C SMG$CREATE_VIRTUAL_DISPLAY. To create
    C a border, we set BORDER = 1. No border
    C would be BORDER = 0.
    C-
            INCLUDE '($SMGDEF)'
            ROWS = 3
            COLUMNS = 50
            BORDER = 1
    
            STATUS = SMG$CREATE_VIRTUAL_DISPLAY
         1          (ROWS, COLUMNS, DISPLAY1, BORDER)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
    C+
    C Create the pasteboard using SMG$CREATE_PASTEBOARD.
    C-
    
            STATUS = SMG$CREATE_PASTEBOARD (PASTE1)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
    C+
    C Put data in the virtual display by calling SMG$PUT_CHARS.
    C-
    
            STATUS = SMG$PUT_CHARS ( DISPLAY1,
         1       ' This virtual display has 3 rows and 50 columns.', 1, 1 )
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
            STATUS = SMG$PUT_CHARS ( DISPLAY1,
         1       ' This is a bordered virtual display.', 2, 1 )
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
            STATUS = SMG$PUT_CHARS ( DISPLAY1,
         1       ' SMG$PUT_CHARS puts data in this virtual display.', 3, 1 )
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
    C+
    C Call SMG$PASTE_VIRTUAL_DISPLAY to paste the virtual display.
    C-
    
            STATUS = SMG$PASTE_VIRTUAL_DISPLAY ( DISPLAY1, PASTE1, 4, 15 )
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
    C+
    C Mess up the screen with some FORTRAN output.
    C-
    
            WRITE (6,*) 'Mess up the screen.'
            WRITE (6,*) 'More mess.'
    
    C+
    C Call SMG$REPAINT_SCREEN to repaint the screen.
    C-
    
            STATUS = SMG$REPAINT_SCREEN ( PASTE1 )
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
            END
    
    SMG$REPAINT_SCREENルーチンを呼び出す前にこのFORTRANプログラムが生成する出力は 図 SMG-37に示すとおりです。

    図 SMG-37 SMG$REPAINT_SCREENルーチンを呼び出す FORTRANプログラムが作成する出力

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

    図 SMG-38 SMG$REPAINT_SCREENルーチンを呼び出す FORTRANプログラムが生成する出力


SMG$REPASTE_VIRTUAL_DISPLAY ―Repaste Virtual Display

Repaste Virtual Displayルーチンは,仮想ディスプレイをペーストボードの新し い位置に移動します。ペースト順序も変更されます。

形式

    SMG$REPASTE_VIRTUAL_DISPLAY

                    display-id ,pasteboard-id ,pasteboard-row
                   ,pasteboard-column [,top-display-id]

戻り値

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

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

仮想ディスプレイを再ペーストするペーストボードを指定しま す。pasteboard-id 引数は,ペーストボード識別子を格納した符号なしロングワード のアドレスです。

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

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

指定された仮想ディスプレイの位置を示すペーストボードの行 番号を指定します。pasteboard-row 引数は,ペーストボード行番号を格納した符号付 きロングワードのアドレスです。

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

指定された仮想ディスプレイの位置を示すペーストボード・カ ラム番号を指定します。pasteboard-column 引数は,ペーストボードのカラム番号を 格納した符号付きロングワードのアドレスです。

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

display-id 引数によって指定される仮想ディスプレイがペー ストされるときに,その上になる仮想ディスプレイの識別子(省略可能)。top- display-id 引数は,仮想ディスプレイの識別子を格納した符号なしロングワードのア ドレスです。top-display-id 引数によって指定される仮想ディスプレイはすでにペー ストされていなければなりません。

説明

SMG$REPASTE_VIRTUAL_DISPLAYルーチンを使用すれば,仮想ディスプレ イをペーストボードの新しい位置に移動できます。このルーチンは SMG$UNPASTE_VIRTUAL_DISPLAYルーチンとSMG$PASTE_VIRTUAL_DISPLAYルーチンを呼び 出します。このルーチンを実行すると,ペースト順序も変更されます。再ペースト操 作が終了するまで,画面は変更されません。

このルーチンを使用すると,仮想ディスプレイはペースト順序の一番上になります。 ペースト順序を変更せずに,仮想ディスプレイを移動する場合には, SMG$MOVE_VIRTUAL_DISPLAYルーチンを使用します。top-display-id引数は省略可能で あり,この引数を指定した場合には,SMG$REPASTE_ VIRTUAL_DISPLAYルーチンは, top-display-id 引数によって指定される仮想ディスプレイの下に,display-id 引数 によって指定される仮想ディスプレイをペーストします。この場合,top-display-id 引数によって指定される仮想ディスプレイは,すでにペーストされていなければなり ません。

戻される状態値

SS$_NORMAL 正常終了。
SMG$_INVDIS_ID display-id 引数に誤りがあります。
SMG$_INVPAS_ ID pasteboard-id 引数に誤りがあります。
SMG$_WRONUMARG 引数の数が誤っています。

  1. C+
    C This DEC FORTRAN example program demonstrates the use of
    C SMG$REPASTE_VIRTUAL_DISPLAY and SMG$MOVE_VIRTUAL_DISPLAY.
    C-
    
            IMPLICIT INTEGER (A-Z)
    
    C+
    C Include the SMG definitions. In particular, we want SMG$M_BORDER.
    C-
    
            INCLUDE '($SMGDEF)'
    
    C+
    C Create a virtual display with a border by calling
    C SMG$CREATE_VIRTUAL_DISPLAY.
    C-
    
            ROWS = 3
            COLUMNS = 50
    
            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 Put data in the virtual display using SMG$PUT_CHARS.
    C-
    
            STATUS = SMG$PUT_CHARS ( DISPLAY1,
         1       ' This virtual display has 3 rows and 50 columns.', 1, 1 )
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
            STATUS = SMG$PUT_CHARS ( DISPLAY1,
         1       ' This is a bordered virtual display.', 2, 1 )
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
            STATUS = SMG$PUT_CHARS ( DISPLAY1,
         1       ' SMG$PUT_CHARS puts data in this virtual display.', 3, 1 )
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
    C+
    C Call SMG$PASTE_VIRTUAL_DISPLAY to paste the virtual display.
    C-
    
            STATUS = SMG$PASTE_VIRTUAL_DISPLAY ( DISPLAY1, PASTE1, 4, 15 )
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
    C+
    C Move the virtual display by calling SMG$MOVE_VIRTUAL_DISPLAY.
    C-
    
            STATUS = SMG$MOVE_VIRTUAL_DISPLAY ( DISPLAY1, PASTE1, 10, 5 )
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
    C+
    C Call SMG$REPASTE_VIRTUAL_DISPLAY to repaste the
    C original virtual display as it was.
    C-
    
            STATUS = SMG$REPASTE_VIRTUAL_DISPLAY ( DISPLAY1, PASTE1, 4, 15 )
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
            END
    
    SMG$MOVE_VIRTUAL_DISPLAYルーチンを呼び出す前に,このFORTRANプログラムが生成す る出力は,図 SMG-39に示すとおりです。

    図 SMG-39 SMG$MOVE_VIRTUAL_DISPLAYルーチンを呼び 出す前の出力

    SMG$MOVE_VIRTUAL_DISPLAYルーチンを呼び出した後の出力は,図 SMG-40に示すとおりです。

    図 SMG-40 SMG$MOVE_VIRTUAL_DISPLAYルーチンを呼び 出した後に表示される出力

    図 SMG-41は,SMG$REPASTE_ VIRTUAL_DISPLAYルー チンを呼び出した後に表示される最終的な出力を示しています。

    図 SMG-41 SMG$REPASTE_VIRTUAL_DISPLAYルーチンを呼 び出した後に表示される出力


SMG$REPLACE_INPUT_LINE ―Replace Input Line

Replace Input Lineルーチンは,再呼び出しバッファ内の指定された行を指定さ れた文字列に置き換えます。

形式

    SMG$REPLACE_INPUT_LINE   keyboard-id [,replace-string]
                            [,line-count] [,flags] [,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ルーチンによって与えられます。

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

再呼び出しバッファに入力される行を格納した文字列。 replace-string引数は,この文字列を指すディスクリプタのアドレスです。省略時の 設定は空文字列であり,最後に入力された行を削除します。

line-count
OpenVMS用法byte_unsigned
データ型byte (unsigned)
アクセスread only
受け渡し方by reference

置換する行数。line-count 引数は,replace-string 引数に置 換する行数を格納した符号なしバイトのアドレスです。line-count 引数の省略時の値 は1 (最後に入力した行)です。

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

任意に実行できる動作を指定します。flags 引数は,フラグを 格納した符号なしロングワードのアドレスです。指定できる値は以下のとおりです。

SMG$M_KEEP_CONTENTS replace-string 引数によって指定された文 字列は,line-count 引数によって指定された既存の文字列と置き換えられます。この フラグをループ内で使用すれば,アプリケーションから再呼び出しバッファに情報を プリロードすることができます。

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

文字集合指定子。再呼び出しバッファに入力される行, replace-string引数の文字集合。character-set 引数は,文字集合コードを格納した 符号なしロングワードのアドレスです。この引数を省略した場合のシステム設定値は, UNKNOWNです。

文字集合(コードセット)
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漢字コードセット

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

説明

SMG$REPLACE_INPUT_LINEルーチンは,再呼び出しバッファ内の要求さ れた行を指定された文字列に置き換えます。残りの行(line-count-1)は削除されます。 このルーチンは行継続の処理を補助するためのものです。

戻される状態値

SS$_NORMAL 正常終了。
LIB$_INSVIRMEM 仮想メモリが不足しています。
SMG$_INVKBD_ID keyboard-id 引数に誤りがあります。
SMG$_WRONUMARG 引数の数が誤っています。

  1. !+
    ! This FORTRAN example uses the routine
    ! SMG$REPLACE_INPUT_LINE to concatenate
    ! the last 2 lines in the recall buffer.
    !-
    
     IMPLICIT INTEGER (A-Z)
     INCLUDE '($SMGDEF)'
     INCLUDE '($SMGMSG)'
     CHARACTER*20 TEXT, TEXT1
    
     WRITE (5,*) 'Enter number of lines to save.'
     READ  (5,*) R
    
     S = SMG$CREATE_PASTEBOARD(PBID)
     IF (.NOT. S) CALL LIB$STOP(%VAL(S))
     S = SMG$CREATE_VIRTUAL_DISPLAY(22,70,DID,SMG$M_BORDER)
     IF (.NOT. S) CALL LIB$STOP(%VAL(S))
     S = SMG$CREATE_VIRTUAL_KEYBOARD(KBID,,,,R)
     IF (.NOT. S) CALL LIB$STOP(%VAL(S))
     S = SMG$PUT_LINE(DID,'Enter lines of text:')
     IF (.NOT. S) CALL LIB$STOP(%VAL(S))
     S = SMG$PASTE_VIRTUAL_DISPLAY(DID,PBID,2,2)
     IF (.NOT. S) CALL LIB$STOP(%VAL(S))
    
    !+
    ! Read in lines of text.
    !-
     DO 10 I = 1,R
         S = SMG$READ_COMPOSED_LINE(KBID,,TEXT,'Example>',,DID)
         IF (.NOT. S) CALL LIB$STOP(%VAL(S))
      10 CONTINUE
    
    !+
    ! Recall last 2 lines in the buffer.
    !-
    
     S = SMG$RETURN_INPUT_LINE(KBID,TEXT,,1,LEN)
     IF (.NOT. S) CALL LIB$STOP(%VAL(S))
     S = SMG$RETURN_INPUT_LINE(KBID,TEXT1,,2,LEN1)
     IF (.NOT. S) CALL LIB$STOP(%VAL(S))
     TEXT(LEN:20) = TEXT1(1:LEN1)
    
    !+
    ! Concatenate them and replace the last 2
    ! lines in the buffer with the new line.
    !-
    
     S = SMG$REPLACE_INPUT_LINE(KBID,TEXT,2)
     IF (.NOT. S) CALL LIB$STOP(%VAL(S))
    
    !+
    ! Recall the last line which is now the
    ! concatenated line.
    !-
    
     S = SMG$RETURN_INPUT_LINE(KBID,TEXT,,1)
     IF (.NOT. S) CALL LIB$STOP(%VAL(S))
    
     S = SMG$PUT_LINE(DID,'**** The last line of text is:')
     IF (.NOT. S) CALL LIB$STOP(%VAL(S))
     S = SMG$PUT_LINE(DID,TEXT)
     IF (.NOT. S) CALL LIB$STOP(%VAL(S))
    
     END
    
    以下の例はこのFORTRANプログラムによって生成される出力を示していま す。
         $ RUN REPLACE
         Enter number of lines to save.
           3
         Enter lines of text:
         Example> PASTEBOARD
         Example> DISPLAY
         Example> KEYBOARD
         ****The last line of text is:
         KEYBOARDDISPLAY
    


SMG$RESTORE_PHYSICAL_SCREEN ―Restore Physical Pasteboard

Restore Physical Pasteboardルーチンは,SMG$SAVE_PHYSICAL_SCREENルーチンを 呼び出したときの状態にペーストボード・イメージを復元します。

形式

    SMG$RESTORE_PHYSICAL_SCREEN   pasteboard-id ,display-id

戻り値

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

引数

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

復元するペーストボードを指定します。pasteboard-id 引数は, ペーストボード識別子を格納した符号なしロングワードのアドレスです。

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

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

SMG$SAVE_PHYSICAL_SCREENルーチンによって作成された仮想 ディスプレイを指定します。display-id 引数は,この仮想ディスプレイ識別子を格納 した符号なしロングワードのアドレスです。

説明

SMG$RESTORE_PHYSICAL_SCREENルーチンは,SMG$SAVE_PHYSICAL_ SCREEN ルーチンによって保存されたペーストボード・イメージを再作成します。 SMG$SAVE_PHYSICAL_SCREENルーチンから戻された display-id 引数を SMG$RESTORE_PHYSICAL_SCREENルーチンに渡さなければなりません。 SMG$SAVE_PHYSICAL_SCREENルーチンとSMG$RESTORE_PHYSICAL_SCREENルーチンを2回以 上呼び出す場合には,呼び出しはネスティング方式で実行しなければなりません。つ まり,最後に保存したペーストボードは最初に復元しなければなりません。

戻される状態値

SS$_NORMAL 正常終了。
SMG$_INVDIS_ID display-id 引数に誤りがあります。
SMG$_INVPAS_ID pasteboard-id 引数に誤りがあります。


SMG$RETURN_CURSOR_POS ―Return Cursor Position

Return Cursor Positionルーチンは,指定された仮想ディスプレイの仮想カーソ ルの現在の位置を戻します。

形式

    SMG$RETURN_CURSOR_POS   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)
アクセスwrite only
受け渡し方by reference

指定された仮想ディスプレイ内の仮想カーソルの現在の行位置 が書き込まれます。start-row 引数は,現在の行位置が書き込まれる符号付きロング ワードのアドレスです。

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

指定された仮想ディスプレイ内の仮想カーソルの現在のカラム 位置が書き込まれます。start-column 引数は,現在のカラム位置が書き込まれる符号 付きロングワードのアドレスです。

説明

SMG$RETURN_CURSOR_POSルーチンは,指定された仮想ディスプレイ内の 仮想カーソルの現在の行位置とカラム位置を戻します。

戻される状態値

SS$_NORMAL 正常終了。
SMG$_INVDIS_ID display-id 引数に誤りがあります。
SMG$_WRONUMARG 引数の数が誤っています。


SMG$RETURN_INPUT_LINE ―Return Input Line

The Return Input Lineルーチンは,再呼び出しバッファ内の要求された行を,呼 び出し側に戻します。この行は,指定された文字列に適合させる,あるいは適切な行 数を指定することによって回復します。

形式

    SMG$RETURN_INPUT_LINE   keyboard-id ,resultant-string
                           [,match-string]
                           [,byte-integer-line-number]
                           [,resultant-length] [,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ルーチンによって与えられます。

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

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

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

再呼び出しする行を検索するときに使用される照合文字列。 match- string 引数は省略可能であり,この照合文字列を指すディスクリプタのアド レスです。検索操作は最後に入力した行から開始されます。

byte-integer-line-number
OpenVMS用法byte_unsigned
データ型byte (unsigned)
アクセスread only
受け渡し方by reference

呼び出す行を検索するときに使用される行番号。 byte-integer- line-number 引数は省略可能であり,再呼び出しする行の行番号を格 納した符号なしバイトのアドレスです。最後に入力した行の行番号は1です。

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

resultant-string 文字列の長さ。読み込まれたバイト数 と,resultant-string 引数の最大サイズのどちらか小さい方が書き込ま れます。resultant-length 引数は,読み込まれたバイト数または最大サイズ が書き込まれる符号なしワードのアドレスです。

character-set
OpenVMS用法longword_unsigned
データ型longword (unsigned)
アクセスwrite only
受け渡し方by reference

再呼び出しバッファから戻された行の文字集合。 character-set 引数は,文字集合コードを格納する符号なしロングワードのアドレス です(省略可能)。文字集合が未定義の場合には,SMG$C_UNKOWNが戻されます。

文字集合(コードセット)
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漢字コードセッ ト

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

説明

SMG$RETURN_INPUT_LINEルーチンは,再呼び出しバッファ内の指定され た行を,呼び出し側に戻します。このルーチンは,DCL形式の"RECALL"コマンドを実現 するための補助として使用されます。

match-string 引数を指定した場合には,SMG$RETURN_INPUT_LINEルーチンは,指 定された文字列と一致する行を検索し,その行を戻します。byte- integer-line-number 引数を指定した場合には,SMG$RETURN_INPUT_LINEルーチンは, 指定された行番号に対応する行を戻します。match-string引数と byte-integer-line-number 引数をどちらも指定した場合には,SMG$_INVARGが戻され ます。match-string 引数を指定したときに,一致する文字列を検索できない場合には, SMG$_LINNOTFNDが戻されます。

戻される状態値

SS$_NORMAL 正常終了。
SMG$_INVARG 引数に誤りがあります。
SMG$_INVKBD_ID keyboard-id 引数に誤りがあります。
SMG$_LINNOTFND 一致する行を検索できませんでした。
SMG$_WRONUMARG 引数の数が誤っています。
LIB$_xxx LIB$COPY_R_DXから戻されたエラー。

  1. !+
    ! This FORTRAN example uses the routine
    ! SMG$RETURN_INPUT_LINE to implement a
    ! RECALL/ALL command.
    !-
    
     IMPLICIT INTEGER (A-Z)
     INCLUDE '($SMGDEF)'
     INCLUDE '($SMGMSG)'
     CHARACTER*20 TEXT
    
     WRITE (5,*) 'Enter number of lines to save.'
     READ  (5,*) R
    
     S = SMG$CREATE_PASTEBOARD(PBID)
     IF (.NOT. S) CALL LIB$STOP(%VAL(S))
     S = SMG$CREATE_VIRTUAL_DISPLAY(22,70,DID,SMG$M_BORDER)
     IF (.NOT. S) CALL LIB$STOP(%VAL(S))
     S = SMG$CREATE_VIRTUAL_KEYBOARD(KBID,,,,R)
     IF (.NOT. S) CALL LIB$STOP(%VAL(S))
     S = SMG$PUT_LINE(DID,'Enter lines of text:')
     IF (.NOT. S) CALL LIB$STOP(%VAL(S))
     S = SMG$PASTE_VIRTUAL_DISPLAY(DID,PBID,2,2)
     IF (.NOT. S) CALL LIB$STOP(%VAL(S))
    
    !+
    ! Read in lines of text.
    !-
     DO 10 I = 1,R
         S = SMG$READ_COMPOSED_LINE(KBID,,TEXT,'Example>',,DID)
         IF (.NOT. S) CALL LIB$STOP(%VAL(S))
      10 CONTINUE
    
     S = SMG$PUT_LINE(DID,'**** The lines of text are:')
     IF (.NOT. S) CALL LIB$STOP(%VAL(S))
    !+
    ! Recall all lines in the buffer.
    !-
     DO 30 N = 1,R
           S = SMG$RETURN_INPUT_LINE(KBID,TEXT,,N)
         IF (.NOT. S) CALL LIB$STOP(%VAL(S))
         S = SMG$PUT_LINE(DID,TEXT)
         IF (.NOT. S) CALL LIB$STOP(%VAL(S))
      30 CONTINUE
    
    !+
    ! Recall the line containing 'fox'
    !-
     S = SMG$PUT_LINE(DID,'**** The line containing "fox" is:',2)
     IF (.NOT. S) CALL LIB$STOP(%VAL(S))
     S = SMG$RETURN_INPUT_LINE(KBID,TEXT,'FOX')
     IF (S .EQ. SMG$_LINNOTFND) TEXT = 'None found!'
     S = SMG$PUT_LINE(DID,TEXT)
     IF (.NOT. S) CALL LIB$STOP(%VAL(S))
    
     END
    
    以下の例は,このFORTRANプログラムによって生成される出力を示しています。
         $ RUN RETURN
         Enter number of lines to save.
           3
         Enter lines of text:
         Example> PASTEBOARD
         Example> DISPLAY
         Example> KEYBOARD
         ****The lines of text are:
         KEYBOARD
         DISPLAY
         PASTEBOARD
         ****The line containing "fox" is:
    
         None found!
    


SMG$RING_BELL ―Ring the Terminal Bell or Buzzer

Ring the Terminal Bell or Buzzerルーチンは,漢字ターミナルのベルまたはブ ザーを鳴らします。

形式

    SMG$RING_BELL   display-id [,number-of-times]

戻り値

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

number-of-times
OpenVMS用法longword_signed
データ型longword integer (signed)
アクセスread only
受け渡し方by reference

ベルまたはブザーを鳴らす回数を指定します。 number-of-times 引数は,ベルまたはブザーを鳴らす回数を格納した符号付きロング ワード整数のアドレスです。number-of-times 引数を省略した場合には,値は1になり ます。

説明

SMG$RING_BELLルーチンは,指定された仮想ディスプレイがペーストさ れている各ペーストボードでベルまたはブザーを鳴らします。ベルまたはブザーは, 指定された回数だけ鳴ります。省略時には1回だけ鳴ります。

戻される状態値

SS$_NORMAL 正常終了。
SMG$_INVDIS_ID display-id 引数に誤りがあります。
その他 $QIOW,LIB$GET_VM,LIB$FREE_VMから戻される状態値。


SMG$SAVE_PHYSICAL_SCREEN ―Save Physical Screen

Save Physical Screenルーチンは,後でSMG$RESTORE_PHYSICAL_SCREENルーチンを 呼び出すことにより復元できるように,ペーストボードの内容を保存します。

形式

    SMG$SAVE_PHYSICAL_SCREEN   pasteboard-id ,display-id
                              [,desired-start-row] [,desired-end-row]

戻り値

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

引数

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

内容が保存されるペーストボードを指定します。 pasteboard-id 引数は,ペーストボード識別子を格納した符号なしロングワードのア ドレスです。

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

指定されたペーストボードの内容を格納するために作成された 仮想ディスプレイの仮想ディスプレイ識別子を受け付けます。display-id 引数は,仮 想ディスプレイ識別子が書き込まれる符号なしロングワードのアドレスです。

display-id 引数は,保存されている情報を回復するときにSMG$RESTORE_ PHYSICAL_SCREENルーチンに渡さなければなりません。

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

保存する最初の行を指定します。desired-start-row 引数は, 行番号を格納した符号付きロングワードのアドレスです。desired-start-row 引数を 省略した場合には,ペーストボードの1行目が使用されます。

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

保存する最後の行を指定します。desired-end-row 引数は,行 番号を格納した符号付きロングワードのアドレスです。desired-end-row 引数を省略 した場合には,ペーストボードの最後の行が使用されます。

説明

SMG$SAVE_PHYSICAL_SCREENルーチンは,指定されたペーストボードと 同じ幅で,desired-start-row 引数と desired-end-row 引数によって指定された高さ の仮想ディスプレイを作成することにより,画面を消去します。これらの2つの引数を 省略した場合には,作成される仮想ディスプレイの高さは,指定されたペーストボー ドの高さと同じになります。

作成された仮想ディスプレイは省略時の文字集合を持たないので,仮想ディスプレ イへの出力表示は,文字集合について考慮しなければなりません。

保存される情報,つまり,ペーストボード・イメージは,SMG$RESTORE_ PHYSICAL_SCREEN ルーチンを呼び出すことにより復元できます。 SMG$SAVE_PHYSICAL_SCREENルーチンとSMG$RESTORE_PHYSICAL_SCREENルーチンを2回以 上呼び出す場合には,呼び出しはネスティング方式で実行しなければなりません。つ まり,最後に保存したペーストボードは最初に復元しなければなりません。

これらのルーチンは,日本語SMG機能を使用せずに出力を画面に送信する可能性の あるプロシージャを呼び出すときに便利です。このようなプロシージャを呼び出す場 合には,その前にSMG$SAVE_PHYSICAL_SCREENルーチンを使用してペーストボード・イ メージを保存します。プロシージャを実行した後,SMG$RESTORE_PHYSICAL_SCREENルー チンを使用してペーストボード・イメージを復元します。

保存する領域は少なくとも2行以上でなければなりません。スクロール領域をサポー トしないターミナルでSMG$SAVE_PHYSICAL_SCREENルーチンを使用する場合には,ペー ストボード全体を保存し,復元しなければなりません。

戻される状態値

SS$_NORMAL 正常終了。
LIB$_INSVIRMEM 仮想メモリが不足しています。
SMG$_INVPAS_ID pasteboard-id 引数に誤りがあります。
SMG$_INVROW 指定された行番号が誤っているか,または指定され た範囲が1行以下です。
SMG$_ WRONUMARG 引数の数が 誤っています。


SMG$SAVE_VIRTUAL_DISPLAY ―Save the Virtual Display to a File

Save the Virtual Display to a Fileルーチンは,仮想ディスプレイの内容をフ ァイルに格納します。

形式

    SMG$SAVE_VIRTUAL_DISPLAY   display-id [,filespec]

戻り値

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

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

指定された仮想ディスプレイを保存するファイルのファイル指 定を格納した文字列。filespec 引数は,ファイル指定を格納した文字列を指すディス クリプタのアドレスです。

このルーチンを呼び出すたびに,新しいファイルが作成されます。filespec 引数 を省略した場合のファイル指定はSMGDISPLY.DATです。

説明

SMG$SAVE_VIRTUAL_DISPLAYルーチンは仮想ディスプレイの内容を保存 し,それを印字不可能なファイルに格納します。仮想ディスプレイを再作成するのに 必要なテキスト,ビデオ属性,文字集合,およびすべてのディスプレイ属性は保存さ れます。メニュー,ビューポート,およびサブプロセスの内容は保存されません。仮 想ディスプレイを復元するには,SMG$LOAD_VIRTUAL_DISPLAYルーチンを使用します。

戻される状態値

SS$_NORMAL 正常終了。
SMG$_INVDIS_ID display-id 引数に誤りがあります。
RMS$_xxxx $OPEN,$CONNECT,$PUT,および $CLOSEから戻さ れたエラー。


SMG$SCROLL_DISPLAY_AREA ―Scroll Display Area

Scroll Display Areaルーチンは,仮想ディスプレイの長方形領域をスクロールし ます。

形式

    SMG$SCROLL_DISPLAY_AREA   display-id [,start-row] [,start-column]
                             [,height] [,width] [,direction] [,count]

戻り値

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

スクロール領域の1行目を指定します。start-row 引数は,開 始行の行番号を格納した符号付きロングワードのアドレスです。

start-row 引数を省略した場合には,指定した仮想ディスプレイの1行目が使用さ れます。start-row 引数または start-column 引数を省略した場合には,省略時の設 定(行1とカラム1)が使用されます。

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

スクロール領域の最初のカラムを指定します。start-column 引数は,開始カラムを格納した符号付きロングワードのアドレスです。

この引数を省略した場合には,指定した仮想ディスプレイのカラム1が使用されま す。start-row 引数または start-column 引数を省略した場合には,省略時の値とし て行1とカラム1が使用されます。start-column 引数が全角文字の右半分から始まった 場合,その文字は2つの未定義文字になります。

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

スクロール領域の行数を指定します。height 引数は,行数を 格納した符号付きロングワードのアドレスです。

この引数を省略した場合には,省略時の値として仮想スクロール領域の高さ (SMG$SET_DISPLAY_SCROLL_REGIONルーチンによって設定されている場合),または指定 された仮想ディスプレイの高さが使用されます。

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

スクロール領域のカラム数を指定します。width 引数は,カラ ム数を格納した符号付きロングワードのアドレスです。

この引数を省略した場合には,省略時の値として,指定した仮想ディスプレイの幅 が使用されます。

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

スクロールの方向を指定します。direction 引数は,方向コー ドを格納したロングワード・ビット・マスクのアドレスです。

指定できる値はSMG$M_UP,SMG$M_DOWN,SMG$M_RIGHT,およびSMG$M_LEFTです。省 略時の設定はSMG$M_UPです。

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

スクロールする行数またはカラム数を指定します。count 引数 は,スクロールの量(行数またはカラム数)を格納した符号付きロングワードのアドレ スです。この引数を省略した場合には,1行または1カラムがスクロールされます。

説明

SMG$SCROLL_DISPLAY_AREAルーチンは,指定された仮想ディスプレイの 長方形領域をスクロールします。このルーチンは指定された行数または指定されたカ ラム数だけ,指定された方向に領域をスクロールします。スクロールの後,カーソル は start-row 引数,start-column 引数の位置に設定されます。

DEC漢字文字集合が指定され,start-column 引数が全角文字の右半分から始まる 場合は,全角文字は2つの未定義文字になります。長方形領域の右端のカラムが,全角 文字の左半分を含む場合には,全角文字は2つの未定義文字になります。

また,長方形領域が左方向にスクロールし,左端のカラムが全角文字の右半分を含 んでいる場合は,全角文字の右半分は未定義文字になります。長方形領域が右方向に スクロールし,右端のカラムが全角文字の左半分を含んでいる場合は,全角文字の左 半分は未定義文字になります。

戻される状態値

SS$_NORMAL 正常終了。
SMG$_INVARG 定義された長方形は仮想ディスプレイの外部です。
SMG$_ INVCOL カラムが誤っています。
SMG$_INVDIS_ID display-id 引数に誤りがあります。
SMG$_INVROW 行が誤っています。
SMG$_WRONUMARG 引数の数が誤っています。


SMG$SCROLL_VIEWPORT ―Scroll a Display Under a Viewport

Scroll a Display Under a Viewportルーチンは,対応するビューポートで表示さ れている仮想ディスプレイをスクロールします。

形式

    SMG$SCROLL_VIEWPORT   display-id [,direction] [,count]

戻り値

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

引数

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

スクロールされる仮想ディスプレイのディスプレイ識別子。 display-id引数は,ディスプレイ識別子を格納した符号なしロングワードのアドレス です。

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

方向指定子(省略可能)。direction 引数は,スクロールの方向 を指定する方向コードを格納したロングワード・ビット・マスクのアドレスです。 count 引数(省略可能)を組み合わせて使用することにより,指定した方向にスクロー ルする行数を指定できます。direction 引数に対して指定できる値は以下のとおりで す。

SMG$M_UP count 行だけ上にスクロールします。
SMG$M_DOWN count 行だけ下にスクロールします。
SMG$M_RIGHT count カラムだけ右にスクロールします。
SMG$M_LEFT countカラムだけ左にスクロールします。

省略時の設定はSMG$M_UPです。

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

スクロールする行数またはカラム数(省略可能)。省略時の値は1 です。

説明

SMG$SCROLL_VIEWPORTルーチンは,対応するビューポートで表示されて いる仮想ディスプレイをスクロールします。実際には,スクロールをシミュレートす るために,仮想ディスプレイの上をビューポートが移動するように,ビューポートは その座標を変更します。しかし,画面上で物理的な位置が変化するわけではありませ ん。ビューポートが仮想ディスプレイの外部に移動する場合には,ビューポートのサ イズが変化する可能性があります。ビューポートのサイズを元に戻すには, SMG$CHANGE_VIEWPORTルーチンを使用します。

ビューポートの開始カラムが,全角文字の右半分であった場合には,そのカラムは 表示されません。また,ビューポートが全角文字の左半分で終了した場合にも,その カラムは表示されません。

戻される状態値

SS$_NORMAL 正常終了。
SMG$_INVARG count 引数の値が0より小さい値です。
SMG$_INVDIS_ID display-id 引数に誤りがあります。
SMG$_NO_WINASSOC 指定された仮想ディスプレイにビューポートは対応 づけられていません。
SMG$_WRONUMARG 引数の数が誤 っています。
SMG$_WINTRUFIT 正常終了。ただし,仮 想ディスプレイに対応づけられているビューポートはサイズが変更されました。

  1. C This DEC FORTRAN example demonstrates SMG$SCROLL_VIEWPORT.
    C Include the SMG definitions. In particular, we want SMG$M_BORDER.
    
            IMPLICIT INTEGER (A-Z)
            INCLUDE '($SMGDEF)'
    
    C Create the Virtual Displays. Give them borders.
    
            ROWS = 10
            COLUMNS = 22
    
            STATUS = SMG$CREATE_VIRTUAL_DISPLAY
         1                                (ROWS, COLUMNS, DISPLAY1, SMG$M_BORDER)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
    C Create viewport
    
            STATUS = SMG$CREATE_VIEWPORT (DISPLAY1, 2, 2, 3, 10)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
    C Create the Pasteboard
    
            STATUS = SMG$CREATE_PASTEBOARD (PASTE1)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
    C Put data into the Virtual Displays
    
            STATUS = SMG$PUT_CHARS ( DISPLAY1,'11111111111111', 1, 1)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
            STATUS = SMG$PUT_CHARS ( DISPLAY1,'This is row 2.', 2, 1)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
            STATUS = SMG$PUT_CHARS ( DISPLAY1,'33333333333333', 3, 1)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
            STATUS = SMG$PUT_CHARS ( DISPLAY1,'This is row 4.', 4, 1)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
            STATUS = SMG$PUT_CHARS ( DISPLAY1,'55555555555555', 5, 1)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
            STATUS = SMG$PUT_CHARS ( DISPLAY1,'This is row 6.', 6, 1)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
            STATUS = SMG$PUT_CHARS ( DISPLAY1,'77777777777777', 7, 1)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
            STATUS = SMG$PUT_CHARS ( DISPLAY1,'This is row 8.', 8, 1)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
            STATUS = SMG$PUT_CHARS ( DISPLAY1,'99999999999999', 9, 1)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
            STATUS = SMG$PUT_CHARS ( DISPLAY1,'This is row 10.', 10, 1)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
    C Paste the Virtual Display
    
            STATUS = SMG$PASTE_VIRTUAL_DISPLAY ( DISPLAY1, PASTE1, 4, 3)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
    
            STATUS = LIB$WAIT (2.0)
    
            DO 1 I = 1, 3
            STATUS = SMG$SCROLL_VIEWPORT(DISPLAY1,SMG$M_UP,1)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))
            CALL LIB$WAIT (2.0)
    1       CONTINUE
    
            STATUS = LIB$WAIT (2.0)
    
     END
    
    この例では,1つの仮想ディスプレイが作成され,ビューポートが対応づけられていま す。仮想ディスプレイはビューポートに対応づけられた後,ペーストボードにペース トされたため,仮想ディスプレイの中でビューポートの内部だけが表示されます。こ の状態は 図 SMG-42に示すとおりです。

    図 SMG-42 仮想ディスプレイをペーストすることにより 生成される出力

    SMG$SCROLL_VIEWPORTルーチンを全部で3回呼び出しています。 図 SMG-43は,SMG$SCROLL_VIEWPORTルーチンを最初に 呼び出した後のビューポートを示しています。

    図 SMG-43 SMG$SCROLL_VIEWPORTルーチンを最初に呼び出 した後に生成される出力

    図 SMG-44は,SMG$SCROLL_VIEWPORTルーチンを2回 目に呼び出した後のビューポートの内容を示しています。

    図 SMG-44 SMG$SCROLL_VIEWPORTルーチンを2回目に呼び 出した後生成される出力

    図 SMG-45は,SMG$SCROLL_VIEWPORTルーチンを最後 に呼び出した後のビューポートの内容を示しています。

    図 SMG-45 SMG$SCROLL_VIEWPORTルーチンを最後に呼び出 した後に生成される出力


SMG$SELECT_FROM_MENU ―Make a Selection from the Menu

Make a Selection from the Menuルーチンは,矢印キーを使って選択メニュー間 の移動をしたり,<Return>キーを使ってメニューの選択を確定することを可能にし ます。

形式

    SMG$SELECT_FROM_MENU   keyboard-id ,display-id
                          ,selected-choice-number
                          [,default-choice-number]
                          [,flags] [,help-library]
                          [,timeout] [,word-terminator-code]
                          [,selected-choice-string] [,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引数は,キーボード識別子を格納した符号なしロングワードのアドレスで す。

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

選択した項目が表示される仮想ディスプレイを指定します。 display-id引数は,ディスプレイ識別子を格納した符号なしロングワードのアドレス です。仮想ディスプレイは,ペーストボードにペーストされ,バッチ処理されたり重 ね書きされたりすることはできません。

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

選択されるメニュー項目の指定番号。selected-choice-number 引数はこの番号を受け付ける符号なしワードのアドレスです。 selected-choice-number 引数は,SMG$CREATE_MENUルーチン内の静的配列内のメニュー 項目の索引に対応します。

default-choice-number
OpenVMS用法word_unsigned
データ型word (unsigned)
アクセスread only
受け渡し方by reference

省略時のメニュー項目の指定番号(省略可能)。 default-choice-number引数は省略時のメニュー項目の番号を格納する符号なしワード のアドレスです。default-choice-number 引数は,SMG$CREATE_MENUルーチン内の静的 配列内のメニュー項目の索引に対応します。この引数が省略された場合の選択は,す でに選択された項目中の最後のメニュー項目になります。何も選択されていなかった 場合には,メニューの中の最初の項目が選択されます。

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

選択された時の動作を指示するビットマスク(省略可能)。 flags 引数は,フラグを格納した符号なしロングワードのアドレスです。この引数に 対して指定できる値は次のとおりです。

SMG$M_RETURN_IMMED 矢印キー以外のキーが入力されたときに,コ ントロールをユーザに戻します。
SMG$M_REMOVE_ITEM SMG$SELECT_FROM_MENUルーチンによって各々のメニュー項目が一度のみ選択され るようにします。

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

<PF2> / <HELP>が入力された場 合のヘルプ・ライブラリ(省略可能)。help-library 引数は,このヘルプ・ライブラリ を示すディスクリプタのアドレスです。この引数は,flags 引数がSMG$M_RETURN_ IMMEDを指定した場合には,無視されるので注意してください。省略時の設定値は, SYS$HELP:HELPLIB.HLBです。

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

時間切れの値(省略可能)。timeout 引数は,選択が決定される までにかかる秒数を指定する符号付きロングワードのアドレスです。

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

word-terminator-code 引数は,どの文字またはどのキーが読 み込み操作を終了したかを示すコードが書き込まれる符号なしワードのアドレスです( 省略可能)。

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

選択されたメニュー項目のテキストを受け取る文字列(省略可 能)。selected-choice-string 引数は,この文字列を示すディスクリプ タのアドレスです。

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_USER1からSMG$M_ USER8 ユーザ定義属性を表示します。

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

属性補足指定子。rendition-complement 引数は省略可能で, ロングワード・ビット・マスクのアドレスです。この引数で指定する補足的な属性が, 仮想ディスプレイ上に設定されます。rendition-set 引数で指定できる引数はすべて, rendition-complement 引数で補足指定することができます。

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 属性をオフに設定する。

説明

SMG$SELECT_FROM_MENUルーチンによって,メニューの中の項目を選択 することができます。SMG$CREATE_MENUルーチンは,SMG$SELECT_FROM_ MENUルーチン の前に呼び出されなければなりません。

矢印キーを使って,メニュー項目内を移動し,<Return>キーを押すことによっ て選択を確定することができます。<Ctrl/Z>を入力すると,現在の選択を確定し, SMG$_EOFという値が戻されます。

選択メニュー数が1画面で表示しきれない場合は,適切な矢印キーが入力されると, 仮想ディスプレイがスクロールされ,表示できなかった選択メニューが見えるように なります。

現在選択されているメニューは,反転表示され(または,指定された属性で)物理カー ソルで示されます。選択されたメニューは,selected- choice-number 引数に戻され ます。さらに,flag 引数にSMG$M_REMOVE_ ITEMが指定されている場合には,選択され た項目は,もう一度選択することはできません。

SMG$SELECT_FROM_MENUルーチンには,flags 引数によって指定される2つの操作モー ドがあります。SMG$M_RETURN_IMMEDという値を設定しない場合(省略時設定)は,次の ようになります。

SMG$M_RETURN_IMMEDの値を設定した場合は,次のようになります。

(上記の)どちらの場合でも,次のキーで代用が可能です。

読み込み操作を終了したコードSMG$R_TRM_key-nameは,word-terminator- code 引 数(省略可能)に戻されます。複数の文字で構成されたメニュー項目も許可されていま す。メニュー項目がDEC漢字文字またはJISカタカナ文字の場合,ヘルプ機能は起動さ れますが,メニュー項目は情報検索に使用されません。

戻される状態値

SS$_NORMAL 正常終了。
SMG$_EOF ファイルの最後。
SMG$_ILLBATFNC 仮想ディスプレイまたはペーストボードがバッチ処理 されています。
SMG$_INVARG 引数に誤りがあります。 選択できるメニュー項目がありません。
SMG$_INVDIS_ ID display-id 引数に誤りがあります。メニューが含まれていません。または,ビュー ポートが含まれています。
SMG$_NOTPASTED 仮想ディ スプレイがペーストされていません。
LIB$_ xxx LIB$SCOPYから戻された状態値。
SMG$_xxxx SMG$CHANGE_RENDITION, SMG$SET_ CURSOR_ABS, SMG$READ_KEYSTROKE, SMG$PUT_HELP_TEXT, SMG$SAVE_ PHYSICAL_SCREEN, SMG$RESTORE_PHYSICAL_SCREENルー チンから戻された状態値。

  1. C+
    C This DEC 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
    
    以下の図は,この DEC FORTRAN プログラムによって生成される水 平方向のメニューです。

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

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

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

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

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

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


SMG$SET_BROADCAST_TRAPPING ―Enable 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

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

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

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

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 文字列ディスクリプタに誤りがあります。


SMG$SET_DISPLAY_SCROLL_REGION ―Create Display Scrolling Region

Create Display Scrolling Regionルーチンは,仮想ディスプレイ内に仮想スクロー ル領域を作成します。

形式

    SMG$SET_DISPLAY_SCROLL_REGION   display-id [,start-row][,end-row]

戻り値

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

仮想スクロール領域の1行目を指定します。start-row 引数は, 開始行番号を格納した符号付きロングワードのアドレスです。この引数を省略した場 合には,ディスプレイの1行目が使用されます。

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

仮想スクロール領域の最後の行を指定します。end-row 引数は, 終了行番号を格納した符号付きロングワードのアドレスです。この引数を省略した場 合には,仮想ディスプレイの最後の行が使用されます。

説明

SMG$SET_DISPLAY_SCROLL_REGIONルーチンは,指定された開始行と終了 行を使用して,指定された仮想ディスプレイ内に仮想スクロール領域を作成します。 start-row 引数と end-row 引数を省略した場合には,仮想ディスプレイ全体がスクロー ル領域になります。このルーチンはペーストボードの表示を変更せず,また仮想カー ソルの位置も変更しません。

SMG$SET_DISPLAY_SCROLL_REGIONルーチンを使用すれば,仮想ディスプレイの一部 をスクロール領域として定義できます。日本語SMGでは,スクロール操作は以下の方法 で実行されます。スクロール領域の一番下の行に書き込むためにSMG$PUT_LINEルーチ ンを呼び出した場合には,仮想ディスプレイはただちに上にスクロールされるわけで はありません。仮想ディスプレイをただちに上にスクロールした場合には,スクロー ル領域の一番下の行は絶対に使用できなくなります。このため,SMG$PUT_LINEルーチ ンを次に呼び出すまで,スクロール要求は"格納"されます(スクロール要求を格納しな ければならないのは,行全体を書き込むルーチン,たとえば,SMG$PUT_LINEルーチン などを次に呼び出すまでです)。

SMG$PUT_LINEルーチンを呼び出した後,SMG$SET_CURSOR_ABSルーチンや SMG$PUT_CHARSルーチンなどの別のルーチンを呼び出した場合には,格納されているス クロール要求は破棄され,スクロール領域の一番下の行に書き込まれるテキストは既 存の行の上に重ね書きされます。

戻される状態値

SS$_NORMAL 正常終了。
SMG$_INVDIS_ID display-id 引数に誤りがあります。
SMG$_INVARG end-row 引数が start-row 引数より小さいか,または等 しい値です。
SMG$_INVROW 行番号が誤っています。
SMG$_WRONUMARG 引数の数が誤っています。


SMG$SET_KEYPAD_MODE ―Set Keypad Mode

Set Keypad Modeルーチンは,漢字ターミナルの数値キーパッドを数値モードまた はアプリケーション・モードに設定します。

形式

    SMG$SET_KEYPAD_MODE   keyboard-id ,flags

戻り値

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ルーチンから戻されます。

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

省略可能なビット・マスクであり,キーパッドをアプリケーシ ョン・モードに設定するのか,数値モードに設定するのかを指定します。flags 引数 は,フラグを格納した符号なしロングワードのアドレスです。flags 引数に対して指 定できる値は次のとおりです。

0 キーパッドを数値モードに設定します。
SMG$M_KEYPAD_APPLICATION キーパッドをアプリケーション・モードに 設定します。

説明

SMG$SET_KEYPAD_MODEルーチンは,漢字ターミナルの数値キーパッドを 数値モードまたはアプリケーション・モードに設定します。アプリケーション・モー ドでは,数値キーパッドのキーはファンクション・キーであると解釈され,終了文字 としても使用できます。数値モードでは,これらのキーはメイン・キーボードの対応 するキーと同じになります。

漢字ターミナルがアプリケーション・キーパッド・モードをサポートしない場合に は,このルーチンはまったく効果がありません。

戻される状態値

SS$_NORMAL 正常終了。
SMG$_INVKBD_ID keyboard-id 引数に誤りがあります。
SMG$_WRONUMARG 引数の数が誤っています。


SMG$SET_OUT_OF_BAND_ASTS ―Set Out-of-Band ASTs

Set Out-of-Band ASTsルーチンは,アウト・オブ・バンド制御文字のトラッピン グを許可または禁止します。

形式

    SMG$SET_OUT_OF_BAND_ASTS

                            pasteboard-id
                            ,control-character-mask
                            ,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ルーチンによって与えられます。

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

どの制御文字が新しいアウト・オブ・バンド制御文字になるか を指定します。control-character-mask 引数は,マスクを格納した符号なしロングワー ドのアドレスです。このマスクを作成するには,適切な文字のASCII値に対応するビッ トを設定します。たとえば,<Ctrl/C>(ASCIIの3 )がアウト・オブ・バンド制御文 字であることを指定する場合には,control-character- mask 引数のビット3 (8 とい う値)を設定します。このマスクにビットが設定されていない場合には,アウト・オブ・ バンドASTは発生しません。詳しい説明は,『OpenVMS I/O User's Reference Manual』 を参照してください。

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

アウト・オブ・バンド制御文字が漢字ターミナルから入力され たときに呼び出されるASTルーチンのアドレス。AST-routine 引数はルーチンのプロシー ジャ・エントリ・マスクのアドレスです。つまり,ルーチン自体のアドレスです。

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

ASTに渡される引数。AST-argument 引数は,ASTルーチンに渡 される値を格納した符号なしロングワードです。しかし,ASTルーチンは入力されたア ウト・オブ・バンド文字と,それが入力された pasteboard-id 引数も判断する必要が あります。したがって,日本語SMGはこの情報を格納したために3ロングワードの構造 を作成し,この構造のアドレスをASTルーチンに対する最初の引数として渡します。残 りの4つの引数はR0,R1,PC,およびPSLです。日本語SMGは,ユーザが指定した引数を 次のデータ構造に格納します。

最初のロングワードには pasteboard-id 引数が格納され,このロングワードのシンボ ル名はSMG$L_PBD_IDです。2番目のロングワードには AST- argument 引数が格納され, シンボル名はSMG$L_USER_ARGです。3番目のロングワードには入力されたアウト・オブ・ バンド文字のASCII値が格納され,2つのシンボル名によってアクセスできます。それ はSMG$B_CHAR (ASCII値を格納する下位バイト)とSMG$L_CHAR (下位バイトにASCII値を 格納し,上位バイトにスペースを格納するロングワード)です。

説明

SMG$SET_OUT_OF_BAND_ASTSルーチンは,指定された漢字ターミナルか らアウト・オブ・バンド制御文字を受け付けることを許可または禁止します。これら の文字が漢字ターミナルから入力されると,ASTルーチンが呼び出されます。

このルーチンを使用すれば,[Ctrl/C]や[Ctrl/Y],[Ctrl/O]などのアウト・オブ・ バンド文字をトラップできます。

戻される状態値

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


SMG$SET_PHYSICAL_CURSOR ―Set Cursor on Physical Screen

Set Cursor on Physical Screenルーチンは,物理カーソルをペーストボードの指 定された位置に移動します。

形式

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

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

物理カーソルの移動先となる行を指定します。pasteboard-row 引数は,行番号を格納した符号付きロングワードのアドレスです。

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

物理カーソルの移動先となるカラムを指定します。 pasteboard-column 引数は,カラム番号を格納した符号付きロングワードのアドレス です。

説明

SMG$SET_PHYSICAL_CURSORルーチンは,物理カーソルを指定されたペー ストボードの指定された行およびカラムに移動します。ペーストボードがバッチ処理 されている場合には,このルーチンを使用することはできません。

戻される状態値

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


SMG$SET_TERM_CHARACTERISTICS ―Change Terminal Characteristics

Change Terminal Characteristicsは,指定されたペーストボードに対してターミ ナル属性を変更するか,または現在のターミナル属性を検索します。

形式

    SMG$SET_TERM_CHARACTERISTICS

                    pasteboard-id [,on-characteristics1]
                   [,on-characteristics2] [,off-characteristics1]
                   [,off-characteristics2] [,old-characteristics1]
                   [,old-characteristics2]

戻り値

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

引数

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

属性を変更または検索するペーストボードを指定します。 pasteboard-id引数は,ペーストボード識別子を格納した符号なしロングワードのアド レスです。

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

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

$TTDEFで設定されるターミナル属性を指定するビット・マス ク。on-characteristics1 引数は,ビット・マスクを格納した符号なしロングワード のアドレスです。

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

$TT2DEFで設定されるターミナル属性を指定するビット・マス ク。on-characteristics2 引数は,ビット・マスクを格納した符号なしロングワード のアドレスです。

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

$TTDEFで設定解除されるターミナル属性を指定するビット・ マスク。off-characteristics1 引数は,ビット・マスクを格納した符号なしロングワー ドのアドレスです。

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

$TT2DEFで設定解除されるターミナル属性を指定するビット・ マスク。off-characteristics2 引数は,ビット・マスクを格納した符号なしロングワー ドのアドレスです。

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

第1グループ内の現在のターミナル属性が検索されます。 old-characteristics1 引数は,ビット・マスクが書き込まれる符号なしロングワード のアドレスです。

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

第2グループ内の現在のターミナル属性が検索されます。 old-characteristics2 引数は,ビット・マスクが書き込まれる符号なしロングワード のアドレスです。

説明

SMG$SET_TERM_CHARACTERISTICSルーチンは,指定されたペーストボー ドに対してターミナル属性を変更するか,または現在のターミナル属性を検索します。 属性は,DECが提供するシステム・シンボル・ライブラリ内の$TTDEFおよび$TT2DEFマ クロ・モジュールによって定義されます。このルーチンを使用すれば,1回のルーチン 呼び出しで複数のターミナル属性を制御できます。

戻される状態値

SS$_NORMAL 正常終了。
SMG$_NOT_A_TRM ペーストボードは漢字ターミナルでありません。
SS$_ xyz LIB$QIOWから戻されたエラー。


SMG$UNPASTE_VIRTUAL_DISPLAY ―Remove Virtual Display

Remove Virtual Displayルーチンは,ペーストボードから仮想ディスプレイを削 除します。

形式

    SMG$UNPASTE_VIRTUAL_DISPLAY   display-id ,pasteboard-id

戻り値

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

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

仮想ディスプレイが削除されるペーストボードを指定しま す。pasteboard-id 引数は,ペーストボード識別子を格納した符号なし ロングワードのアドレスです。

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

説明

SMG$UNPASTE_VIRTUAL_DISPLAYルーチンは,指定された仮想ディスプレ イを指定されたペーストボードから削除し,ペーストボードに対応する画面からディ スプレイを削除します。このルーチンは仮想ディスプレイやその内容を破壊するわけ ではなく,特定のペーストボードとの関係を解除することにより,仮想ディスプレイ が画面に表示されないようにします。指定された仮想ディスプレイによってそれまで 覆われていたテキストは再度表示されるようになります。

戻される状態値

SS$_NORMAL 正常終了。
SMG$_INVARG 引数に誤りがあります。指定された仮想ディスプレイは指 定されたペーストボードにペーストされていません。
SMG$_INVDIS_ID display-id 引数に誤りがあります。
SMG$_INVPAS_ID pasteboard-id 引数に誤りがあります。
SMG$_NOTPASTED 指定された仮想ディスプレイは指定されたペース トボードにペーストされていません。
SMG$_WRONUMARG 引数の数が誤っています。


前のページ | 次のページ | 目次 | 索引