日本-日本語
日本HPホーム 製品 & サービス OpenVMS製品情報
≫  お問い合わせ


OpenVMS マニュアル


 

OpenVMS ドキュメント
ライブラリ

タイトルページ
目次
まえがき
第 1 部:概論
第 1 章:日本語SMG (SMG$)の概要
第 2 章:日本語 SMG の出力操作
第 3 章:日本語 SMG 入力操作
第 4 章:日本語 SMG の高度な機能
第 5 章:フォーリン・ターミナルのサポート
第 6 章:日本語 SMG を使用したプログラム開発
第 7 章:日本語 SMG ルーチンの呼び出しの例
第 2 部:リファレンス・セクション
第 8 章:日本語 SMG リファレンス
コマンド一覧
索引
PDF
OpenVMS ホーム
日本語 OpenVMS

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


目次 索引




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 ビューポートを作成することにより生成される出力





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 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 のプログラムが生成する出力



目次 索引

© 2012 Hewlett-Packard Development Company, L.P.