日本語SMGリファレンス
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になります。
VT100,VT200シリーズ, およびVT300シリーズのキーボードとキーパッドのすべてのキーを定義できます。 ただし,次のキーは定義できません。
一部のキーとキー定義はユーザが定義できますが, なるべくこのような定義は実行しないでください。 ユーザがこのような定義をキー名として使用した場合, 日本語 SMGルーチンはエラーを戻すわけではありませんが,次に示すように, DCLレベルで次の特殊な方法で漢字ターミナルを設定しない限り, これらのキーの組み合せに対して割り当てた定義は実行されません。
これらのキーに対して割り当てた定義を使用するには,まず, DCLのSET TERMINAL/PASTHRUコマンドを入力しなければならない。
これらのキーに割り当てた定義を使用するには,まず, DCLのSET TERMINAL/PASTHRUコマンドと SET NOCONTROLコマンドのどちらか一方または両方を入力しなければならない。
これらのキーに対して割り当てた定義を使用するには,まず, DCLのSET TERMINAL/NOTTSYNCコマンドを入力しなければならない。
これらの特殊なターミナル設定はなるべく使用しないでください。 ターミナル・ドライバに制御を渡すために, 省略時の設定を変更した結果がどのようになるのかを十分理解していない限り, このような特殊なターミナル設定を使用すると, 予測できない結果が発生することがあります。
SS$_NORMAL | 正常終了。 |
SMG$_INVDEFATT | キー定義属性に誤りがあります。 |
SMG$_KEYDEFPRO | キー定義が変更または削除できないように保護されています。 |
SMG$_INVKEYNAM | key-name 引数に誤りがあります。 |
SMG$_INVKTB_ID | key-table-id 引数に誤りがあります。 |
SMG$_PREDEFREP | 正常終了。前のキー定義は新しいキー定義に変更されました。 |
SMG$_WRONUMARG | 引数の数が誤っています。 |
その他 | LIB$SCOPY_DXDXから戻された状態値。 |
Begin Batching of Display Updatesルーチンは, 対応するSMG$END_DISPLAY_UPDATE の呼び出しを検出するまで, 仮想ディスプレイに対するすべての出力を保存,つまりバッチ処理します。
SMG$BEGIN_DISPLAY_UPDATE display-id
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$END_DISPLAY_UPDATEが呼び出されたときです。日本語SMGは, 指定されたディスプレイに対するバッチ処理の状況を追跡し,管理します。したがって, SMG$BEGIN_DISPLAY_UPDATEとSMG$END_DISPLAY_UPDATEを同じモジュール内で呼び出す必要はありません。
SS$_NORMAL | 正常終了。 |
SMG$_BATWAS_ON | 正常終了。バッチ処理はすでに開始されています。 |
SMG$_WRONUMARG | 引数の数が誤っています。 |
SMG$_INVDIS_ID | display-id 引数に誤りがあります。 |
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$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 引数に誤りがあります。 |
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 引数は,キーボード識別子を格納した符号なしロングワードのアドレスです。
SS$_NORMAL | 正常終了。 |
SMG$_INVKBD_ID | keyboard-id 引数に誤りがあります。 |
SMG$_WRONUMARG | 引数の数が誤っています。 |
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 引数の値は変更されません。
必要な場合には,このルーチンは, 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 | 引数の数が誤っています。 |
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 | 引数の数が誤っています。 |
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 引数の値が使用されます。
viewport-column-start 引数で指定されたカラムが, 全角文字の右半分であった場合には,そのカラムは表示されません。 また,ビューポートが全角文字の左半分で終了した場合にも,そのカラムは表示されません。
SS$_NORMAL | 正常終了。 |
SMG$_INVARG | 行数またはカラム数が0より小さい値です。 |
SMG$_INVCOL | 指定されたカラム番号に誤りがあります。 |
SMG$_INVDIS_ID | display-id 引数に誤りがあります。 |
SMG$_INVROW | 指定された行番号に誤りがあります。 |
SMG$_NO_WINASSOC | 仮想ディスプレイにビューポートが対応づけられていません。 |
SMG$_WRONUMARG | 引数の数が誤っています。 |
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番目の仮想ディスプレイにコピーしています。
2つの同じ仮想ディスプレイをペーストした後, プログラムは2番目の(コピーした)仮想ディスプレイにビューポートを作成します。 2番目のディスプレイが "再ペースト"された後, ビューポート内の一部だけが表示される状態になります。 この結果は図 SMG-2に示されています。
SMG$CHANGE_VIEWPORTルーチンを呼び出すことにより, 仮想ディスプレイの中でビューポートを通じて表示される部分は変化します。 これは図 SMG-3に示すとおりです。
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文字集合のいずれか。 |
仮想ディスプレイの新しいサイズが前のサイズより小さい場合は, 一部のテキストが切り捨てられる可能性があります。 全角文字の右半分が切り捨てられた場合は,その文字の左半分は未定義文字になります。 仮想ディスプレイの新しいサイズが前のサイズより大きい場合は,テキストの右側に空白が挿入されることがあります。
仮想ディスプレイのサイズを変更した場合は,仮想ディスプレイの仮想カーソルは, 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 | 引数の数が誤っています。 |
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 引数の内容は未定義です。
SS$_NORMAL | 正常終了。 |
SMG$_INVDIS_ID | display-id 引数に誤りがあります。 |
SMG$_INVPAS_ID | pasteboard-id 引数に誤りがあります。 |
SMG$_NOTPASTED | 仮想ディスプレイが指定されたペーストボードにペーストされていません。 |
SMG$_WRONUMARG | 引数の数が誤っています。 |
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 に示すとおりです。
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 (pasteboard_id ,,old_mode)
《形式》 SMG$CONTROL_MODE (pasteboard_id ,new_mode)
《形式1》 SMG$CONTROL_MODE (pasteboard_id ,new_mode ,old_mode)
この形式では, 現在のモード設定を保存し new-mode 引数に従って新モードを設定します。
この後で旧設定を復元する場合は次の形式を指定してください。 以前に保存した設定に従って新モードを設定します。
《形式2》 SMG$CONTROL_MODE (pasteboard_id ,old_mode)
- 注意
- old-mode 引数と new-mode 引数の両方を省略した場合には情報は与えられません。
SMG$CONTROL_MODEルーチンを使用することにより,次のモードに関して, 情報を得たり変更を加えることができます。
このモードでは効率的なシステムQIOを使用するために, 日本語SMGはすべての出力をバッファに格納します。 バッファが一杯になった時点で日本語SMGはバッファを漢字ターミナルに書き込みます。 また,SMG$FLUSH_BUFFERルーチンを呼び出すことにより, 漢字ターミナルに書き込まれていないペーストボード・バッファの内容をターミナル画面に出力することができます。
日本語SMGのシステム設定では,漢字ターミナルに出力する文字数を最小限におさえます。 これは,日本語SMGがペーストボードの現在の内容と新しい内容を比べ, 変更のあった文字だけを送り出しているからです。この機能を使用しない場合は, 変更を加える文字だけではなく,その文字を含む行が書き換えられます。 その際には,変更される最初の文字以降が書き換えられます。
日本語SMGのシステム設定値では, ペーストボードが削除されずにプログラムが終了した場合, ターミナル画面は消去されません。 システム設定による動作を変更するために,このモードを使用します。
このモードが設定されている場合は,漢字ターミナルのタブ設定は使用されません。 このモードが設定されていない場合には, 最小限の画面更新プロシージャに漢字ターミナルのタブ機能が使用されます。 ただし,タブ・ストップの設定はDIGITALの標準位置(8カラムごと)が仮定されています。 漢字ターミナルのタブ設定に依存せずにアプリケーションを使用したい場合は "no tabs" に指定してください。省略時にはビットはクリアされています。 ターミナル設定でSET TERM/NOTABSと指定すると,システム設定値は使用されません。
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 | 引数の数が誤っています。 |
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 引数は, 新しいディスプレイ識別子を格納する符号なしロングワードのアドレスです。
SS$_NORMAL | 正常終了。 |
LIB$_INSVIRMEM | 必要なバッファに割り当てるための仮想メモリが不足しています。 |
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に示すとおりです。
このFORTRANの例で生成される2番目の仮想ディスプレイは 図 SMG-6に示すとおりです。
SMG$COPY_VIRTUAL_DISPLAYルーチンを呼び出した後に生成される出力は 図 SMG-7に示すとおりです。
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 引数は,キー・テーブル識別子が書き込まれる符号なしロングワードのアドレスです。
SS$_NORMAL | 正常終了。 |
LIB$_INSVIRMEM | 仮想メモリが不足しています。 |
SMG$_WRONUMARG | 引数の数が誤っています。 |
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 | 属性を無効に設定する。 |
選択は,以下のどれかの形式で,指定された属性で表示されます。
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ルーチンはサポートしていません。 |
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_VTTERMTABLE以外の値が返される場合, SMG$SNAPSHOTルーチンを使用してペーストボードの内容を出力しなければなりません (現在の日本語SMGでは,SMG$SNAPSHOTルーチンはサポートされていません)。
プログラムが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から戻される状態値 |
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ルーチンに渡される値を格納した符号なしロングワードです。
プロセス間通信はメール・ボックスを使用して実行されます。 したがって,入力コマンドと出力テキストを制御できます。 コマンドをバッファに登録する場合には, オプションとして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から戻された状態値。 |
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 引数は, 新しく作成されるビューポート内のカラム数を格納した符号付きロングワードのアドレスです。
viewport-column-start 引数で指定されたカラムが全角文字の右半分であった場合には, そのカラムは表示されません。 また,ビューポートが全角文字の左半分で終了した場合にも,そのカラムは表示されません。
SS$_NORMAL | 正常終了。 |
SMG$_INVARG | 行数またはカラム数が0より小さい値です。 |
SMG$_INVCOL | 誤ったカラム番号が指定されました。 |
SMG$_INVDIS_ID | display-id 引数に誤りがあります。 |
SMG$_INVROW | 誤った行番号が指定されました。 |
SMG$_WINEXISTS | ビューポートはすでに仮想ディスプレイ内に存在します(代替正常終了状態)。 |
SMG$_WRONUMARG | 引数の数が誤っています。 |
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に示すとおりです。
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ルーチンは,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 | 引数の数が誤っています。 |
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に示すとおりです。
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$DELETE_VIRTUAL_KEYBOARDルーチンで削除することもできます。
SS$_NORMAL | 正常終了。 |
LIB$_INSEF | イベント・フラグ数が不足しています。 |
LIB$_INSTRDES | 仮想ディスクリプタが誤っています。 |
LIB$_INSVIRMEM | 仮想メモリが不足しています。 |
SMG$_FILTOOLON | ファイル指定が長すぎます(255バイト以上)。 |
SMG$_WRONUMARG | 引数の数が誤っています。 |
その他 | $OPENまたは$CONNECTによりRMSから戻される状態値。 $GETDVIW,$ASSIGN,または$DCLEXHから戻される状態値。 |
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. $
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$_INVDIS_ID | display-id 引数に誤りがあります。 |
SMG$_WRONUMARG | 引数の数が誤っています。 |
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$_INVDIS_ID | display-id 引数に誤りがあります。 |
SMG$_WRONUMARG | 引数の数が誤っています。 |
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ルーチンは,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 から戻された状態値。 |
Delete Terminal Tableルーチンは, 個人用のTERMTABLE.EXEに対するアクセスを終了し,仮想アドレス空間の割り当てを解除します。
SMG$DEL_TERM_TABLE
OpenVMS用法 | cond_value |
データ型 | longword (unsigned) |
アクセス | write only |
受け渡し方 | by value |
なし |
---|
SS$_NORMAL | 正常終了。 |
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ルーチンは指定されたカラムから行の最後までのカラムを削除します。
DEC漢字文字集合を使用している際に,全角文字の右半分から削除操作が始まる場合は, その文字の左半分は未定義文字になります。 また,全角文字の左半分で削除操作が終了する場合は,その文字の右半分は未定義文字になります。
このルーチンを終了した後に,仮想カーソルは削除された最初のカラム位置に移動します。
SS$_NORMAL | 正常終了。 |
SMG$_INVARG | 引数が誤っています。指定されたカラム数が仮想ディスプレイの幅をこえます。 |
SMG$_INVCOL | カラム位置が誤っています。 指定されたカラムは仮想ディスプレイの内部に含まれません。 |
SMG$_INVDIS_ID | display-id 引数が誤っています。 |
SMG$_INVROW | 行の位置が誤っています。 指定された行は仮想ディスプレイの内部に含まれていません。 |
SMG$_WILUSERMS | ペーストボードがビデオ・ターミナルでありません。 |
SMG$_WRONUMARG | 引数の数が誤っています。 |
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$DELETE_CHARSルーチンを呼び出した後で生成される出力は, 図 SMG-11に示すとおりです。
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つの定義だけを削除します。
SS$_NORMAL | 正常終了。 |
SMG$_INVKEYNAM | key-name 引数に誤りがあります。 |
SMG$_INVKTB_ID | key-table-id 引数に誤りがあります。 |
SMG$_KEYDEFPRO | キー定義が保護されています。 |
SMG$_KEYNOTDEF | キーが定義されていません。 |
SMG$_WRONUMARG | 引数の数が誤っています。 |
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 引数は, 削除する行数を格納した符号付きロングワードのアドレスです。
SS$_NORMAL | 正常終了。 |
SMG$_INVARG | 引数が誤っています。 |
SMG$_INVDIS_ID | display-id 引数が誤っています。 |
SMG$_INVROW | 行の位置が誤っています。 |
SMG$_WILUSERMS | ペーストボードがビデオ・ターミナルでありません。 |
SMG$_WRONUMARG | 引数の数が誤っています。 |
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$DELETE_LINEルーチンを呼び出した後に生成される出力は, 図 SMG-13に示すとおりです。
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のみです。 この値が指定された場合は,メニュー項目が含まれている行すべてが削除されます。
SS$_NORMAL | 正常終了。 |
LIB$_xxxx | LIB$FREE_VMから戻された状態値。 |
SMG$_xxxx | SMG$ERASE_DISPLAYルーチンから戻された状態値。 |
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 | 画面を消去する(省略時の設定値)。 |
SS$_NORMAL | 正常終了。 |
SMG$_INVPAS_ID | pasteboard-id 引数が誤っています。 |
SMG$_NOTPASTED | 指定された仮想ディスプレイは指定されたペーストボードにペーストされていません。 |
SMG$_WILUSERMS | ペーストボードがビデオ・ターミナルではありません。 |
SMG$_WRONUMARG | 引数の数が誤っています。 |
その他 | $DASSGN,LIB$FREE_VM,LIB$FREE_EFまたはSMG$FLUSH_BUFFERから戻される状態値。 |
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 引数は, この仮想ディスプレイ識別子を格納した符号なしロングワードのアドレスです。
SS$_NORMAL | 正常終了。 |
SMG$_INVDIS_ID | display-id 引数に誤りがあります。 |
SMG$_NOSUBEXI | 削除するプロセスが存在しません。 |
SS$_xxxx | $DELPRCから戻された状態値。 |
LIB$_xxxx | LIB$FREE_VMから戻された状態値。 |
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 引数は,ディスプレイ識別子を格納した符号なしロングワードのアドレスです。
SS$_NORMAL | 正常終了。 |
SMG$_INVDIS_ID | display-id 引数に誤りがあります。 |
SMG$_NO_WINASSOC | 仮想ディスプレイに対応づけられているビューポートはありません。 |
SMG$_WRONUMARG | 引数の数が誤っています。 |
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 引数は, ディスプレイ識別子を格納した符号なしロングワードのアドレスです。
SS$_NORMAL | 正常終了。 |
SMG$_INVDIS_ID | display-id 引数に誤りがあります。 |
SMG$_NOTPASTED | 指定された仮想ディスプレイが指定されたペーストボードにペーストされていません。 |
SMG$_WILUSERMS | ペーストボードがビデオ・ターミナルではありません。 |
SMG$_WRONUMARG | 引数の数が誤っています。 |
その他 | LIB$FREE_VMから戻される状態値。 |
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ルーチンは独自の終了ハンドラを備えているため, ユーザ独自の終了ハンドラからこのルーチンを呼ばないでください。
SS$_NORMAL | 正常終了。 |
SMG$_INVKBD_ID | keyboard-id 引数が誤っています。 |
SMG$_WRONUMARG | 引数の数が誤っています。 |
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$SET_BROADCAST_TRAPPINGルーチンを使用して設定したブロードキャスト・トラッピングを禁止する場合には, このルーチンを使用しなければなりません。
ブロードキャスト・トラッピングを禁止する場合には, 漢字ターミナルのキューに登録されたブロードキャスト・メッセージは失われます。 SMG$SET_BROADCAST_TRAPPING ルーチンを使用してブロードキャスト・トラッピングを許可した後, イメージが終了する前に, SMG$DISABLE_BROADCAST_TRAPPING ルーチンを使用してブロードキャスト・トラッピングを禁止しなかった場合には, 漢字ターミナルにブロードキャストされたメッセージは, イメージが終了するときに失われます。
ブロードキャスト・トラッピングと, 要求されていない入力のトラッピングをどちらも許可した場合には, メールボックスの割り当てを解除するために, SMG$DISABLE_BROADCAST_TRAPPINGルーチンと SMG$DISABLE_UNSOLICITED_INPUTルーチンの両方を起動しなければなりません。
SS$_NORMAL | 正常終了。 |
SMG$_WRONUMARG | 引数の数が誤っています。 |
その他 | $QIOWから戻される状態値。 |
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$DISABLE_UNSOLICITED_INPUTルーチンと SMG$DISABLE_BROADCAST_TRAPPINGルーチンの両方を起動しなければなりません。
SS$_NORMAL | 正常終了。 |
SMG$_INVPAS_ID | pasteboard-id 引数に誤りがあります。 |
SMG$_WRONUMARG | 引数の数が誤っています。 |
その他 | $QIOWから戻される状態値。 |
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 引数には以下の値を指定できます。
論理和演算を実行することにより,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 | 属性をオフに設定する。 |
SS$_NORMAL | 正常終了。 |
SMG$_INVCOL | カラム番号に誤りがあります。 |
SMG$_INVROW | 行番号に誤りがあります。 |
SMG$_WRONUMARG | 引数の数が誤っています。 |
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つのカラム位置にライン描画文字を生成しています。
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 | 属性をオフに設定する。 |
DEC漢字文字集合が使用されていた場合, 描画される線が全角文字の左半分あるいは右半分にあった場合には残りの部分は未定義文字になります。
SS$_NORMAL | 正常終了。 |
SMG$_DIALINNOT | 斜めのラインを描くことはできません。 |
SMG$_INVCOL | カラム番号が誤っています。 指定されたカラムは仮想ディスプレイの外部です。 |
SMG$_INVDIS_ID | display-id 引数に誤りがあります。 |
SMG$_INVROW | 行番号が誤っています。指定された行は仮想ディスプレイの外部です。 |
SMG$_WRONUMARG | 引数の数が誤っています。 |
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に示すとおりです。
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 | 属性をオフに設定する。 |
DEC漢字文字集合を使用した場合に,長方形が全角文字上に描かれた場合には, 全角文字の残された部分は未定義文字になります。
SS$_NORMAL | 正常終了。 |
SMG$_INVCOL | カラム番号が誤っています。 指定されたカラムは仮想ディスプレイの外部です。 |
SMG$_INVDIS_ID | display-id 引数に誤りがあります。 |
SMG$_INVROW | 行番号が誤っています。 指定された行は仮想ディスプレイの外部です。 |
SMG$_WRONUMARG | 引数の数が誤っています。 |
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 に示すとおりです。
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に示すとおりです。
AST-argument | |
---|---|
OpenVMS用法 | user_arg |
データ型 | longword (unsigned) |
アクセス | read only |
受け渡し方 | by value |
ASTルーチンに渡される値。AST-argument 引数には, 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から戻される状態値。 |
End Display Updateルーチンは, 仮想ディスプレイに対するバッチ更新処理を終了します。
SMG$END_DISPLAY_UPDATE display-id
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ルーチンから戻されます。
バッチ・カウントが0のときにSMG$END_DISPLAY_UPDATEを呼び出す操作は正しい操作です。 したがって,正常終了状態が戻されます。
SS$_NORMAL | 正常終了。 |
SMG$_BATSTIPRO | 正常終了。バッチ処理はまだ実行中です。 |
SMG$_BATWASOFF | 正常終了。バッチ処理はすでに終了しています。 |
SMG$_INVDIS_ID | display-id 引数に誤りがあります。 |
SMG$_WRONUMARG | 引数の数が誤っています。 |
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になると, バッファに格納されていた指定されたペーストボードに対するすべての出力がペーストボードに書き込まれます。
バッチ・カウントが0のときにSMG$END_PASTEBOARD_UPDATEルーチンを呼び出すのは有効な操作です。 このときは,正常終了の状態値が戻されます。
SS$_NORMAL | 正常終了。 |
SMG$_BATSTIPRO | 正常終了。バッチ処理はまだ実行中です。 |
SMG$_BATWASOFF | 正常終了。バッチ処理はすでに終了しています。 |
SMG$_INVDIS_ID | display-id 引数に誤りがあります。 |
SMG$_WRONUMARG | 引数の数が誤っています。 |
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 引数は, 消去操作を開始するカラム位置を格納した符号付きロングワードのアドレスです。
指定カラムが全角文字の右半分である場合は,その文字の右半分は空白になり, 左半分は未定義文字になります。
DEC漢字文字集合を使用している際に,全角文字の右半分から消去操作が始まる場合は, その文字の右半分は空白になり,左半分は未定義文字になります。 また,全角文字の左半分で消去操作が終了する場合は, その文字の右半分は未定義文字になります。
SS$_NORMAL | 正常終了。 |
SMG$_INVCOL | カラム位置が誤っています。 指定されたカラムは仮想ディスプレイの内部に含まれていません。 |
SMG$_INVDIS_ID | display-id 引数が誤っています。 |
SMG$_INVROW | 行の位置が誤っています。 |
SMG$_WRONUMARG | 引数の数が誤っています。 |
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$ERASE_CHARSルーチンを呼び出した後に生成される出力は 図 SMG-18に示すとおりです。
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 引数は,行番号を格納した符号付きロングワードのアドレスです。
DEC漢字文字集合が使用され,削除操作が全角文字の右半分で行われる場合, 文字の左半分は未定義文字になります。 また,削除操作が全角文字の左半分で行われる場合,文字の右半分は未定義文字になります。
SS$_NORMAL | 正常終了。 |
SMG$_INVCOL | カラム番号が誤っています。 指定されたカラムは仮想ディスプレイの外部です。 |
SMG$_INVDIS_ID | display-id 引数に誤りがあります。 |
SMG$_INVROW | 行番号が誤っています。 指定された行は仮想ディスプレイの外部です。 |
SMG$_WRONUMARG | 引数の数が誤っています。 |
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 引数は無視されて仮想ディスプレイ内の残りのすべてのカラムが消去されます。
全角文字の左半分で消去操作が終了する場合は, その文字の右半分は未定義文字になります。
DEC漢字文字集合を使用している際に, 全角文字の右半分から消去操作が始まる場合には, その文字の左半分は未定義文字になります。 また,全角文字の左半分で消去操作が終了する場合は, その文字の右半分は未定義文字になります。
SS$_NORMAL | 正常終了。 |
SMG$_INVCOL | カラム位置が誤っています。 指定されたカラムは仮想ディスプレイの内部に含まれていません。 |
SMG$_INVDIS_ID | display-id 引数が誤っています。 |
SMG$_INVROW | 行の位置が誤っています。 指定された行は仮想ディスプレイの内部に含まれていません。 |
SMG$_WRONUMARG | 引数の数が誤っています。 |
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$ERASE_DISPLAYルーチンを呼び出した後に生成される出力は, 図 SMG-20に示すとおりです。
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 引数も無視されて現在のカーソル位置が使用されます。
DEC漢字文字集合を使用している際に,全角文字の右半分から消去操作が始まる場合は, その文字の左半分は未定義文字になります。
SS$_NORMAL | 正常終了。 |
SMG$_INVCOL | カラム位置が誤っています。 指定されたカラムは仮想ディスプレイの外部です。 |
SMG$_INVDIS_ID | display-id 引数が誤っています。 |
SMG$_INVROW | 行の位置が誤っています。 指定された行は仮想ディスプレイの外部です。 |
SMG$_WRONUMARG | 引数の数が誤っています。 |
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$ERASE_LINEルーチンを呼び出した後で生成される出力は 図 SMG-22に示すとおりです。
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 引数は, ペーストボード識別子を格納した符号なしロングワードのアドレスです。
SS$_NORMAL | 正常終了。 |
SMG$_BATWAS_ON | ペーストボードがバッチ処理されています。 |
SMG$_INVPAS_ID | pasteboard-id 引数に誤りがあります。 |
SMG$_WRONUMARG | 引数の数が誤っています。 |
SS$_xxxx | $QIOWから戻されたエラー。 |
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
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 引数は, この状態を格納する符号なしロングワードのアドレスです。
コマンド文字列を指定する場合には, 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ルーチンから戻された状態値。 |
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 引数を使用できます。
SS$_NORMAL | 正常終了。 |
SMG$_INVPAS_ID | pasteboard-id 引数に誤りがあります。 |
SMG$_WRONUMARG | 引数の数が誤っています。 |
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 引数は, ペーストボード識別子を格納した符号なしロングワードのアドレスです。
SS$_NORMAL | 正常終了。 |
SMG$_WRONUMARG | 引数の数が誤っています。 |
SMG$_INVPAS_ID | pasteboard-id 引数に誤りがあります。 |
SS$_xxxx | $QIOWから戻されたエラー。 |
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です。
SS$_NORMAL | 正常終了。 |
SMG$_INVPAS_ID | pasteboard-id 引数に誤りがあります。 |
SMG$_NO_MORMSG | 正常終了。受信したメッセージはすべて戻されました。 |
SMG$_NONBRDMSG | ブロードキャスト・メッセージは戻されませんでした。 |
SMG$_WRONUMARG | 引数の数が誤っています。 |
その他 | LIB$SCOPY_DXDXから戻される状態値。 |
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 | 仮想ディスプレイにビューポートが含まれています。 |
SS$_NORMAL | 正常終了。 |
SMG$_INVDIS_ID | display-id 引数が誤っています。 |
SMG$_WRONUMARG | 引数の数が誤っています。 |
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 引数は,新しい状態文字列が書き込まれることを示すディスクリプタのアドレスです。
SS$_NORMAL | 正常終了。 |
SMG$_INVKEYNAM | key-name 引数に誤りがあります。 |
SMG$_INVKTB_ID | key-table-id 引数に誤りがあります。 |
SMG$_KEYNOTDEF | キーが定義されていません。 |
SMG$_WRONUMARG | 引数の数が誤っています。 |
その他 | LIB$SCOPY_DXDXから戻された状態値。 |
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を使用して指定できます。
SS$_NORMAL | 正常終了。 |
SMG$_INVARG | KITのサイズに誤りがあります。 |
SMG$_INVKBD_ID | keyboard-id 引数に誤りがあります。 |
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 引数は, このバッファのアドレスを格納する符号なしロングワードです。
SS$_NORMAL | 正常終了。 |
SMG$_INVREQCOD | 要求コードに誤りがあります。 |
SMG$_INVTERTAB | ターミナル機能テーブル・アドレスに誤りがあります。 |
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というシンボル定数を使用して指定できます。
SS$_NORMAL | 正常終了。 |
SMG$_INVARG | pasteboard-info-table-size 引数に指定されたサイズに誤りがあります。 |
SMG$_WRONUMARG | 引数の数が誤っています。 |
指定された仮想ディスプレイが現在ペーストされている場合には, 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 引数は省略可能な引数であり, 仮想ディスプレイの最初のカラムのあるペーストボード・カラムのカラム番号が書き込まれる符号付きロングワードのアドレスです。
SS$_NORMAL | 正常終了。 |
SMG$_ILLBATFNC | ディスプレイはバッチ処理されています。 |
SMG$_INVDIS_ID | display-id 引数に誤りがあります。 |
SMG$_INVPAS_ID | pasteboard-id 引数に誤りがあります。 |
SMG$_WRONUMARG | 引数の数が誤っています。 |
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 引数は, これらの引数を渡すためのロングワード・リストのアドレスを指定します。 最初のロングワードは次に続く引数の数を格納していなければなりません。
SS$_NORMAL | 正常終了。 |
SMG$_INVREQCOD | 要求コードが誤っています。 |
SMG$_INVTERTAB | TERMTABLEアドレスが誤っています。 |
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 引数は, このカラム数が書き込まれる符号付きロングワードのアドレスです。
SS$_NORMAL | 正常終了。 |
SMG$_INVDIS_ID | display-id 引数に誤りがあります。 |
SMG$_NO_WINASSOC | 仮想ディスプレイに対応づけられているビューポートはありません。 |
SMG$_WRONUMARG | 引数の数が誤っています。 |
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に示すとおりです。
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 はディスプレイ内のカラム数である)。 つまり,右下の角である。 |
SS$_NORMAL | 正常終了。 |
SMG$_INVARG | 引数に誤りがあります。 |
SMG$_INVDIS_ID | display-id 引数に誤りがあります。 |
SMG$_WRONUMARG | 引数の数が誤っています。 |
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ルーチンは,まずTERM$TABLOCという論理名の領域から TERMTABLE.EXEを検索します。TERMTABLE.EXEをその領域から検索できない場合には, このルーチンはグローバル・セクションSMG$TERMTABLEを検索します。
SS$_NORMAL | 正常終了。 |
SMG$_GBLSECMAP | 正常終了。 定義はグローバル・セクションTERMTABLEから検出されました。 |
SMG$_PRISECMAP | 正常終了。定義は個人用のTERMTABLEから検出されました。 |
SMG$_UNDTERNAM | ターミナル名が定義されていません。 |
SMG$_UNDTERNOP | 未定義ターミナル。漢字ターミナルに対する定義を検索できず,個人用の TERMTABLEも見つかりませんでした。 |
SMG$_UNDTERNOS | 未定義ターミナル。漢字ターミナルに対する定義を検索できず, システムTERMTABLEも見つかりませんでした。 |
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ルーチンはまず, TERM$TABLOCという論理名の領域からTERMTABLE.EXEを検索します。 その領域からTERMTABLE.EXEを検索できなかった場合には, このルーチンはグローバル・セクションSMG$TERMTABLEを検索します。
SS$_NORMAL | 正常終了。 |
SMG$_GBLSECMAP | 正常終了。定義はグローバル・セクションTERMTABLEから検索されました。 |
SMG$_PRISECMAP | 正常終了。定義は個人用のTERMTABLEから検索されました。 |
SMG$_UNDTERNAM | ターミナル名が定義されていません。 |
SMG$_UNDTERNOP | 未定義ターミナル。漢字ターミナルに対する定義を検索できず, 個人用のTERMTABLEも見つかりませんでした。 |
SMG$_UNDTERNOS | 未定義ターミナル。漢字ターミナルに対する定義を検索できず, システムTERMTABLEも見つかりませんでした。 |
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ルーチンは,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 | 引数の数が誤っています。 |
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に示すとおりです。
このFORTRANプログラムがSMG$INSERT_CHARSルーチンを呼んだ後に生成する出力は, 図 SMG-25に示すとおりです。
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文字集合のいずれか。 |
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 | 引数の数が誤っています。 |
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)) ENDFOTRANプログラムによって生成される最初の出力は 図 SMG-26に示すとおりです。
SMG$INSERT_LINEルーチンを呼び出した後に生成される出力は 図 SMG-27に示すとおりです。
Mark a Display as Invalidルーチンは, ディスプレイを無効状態としてマークし,ディスプレイ全体を再表示します。
SMG$INVALIDATE_DISPLAY display-id
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から戻されます。
このルーチンは, 仮想ディスプレイの"フットプリント"のペーストボードの内容を無効にすることにより, 仮想ディスプレイを再表示します。ディスプレイが隠されている場合には, 仮想ディスプレイの隠されている部分だけが再表示されます (ディスプレイ全体が再表示されるわけではありません)。
SS$_NORMAL | 正常終了。 |
SMG$_INVDIS_ID | display-id 引数に誤りがあります。 |
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などです。
終了文字の値についての詳しい説明は, 第3章の 表 3-1を参照してください。
SS$_NORMAL | 正常終了。 |
SMG$_INVKEYNAM | key-name 引数に誤りがあります。 |
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文字集合のいずれか。 |
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 | 引数の数が誤っています。 |
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に示すとおりです。
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も設定されます。
SS$_NORMAL | 正常終了。 |
SMG$_INVKEYNAM | key-name 引数に誤りがあります。 |
SMG$_INVKTB_ID | key-table-id 引数に誤りがあります。 |
SMG$_NOMOREKEYS | このテーブル内にこれ以上キーは存在しません。 |
その他 | LIB$SCOPY_DXDXから戻された状態値。 |
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$_NOTPASTEDが返されるまで繰り返し呼び出すことによって, 連続する仮想ディスプレイの識別子を返します。
このルーチンは,たとえば,多くの仮想ディスプレイを作成した後, アプリケーションにとって重要な仮想ディスプレイのディスプレイ識別子がわからなくなった場合などに使用すると便利です。
SS$_NORMAL | 正常終了。 |
SMG$_INVPAS_ID | pasteboard-id 引数に誤りがあります。 |
SMG$_NOTPASTED | ディスプレイはこれ以上ペーストされていません。 |
SMG$_WRONUMARG | 引数の数が誤っています。 |
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 引数を変換しなければなりませんが, この操作が不可能な場合には,空文字列が使用されます。
SS$_NORMAL | 正常終了。 |
SMG$_FILTOOLON | ファイル指定が長すぎます(255バイト以上)。 |
その他 | SMG$DEFINE_KEY,$OPENから戻された状態値。 |
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を検索します。
SS$_NORMAL | 正常終了。 |
SMG$_INVDIS_ID | display-id 引数に誤りがあります。 |
SMG$_xxxx | SMG$CREATE_VIRTUAL_DISPLAYルーチンから戻された条件値。 |
RMS$_xxxx | $OPEN,$CONNECT,$PUT,および $CLOSEから戻されたエラー。 |
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 | 移動の後,テキストを消去しないことを指定します。 |
テキスト領域は, 宛先となる仮想ディスプレイの現在の仮想カーソルの行およびカラムに移動されます。 別の位置にテキストを移動する場合は,省略可能な top-left-row2 引数と top-left-column2 引数を使用します。
システム設定値では,最初(移動元)の仮想ディスプレイの属性も移動され, テキスト領域を移動した後,テキストは最初の仮想ディスプレイから消去されます。 これらのシステム設定値を変更する場合は flags 引数を使用します。
DEC漢字文字集合を使用している際に, 移動操作の結果として全角文字が半分ずつに分割される場合は, 全角文字の分割された各部分は未定義文字になります。
SS$_NORMAL | 正常終了。 |
SMG$_INVCOL | カラム位置が誤っています。 |
SMG$_INVDIS_ID | display-id 引数が誤っています。 |
SMG$_INVROW | 行の位置が誤っています。 |
SMG$_WRONUMARG | 引数の数が誤っています。 |
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 引数によって指定される仮想ディスプレイがペーストされている場合だけです。
しかし,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 | 引数の数が誤っています。 |
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 引数と同じです。
終了文字コードについての詳しい説明は, 第3章の 表 3-1を参照してください。
SS$_NORMAL | 正常終了。 |
SMG$_INVKEYNAM | key-name 引数に誤りがあります。 |
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 引数は省略可能で, この識別子を格納した符号なしロングワードのアドレスです。 この引数で指定された仮想ディスプレイはすでにペーストされていなくてはいけません。
仮想ディスプレイがバッチ処理されている場合はこのルーチンを使用してはいけません。
SS$_NORMAL | 正常終了。 |
SMG$_ILLBATFNC | 仮想ディスプレイはバッチ処理されています。誤操作です。 |
SMG$_INVDIS_ID | display-id 引数が誤っています。 |
SMG$_INVPAS_ID | pasteboard-id 引数が誤っています。 |
SMG$_WRONUMARG | 引数の数が誤っています。 |
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 引数は, ペーストボード識別子を格納した符号なしロングワードのアドレスです。
SS$_NORMAL | 正常終了。 |
SMG$_INVDIS_ID | display-id 引数に誤りがあります。 |
SMG$_INVPAS_ID | pasteboard-id 引数に誤りがあります。 |
SMG$_WRONUMARG | 引数の数が誤っています。 |
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文字集合のいずれか。 |
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 | 引数の数が誤っています。 |
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に示すとおりです。
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文字集合のいずれか。 |
ターミナルが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 | 引数の数が誤っています。 |
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ルーチンは, 新しいテキストが書かれている文字の位置のみを修正します。 しかし,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 | 引数の数が誤っています。 |
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$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 | 引数の数が誤っています。 |
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文字集合のいずれか。 |
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から戻された状態値。 |
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が設定されます。
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 | 引数の数が誤っています。 |
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$PUT_LINEルーチンの新しい direction 引数の使用を示しています。 この引数を用いるため,SMG$PUT_WITH_SCROLLルーチンは必要なくなりました。
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
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文字集合のいずれか。 |
仮想ディスプレイの右側境界を越えたテキストは,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 | 引数の数が誤っています。 |
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文字集合のいずれか。 |
テキストが右側境界を超えている場合には,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 | 引数の数が誤っています。 |
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文字集合のいずれか。 |
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 | 引数の数が誤っています。 |
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に示すとおりです。
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文字集合のいずれか。 |
SS$_NORMAL | 正常終了。 |
LIB$_INVARG | 引数に誤りがあります。 |
SMG$_INVPAS_ID | pasteboard-id 引数に誤りがあります。 |
SMG$_OPNOTSUP | ハードウェア・ステータス行を使用できません。 |
SMG$_WRONUMARG | 引数の数が誤っています。 |
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 引数は, キー・テーブル識別子を格納した符号なしのロングワードのアドレスです。
この引数は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を参照してください。
キャリッジ・リターンは常に読み込み操作を終了します。[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から戻された状態値。 |
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文字集合のいずれか。 |
現在のカラム位置が,全角文字の右半分である場合には, その位置は未定義文字として扱われます。 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 | 文字列ディスクリプタに誤りがあります。 |
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 に示すとおりです。
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ルーチンを使用する場合には, ペーストボードと仮想ディスプレイの両方に対してディスプレイのバッチ処理を禁止しておかなければなりません。
VT100,VT200シリーズ,およびVT300シリーズのキーボードから, すべてのキーを読み込むことができますが,以下は例外です。
一部のキーおよびキー定義はユーザが定義可能ですが, なるべく定義しないようにしてください。 これらのキーとキー定義を使用した場合,日本語SMGはエラーを戻すわけではありませんが, DCLレベルで次の特殊な方法で漢字ターミナルを設定していない限り, これらのキーの組み合わせに割り当てた定義は実行されません。
これらのキーを読み込むには, 最初にDCLのSET TERMINAL/PASTHRUコマンドを入力しなければならない。
これらのキーを読み込むには,まず,DCLのSET TERMINAL/PASTHRUコマンドと SET NOCONTROLコマンドのどちらか一方または両方を入力しなければならない。
これらキーを読み込むには,まず, DCLのSET TERMINAL/NOTTSYNCコマンドを入力しなければならない。
これらの特殊なターミナル設定を使用することは望ましくありません。 ターミナル・ドライバに制御を与えるために省略時の設定を変更した場合, その結果がどのようになるかを十分理解していない限り, これらの特殊な設定を使用すると,予測できない結果が発生することがあります。
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を除く)。 |
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 に示すとおりです。
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_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から戻されたエラー。 |
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)) ENDSMG$READ_STRINGルーチンを呼び出す前に, このFORTRANプログラムによって生成される出力は 図 SMG-35に示すとおりです。 このプログラムは入力を待ちます。 カーソルは"prompt"という単語のすぐ後に移動します。
SMG$READ_STRINGルーチンを呼び出した後で生成される出力は, 図 SMG-36に示すとおりです。
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]
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から戻されたエラー。 |
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 引数が全角文字上にあった場合には, それぞれの残る部分は未定義文字になります。
このルーチンはユーザが指定したラインを消去しますが, ラインの交点にあるライン描画文字は残されます (ライン描画文字は漢字ターミナルのライン描画文字集合です。 この文字集合を使用できない場合には,+,-,および|が使用されます)。
DEC漢字文字集合が使用されており, 描画されたラインが全角文字に上にあった場合には, その全角文字の残りの部分は未定義文字になります。
SS$_NORMAL | 正常終了。 |
SMG$_DIALINNOT | 斜めのラインは削除できません。 |
SMG$_INVCOL | カラム番号が誤っています。 指定されたカラムは仮想ディスプレイの外部です。 |
SMG$_INVROW | 行番号が誤っています。 指定された行は仮想ディスプレイの外部です。 |
SMG$_WRONUMARG | 引数の数が誤っています。 |
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 引数は, ペーストボード識別子を格納した符号なしロングワードのアドレスです。
SS$_NORMAL | 正常終了。 |
SMG$_INVPAS_ID | pasteboard-id 引数に誤りがあります。 |
SMG$_WRONUMARG | 引数の数が誤っています。 |
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)) ENDSMG$REPAINT_SCREENルーチンを呼び出す前にこのFORTRANプログラムが生成する出力は 図 SMG-37に示すとおりです。
SMG$REPAINT_SCREENルーチンを呼び出した後で生成される出力は 図 SMG-38に示すとおりです。
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$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 | 引数の数が誤っています。 |
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)) ENDSMG$MOVE_VIRTUAL_DISPLAYルーチンを呼び出す前に, このFORTRANプログラムが生成する出力は, 図 SMG-39に示すとおりです。
SMG$MOVE_VIRTUAL_DISPLAYルーチンを呼び出した後の出力は, 図 SMG-40に示すとおりです。
図 SMG-41は, SMG$REPASTE_VIRTUAL_DISPLAYルーチンを呼び出した後に表示される最終的な出力を示しています。
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文字集合のいずれか。 |
SS$_NORMAL | 正常終了。 |
LIB$_INSVIRMEM | 仮想メモリが不足しています。 |
SMG$_INVKBD_ID | keyboard-id 引数に誤りがあります。 |
SMG$_WRONUMARG | 引数の数が誤っています。 |
!+ ! 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
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 引数は, この仮想ディスプレイ識別子を格納した符号なしロングワードのアドレスです。
SS$_NORMAL | 正常終了。 |
SMG$_INVDIS_ID | display-id 引数に誤りがあります。 |
SMG$_INVPAS_ID | pasteboard-id 引数に誤りがあります。 |
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 引数は, 現在のカラム位置が書き込まれる符号付きロングワードのアドレスです。
SS$_NORMAL | 正常終了。 |
SMG$_INVDIS_ID | display-id 引数に誤りがあります。 |
SMG$_WRONUMARG | 引数の数が誤っています。 |
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文字集合のいずれか。 |
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から戻されたエラー。 |
!+ ! 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!
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になります。
SS$_NORMAL | 正常終了。 |
SMG$_INVDIS_ID | display-id 引数に誤りがあります。 |
その他 | $QIOW,LIB$GET_VM,LIB$FREE_VMから戻される状態値。 |
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$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 | 引数の数が誤っています。 |
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です。
SS$_NORMAL | 正常終了。 |
SMG$_INVDIS_ID | display-id 引数に誤りがあります。 |
RMS$_xxxx | $OPEN,$CONNECT,$PUT,および $CLOSE から戻されたエラー。 |
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カラムがスクロールされます。
DEC漢字文字集合が指定され, start-column 引数が全角文字の右半分から始まる場合は, 全角文字は2つの未定義文字になります。長方形領域の右端のカラムが, 全角文字の左半分を含む場合には,全角文字は2つの未定義文字になります。
また,長方形領域が左方向にスクロールし, 左端のカラムが全角文字の右半分を含んでいる場合は, 全角文字の右半分は未定義文字になります。長方形領域が右方向にスクロールし, 右端のカラムが全角文字の左半分を含んでいる場合は, 全角文字の左半分は未定義文字になります。
SS$_NORMAL | 正常終了。 |
SMG$_INVARG | 定義された長方形は仮想ディスプレイの外部です。 |
SMG$_INVCOL | カラムが誤っています。 |
SMG$_INVDIS_ID | display-id 引数に誤りがあります。 |
SMG$_INVROW | 行が誤っています。 |
SMG$_WRONUMARG | 引数の数が誤っています。 |
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です。
ビューポートの開始カラムが,全角文字の右半分であった場合には, そのカラムは表示されません。 また,ビューポートが全角文字の左半分で終了した場合にも, そのカラムは表示されません。
SS$_NORMAL | 正常終了。 |
SMG$_INVARG | count 引数の値が0より小さい値です。 |
SMG$_INVDIS_ID | display-id 引数に誤りがあります。 |
SMG$_NO_WINASSOC | 指定された仮想ディスプレイにビューポートは対応づけられていません。 |
SMG$_WRONUMARG | 引数の数が誤っています。 |
SMG$_WINTRUFIT | 正常終了。ただし, 仮想ディスプレイに対応づけられているビューポートはサイズが変更されました。 |
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$SCROLL_VIEWPORTルーチンを全部で3回呼び出しています。 図 SMG-43は, SMG$SCROLL_VIEWPORTルーチンを最初に呼び出した後のビューポートを示しています。
図 SMG-44は, SMG$SCROLL_VIEWPORTルーチンを2回目に呼び出した後のビューポートの内容を示しています。
図 SMG-45は, SMG$SCROLL_VIEWPORTルーチンを最後に呼び出した後のビューポートの内容を示しています。
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 | 属性をオフに設定する。 |
矢印キーを使って,メニュー項目内を移動し, [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ルーチンから戻された状態値。 |
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-47は, ユーザが3つの項目(その中の2つは同じ)を選択した後の画面イメージを表しています。
図 SMG-48では, ユーザは"Exit this menu"を選択し,プログラムは実行を終了しました。
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ルーチンに渡される値を格納した符号なしロングワードです。
SYSGENパラメータであるDEFMBXBUFQUOと DEFMBXMXMSGがブロードキャスト・メッセージを受信するメールボックスを作成する時に使用されます。
SS$_NORMAL | 正常終了。 |
SMG$_INVPAS_ID | pasteboard-id 引数に誤りがあります。 |
SMG$_NOT_A_TRM | 情報メッセージ。ペーストボードは漢字ターミナルではありません。 |
SMG$_WRONUMARG | 引数の数が誤っています。 |
その他 | $DASSGN,$CANCEL,またはLIB$ASN_WTH_MBXから戻される状態値。 |
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 引数は, カラム位置を格納した符号付きロングワードのアドレスです。 この引数を省略した場合は,カーソルは現在のカラムに置かれます。
SS$_NORMAL | 正常終了。 |
SMG$_INVCOL | カラム位置が誤っています。 |
SMG$_INVDIS_ID | display-id 引数が誤っています。 |
SMG$_INVROW | 行の位置が誤っています。 |
SMG$_WRONUMARG | 引数の数が誤っています。 |
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 | 連続スクロール。 |
SS$_NORMAL | 正常終了。 |
SMG$_INVARG | 引数に誤りがあります。 |
SMG$_INVPAS_ID | pasteboard-id 引数に誤りがあります。 |
SMG$_WRONUMARG | 引数の数が誤っています。 |
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 引数が負の値の場合には, 仮想カーソルは指定されたカラム数だけ左に移動します。
SS$_NORMAL | 正常終了。 |
SMG$_INVARG | 引数に誤りがあります。 |
SMG$_INVCOL | delta-column 引数の値が誤っているため, カーソルを仮想ディスプレイの外部に移動しようとしました。 |
SMG$_INVDIS_ID | display-id 引数に誤りがあります。 |
SMG$_INVROW | delta-row 引数の値が誤っているため, カーソルを仮想ディスプレイの外部に移動しようとしました。 |
SMG$_WRONUMARG | 引数の数が誤っています。 |
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 引数は,既存の状態文字列が書き込まれる文字列を示すディスクリプタのアドレスです。
SS$_NORMAL | 正常終了。 |
SMG$_INVKTB_ID | key-table-id 引数に誤りがあります。 |
SMG$_INVSTANAM | 状態名に誤りがあります。 |
LIB$_INVSTRDES | 文字列ディスクリプタに誤りがあります。 |
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ルーチンを使用すれば, 仮想ディスプレイの一部をスクロール領域として定義できます。 日本語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 | 引数の数が誤っています。 |
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 | キーパッドをアプリケーション・モードに設定します。 |
漢字ターミナルがアプリケーション・キーパッド・モードをサポートしない場合には, このルーチンはまったく効果がありません。
SS$_NORMAL | 正常終了。 |
SMG$_INVKBD_ID | keyboard-id 引数に誤りがあります。 |
SMG$_WRONUMARG | 引数の数が誤っています。 |
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値を格納し, 上位バイトにスペースを格納するロングワード)です。
このルーチンを使用すれば,[Ctrl/C]や[Ctrl/Y], [Ctrl/O]などのアウト・オブ・バンド文字をトラップできます。
SS$_NORMAL | 正常終了。 |
SMG$_INVPAS_ID | pasteboard-id 引数に誤りがあります。 |
SMG$_WRONUMARG | 引数の数が誤っています。 |
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 引数は, カラム番号を格納した符号付きロングワードのアドレスです。
SS$_NORMAL | 正常終了。 |
SMG$_INVARG | カラムが誤っています。 |
SMG$_INVPAS_ID | pasteboard-id 引数に誤りがあります。 |
SMG$_WRONUMARG | 引数の数が誤っています。 |
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 引数は, ビット・マスクが書き込まれる符号なしロングワードのアドレスです。
SS$_NORMAL | 正常終了。 |
SMG$_NOT_A_TRM | ペーストボードは漢字ターミナルでありません。 |
SS$_xyz | LIB$QIOWから戻されたエラー。 |
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 引数は, ペーストボード識別子を格納した符号なしロングワードのアドレスです。
SS$_NORMAL | 正常終了。 |
SMG$_INVARG | 引数に誤りがあります。 指定された仮想ディスプレイは指定されたペーストボードにペーストされていません。 |
SMG$_INVDIS_ID | display-id 引数に誤りがあります。 |
SMG$_INVPAS_ID | pasteboard-id 引数に誤りがあります。 |
SMG$_NOTPASTED | 指定された仮想ディスプレイは指定されたペーストボードにペーストされていません。 |
SMG$_WRONUMARG | 引数の数が誤っています。 |