このセクションでは日本語画面管理ライブラリルーチンを詳しく説明します。
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$CREATE_PASTEBOARDルーチンによって与えられます。
バッチ処理が終了するのは,特定のペーストボードに対して 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 引数は,キーボード識別子を格納した符号なしロングワードのアドレスで す。
この引数はSMG$CREATE_VIRTUAL_KEYBOARDルーチンによって与えられま す。
| 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$CREATE_VIRTUAL_DISPLAYルーチンによって与えられます。
| 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$CREATE_VIRTUAL_DISPLAYルーチンによって与えられます。
| 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 引数は,削除する最初の行の番号を格 納した符号付きロングワードのアドレスです。
| pan=2>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 引数は,この仮想ディスプレイ識別子を格納した符号なしロン グワードのアドレスです。
この引数はSMG$CREATE_VIRTUAL_DISPLAYルーチンによって与えられます。
| 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 引数は, ディスプレイ識別子を格納した符号なしロングワードのアドレスです。
この引数はSMG$CREATE_VIRTUAL_DISPLAYルーチンによって与えられます。
| 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$CREATE_VIRTUAL_KEYBOARDルーチンによって与えられます。
日本語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$CREATE_PASTEBOARDルーチンによって与えられます。
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$CREATE_PASTEBOARDルーチンによって与えられます。
要求されていない入力のトラッピングとブロードキャスト・メッセージのトラッピ ングの両方を許可した場合には,メールボックスの割り当てを解除するために, 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 引数 は,ペーストボード識別子を格納した符号なしロングワードのアドレスです。
この引数はSMG$CREATE_PASTEBOARDルーチンによって与えられます。
| 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 引数は, ペーストボード識別子を格納した符号なしロングワードのアドレスです。
この引数はSMG$CREATE_PASTEBOARDルーチンによって与えられます。
| 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 引数が誤っています。 |
| 引数の数が誤っています。 |
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定数は,DECの提供 する$SMGTRMPTRライブラリに定義されています。
指定できる要求コードに関しては本書の 第5章の 表 5-1, 表 5-2, 表 5-3, 表 5-4 を参照してください。
| maximum-buffer-length | |
|---|---|
| OpenVMS用法 | longword_signed |
| データ型 | longword (signed) |
| アクセス | read only |
| 受け渡し方 | by reference |
機能データが書き込まれるバッファの最大長。 maximum-buffer-length 引数は,バッファに書き込める最大バイト数を格 納した符号付きロングワードのアドレスです。
| return-length | |
|---|---|
| OpenVMS用法 | longword_signed |
| データ型 | longword (signed) |
| アクセス | write only |
| 受け渡し方 | by reference |
バッファに実際に書き込まれたバイト数。return-length 引数 は,バッファに転送されたバイト数が書き込まれる符号付きロングワードのアドレス です。
| buffer-address | |
|---|---|
| OpenVMS用法 | address |
| データ型 | longword (unsigned) |
| アクセス | write only |
| 受け渡し方 | by reference |
機能データを受信するバッファの1バイト目のアドレス。 buffer-address引数は,バッファのアドレスが書き込まれる符号なしロングワードの アドレスです。
| input-argument-vector | |
|---|---|
| OpenVMS用法 | vector_longword_unsigned |
| データ型 | longword (unsigned) |
| アクセス | read only |
| 受け渡し方 | by reference, array reference |
特定の機能操作用の文字シーケンスを作成するために使われる 引数を渡す,ロングワード・リストのアドレス。input-argument-vector 引数は,文 字シーケンスを作成するための引数を格納した符号なしロングワードの配列のアドレ スです。ある機能を操作する文字シーケンスを作成するためには引数が必要になる場 合があります。 input-argument-vector 引数は,これらの引数を渡すためのロングワー ド・リストのアドレスを指定します。最初のロングワードは次に続く引数の数を格納 していなければなりません。
| 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))
END
FOTRANプログラムによって生成される最初の出力は
図 SMG-26に示すとおりです。
SMG$INSERT_LINEルーチンを呼び出した後に生成される出力は 図 SMG-27に示すとおりです。
Mark a Display as Invalidルーチンは,ディスプレイを無効状態としてマークし, ディスプレイ全体を再表示します。
SMG$INVALIDATE_DISPLAY display-id
説明SMG$READ_COMPOSED_LINEルーチンは,指定されたキー・テーブルに定 義されている方法で,通常のキー・ストロークとキー同値文字列で構成される1行を読 み込みます。キー定義の属性は,同値文字列をエコー表示するかどうかと,定義され ているキー・ストロークによって読み込み操作を終了するかどうかを制御します。通 常のキー・ストロークは常にエコー表示されます。キャリッジ・リターンは常に読み込み操作を終了します。[Ctrl/Z]が入力されたと きに,キー定義テーブルに[Ctrl/Z]に対する定義が登録されていない場合には,"EXIT" がエコー表示され,読み込み操作は終了します。[Ctrl/Z]が行の最初の文字として入 力された場合には,SMG$_EOFが戻されます。それ以外の場合には,次の読み込み操作 でSMG$_EOFが戻されます。キー定義に属性として指定されていない限り,他の終了文 字は認識されません。 矢印キー([↑],[↓])と[Ctrl/B]が定義されていない場合には,SMG$READ_xxxxルー チンを使用して読み込んだ前の行は,矢印キー([↑],[↓])を使用して再呼び出しす ることができます。後で再呼び出しするために保存される行数は, SMG$CREATE_VIRTUAL_KEYBOARDルーチンの recall-size 引数に応じて異なります。省 略時の設定は20行です。 SMG$READ_COMPOSED_LINEルーチンは入力操作を実行する前に,SMG$FLUSH_ BUFFER ルーチンを呼び出します。このため,入力操作を開始するときに,画面イメージは常 に最新の状態に更新されます。SMG$READ_COMPOSED_LINEルーチンを使用する場合には, ペーストボードと仮想ディスプレイの両方に対して,ディスプレイ・バッチ処理を禁 止しておかなければなりません。 入力文字の文字集合がDEC漢字文字集合であった場合には,SMG$READ_ COMPOSED_LINE ルーチンが,かな漢字変換の処理を行います。この場合,変換に使用 されるキーは,SMG$DEFINE_KEYルーチンおよびSMG$ADD_KEY_ DEFルーチンによるキー 定義に優先されます。 戻される状態値
SMG$READ_FROM_DISPLAY ―Read Text from DisplayRead Text from Displayルーチンは,仮想ディスプレイから1行のテキストを読み 込みます。 形式
SMG$READ_FROM_DISPLAY display-id ,resultant-string
[,terminator-string]
[,start-row] [,rendition-string]
[,character-set-string]
説明SMG$READ_FROM_DISPLAYルーチンは,指定された仮想ディスプレイの現 在の行のすべてのテキストまたは一部のテキストを格納する文字列を戻します。 terminator-string 引数を省略した場合には,現在の行の内容(現在のカラム位置から 右端のカラム位置まで)が戻されます。現在のカラム位置が,全角文字の右半分である場合には,その位置は未定義文字と して扱われます。start-row 引数を指定した場合には,start- row 引数によって指定 される行の1カラム目から右端のカラムまでの内容が resultant-string 引数に戻され ます。start-row 引数を指定した場合には,terminator-string 引数は無視されます。 terminator-string 引数を指定した場合には,その文字列内の各文字は逆向き検 索の終了文字として機能します。つまり,戻される最初の文字列を判断するために使 用されます。指定された終了文字がまったく検出されない場合には,検索操作はその 行の最初の文字位置で終了します。 線画を読みこむ場合には,装置に依存しない文字(+, -, |)で戻されます。 戻される状態値
例
SMG$READ_KEYSTROKE ―Read a Single CharacterRead a Single Characterルーチンは,キーストロークを読み込み,そのキースト ロークの終了文字コードを戻します。 形式
SMG$READ_KEYSTROKE keyboard-id ,word-terminator-code
[,prompt-string] [,timeout] [,display-id]
[,rendition-set] [,rendition-complement]
説明SMG$READ_KEYSTROKEルーチンは,指定された仮想キーボードからキー ストロークを読み込み,そのキーストロークの終了文字コードをSMG$K_TRM_keynameの 形式で戻します。読み込まれるキーストロークは画面にエコー表示されません。この キーストロークは標準的な英字,キーパッド・キーまたはファンクション・キー,ま たは矢印キー([↑],[↓],[←],[→])のいずれでもかまいません。SMG$READ_KEYSTROKEルーチンを使用する場合には,ペーストボードと仮想ディス プレイの両方に対してディスプレイのバッチ処理を禁止しておかなければなりません。 VT100,VT200シリーズ,およびVT300シリーズのキーボードから,すべてのキーを 読み込むことができますが,以下は例外です。
一部のキーおよびキー定義はユーザが定義可能ですが,なるべく定義しないように してください。これらのキーとキー定義を使用した場合,日本語SMGはエラーを戻すわ けではありませんが,DCLレベルで次の特殊な方法で漢字ターミナルを設定していない 限り,これらのキーの組み合わせに割り当てた定義は実行されません。
これらの特殊なターミナル設定を使用することは望ましくありません。ターミナル・ ドライバに制御を与えるために省略時の設定を変更した場合,その結果がどのように なるかを十分理解していない限り,これらの特殊な設定を使用すると,予測できない 結果が発生することがあります。 戻される状態値
例
SMG$READ_STRING ―Read StringRead 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]
説明SMG$READ_STRINGルーチンは,仮想キーボードから読み込んだ文字列を 戻します。SMG$READ_STRINGルーチンを使用する場合には,ペーストボードと仮想ディ スプレイの両方に対して,ディスプレイのバッチ処理を禁止しておかなければなりま せん。SMG$READ_STRINGが読み込んだテキストは,SMG$READ_COMPOSED_LINEを使用して後 で再呼び出しできるように保存されます。表示属性の指定はプロンプト(プロンプト文 字列が存在する場合)と入力文字のエコー表示の両方に対して適用されます。 入力文字の文字集合がDEC漢字文字集合の場合には,日本語SMGは,かな漢字変換を 行います。 戻される状態値
例
SMG$READ_VERIFY ―Read and Verify a StringRead and Verify a Stringルーチンは,一連の文字列を読み込み,検査します。 形式
SMG$READ_VERIFY keyboard-id ,resultant-string ,initial-string
,pricture-string ,fill-character
,clear-character [,prompt-string] [,modifiers]
[,timeout] [,placeholder-arg] [,initial-offset]
[,word-terminator-code] [,display-id]
[,alternate-echo-string] [,alternate-display-id]
[,rendition-set] [,rendition-complement]
[,input-length] [,character-set]
Returns
| ||
|---|---|---|