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


前へ 次へ 目次 索引



SMG$CREATE_VIRTUAL_DISPLAY
- Create a Virtual Display

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

形式

SMG$CREATE_VIRTUAL_DISPLAY

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


戻り値

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



引数

number-of-rows

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


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

number-of-columns

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


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

display-id

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


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

display-attributes

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


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

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

video-attributes

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


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

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

character-set

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


挿入されるテキストの文字集合。 character-set 引数は,文字集合指定子を格納した符号なしロングワードのアドレスです。この引数を省略した場合,SMG$DEFAULT_CHARACTER_SET 論理名が用いられます。この論理名が無効な文字集合を指していたり,定義されていなかった場合には,システム設定値は未定義になります。この引数に対して指定できる文字集合は,以下のとおりです。

文字集合 (コードセット)
SMG$C_ASCII ASCII文字集合
SMG$C_SPEC_GRAPHICS DEC特殊文字集合
SMG$C_SUPPLEMENTAL 補助文字集合 1
SMG$C_KANJI DEC漢字文字集合
SMG$C_JIS_KANA JISカタカナ文字集合
SMG$C_SDK Super DEC 漢字コードセット


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

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


説明

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

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


戻される状態値

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


#1

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

この FORTRAN プログラムの例から生成される出力は, 図 8-9 に示すとおりです。

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



SMG$CREATE_VIRTUAL_KEYBOARD
- Create a Virtual Keyboard

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

形式

SMG$CREATE_VIRTUAL_KEYBOARD

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


戻り値

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



引数

keyboard-id

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


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

input-device


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


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

注意

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

default-filespec


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


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

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

注意

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

resultant-filespec


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


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

注意

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

recall-size

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


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


説明

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

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


戻される状態値

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


#1

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

出力例


$ RUN example


When you see the prompt (->), strike the following 
keys (on the KEYPAD): 
           PF1 
           5 
           PF3 
 
When you have done this, the following sentence 
(and nothing more) should appear following the 
prompt: 
(PF3 should act as a carriage return.) 


NOW IS THE TIME FOR ALL TEXT TO APPEAR.
 
->NOW IS THE TIME FOR ALL TEXT TO APPEAR.
 
$


前へ 次へ 目次 索引