前へ | 次へ | 目次 | 索引 |
Create a Virtual Display ルーチンは,仮想ディスプレイを作成してその識別子を返します。
SMG$CREATE_VIRTUAL_DISPLAYnumber-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 漢字コードセット
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 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 のプログラムが生成する出力
Create a Virtual Keyboard ルーチンは,仮想キーボードを作成してキーボード識別子を返します。
SMG$CREATE_VIRTUAL_KEYBOARDkeyboard-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 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. $
前へ | 次へ | 目次 | 索引 |