[ 前のページ ] [ 次のページ ] [ 目次 ] [ 索引 ] [ DOC Home ]

第2部

日本語SMGリファレンス

第2部では,日本語画面管理ライブラリ・ルーチンについて詳しく説明します。 ルーチン名はアルファベット順に並んでいます。


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

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$_WRONUMARG 引数の数が誤っています。


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定数は,弊社の提供する$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プログラムによって生成される出力は, 図 SMG-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 DIRECTION
         C parameter in the SMG$M_UNDERLINE 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$CREATE_VIRTUAL_DISPLAY.
         C-
    
                 STATUS = SMG$CREATE_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
          ERASE
           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 引数の数が誤っています。


[ 前のページ ] [ 次のページ ] [ 目次 ] [ 索引 ] [ DOC Home ]