日本-日本語 |
|
|
|
OpenVMS マニュアル |
|
日本語 OpenVMS
|
目次 | 索引 |
SMG$CREATE_VIEWPORT |
Create a Virtual Viewport ルーチンは,ビューポートを作成し,そのビューポートを仮想ディスプレイに対応づけます。ビューポートの位置とサイズは呼び出し側が指定します。
SMG$CREATE_VIEWPORT display-id ,viewport-row-start ,viewport-column-start ,viewport-number-rows ,viewport-number-columns
OpenVMS 用法 cond_value データ型 longword (unsigned) アクセス write only 受け渡し方 by value
display-id
OpenVMS 用法 identifier データ型 longword (unsigned) アクセス read only 受け渡し方 by reference
新しく作成されるビューポートに対応づけられる,仮想ディスプレイのディスプレイ識別子。display-id 引数は,この識別子を格納した符号なしロングワードのアドレスです。viewport-row-start
OpenVMS 用法 longword_signed データ型 longword (signed) アクセス read only 受け渡し方 by reference
ビューポートの1行目となる仮想ディスプレイの行番号。 viewport-row-start 引数は,行番号を格納した符号付きロングワードのアドレスです。viewport-column-start
OpenVMS 用法 longword_signed データ型 longword (signed) アクセス read only 受け渡し方 by reference
ビューポートの1カラム目となる仮想ディスプレイのカラム番号。 viewport-column-start 引数は,カラム番号を格納した符号付きロングワードのアドレスです。viewport-column-start 引数で指定されたカラムが,全角文字の右半分であった場合には,そのカラムは表示されません。
viewport-number-rows
OpenVMS 用法 longword_signed データ型 longword (signed) アクセス read only 受け渡し方 by reference
ビューポート内の行数。viewport-number-rows 引数は,新しく作成されるビューポート内の行数を格納した符号付きロングワードのアドレスです。viewport-number-columns
OpenVMS 用法 longword_signed データ型 longword (signed) アクセス read only 受け渡し方 by reference
ビューポート内のカラム数。viewport-number-columns 引数は,新しく作成されるビューポート内のカラム数を格納した符号付きロングワードのアドレスです。
SMG$CREATE_VIEWPORT ルーチンはビューポートを作成し,そのビューポートを特定の仮想ディスプレイに対応づけます。仮想ディスプレイはビューポートを作成する前に作成しておかなければならず,各仮想ディスプレイに対してビューポートを1つだけ作成できます。ビューポートを表示するには,SMG$PASTE_VIRTUAL_DISPLAY ルーチンを呼び出すことにより,仮想ディスプレイをペーストしなければなりません。仮想ディスプレイのビューポートの中に入る部分だけが表示されます。ビューポートはSMG$DELETE_VIEWPORT ルーチンを使用して削除できます。viewport-column-start 引数で指定されたカラムが全角文字の右半分であった場合には,そのカラムは表示されません。また,ビューポートが全角文字の左半分で終了した場合にも,そのカラムは表示されません。
SS$_NORMAL 正常終了。 SMG$_INVARG 行数またはカラム数が0より小さい値です。 SMG$_INVCOL 誤ったカラム番号が指定されました。 SMG$_INVDIS_ID display-id 引数に誤りがあります。 SMG$_INVROW 誤った行番号が指定されました。 SMG$_WINEXISTS ビューポートはすでに仮想ディスプレイ内に存在します(代替正常終了状態)。 SMG$_WRONUMARG 引数の数が誤っています。
#1 |
---|
C+ C This 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 |
この FORTRAN の例では,最初の仮想ディスプレイが 2 番目の仮想ディスプレイにコピーされます。2 番目の仮想ディスプレイにはビューポートが対応づけられています。 2 番目の仮想ディスプレイをペーストすると,仮想ディスプレイの中でビューポートの内部だけが表示されます。これは 図 8-8 に示すとおりです。
図 8-8 ビューポートを作成することにより生成される出力
SMG$CREATE_VIRTUAL_DISPLAY |
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 のプログラムが生成する出力
目次 | 索引 |
|