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


前へ 次へ 目次 索引



SMG$INIT_TERM_TABLE_BY_TYPE
- Initialize TERMTABLE by VMS Terminal Type

Initialize TERMTABLE by VMS Terminal Type ルーチンは,指定された漢字ターミナルに対して TERMTABLE データベースを初期化することにより,その後で SMG$GET_TERM_DATA ルーチンを呼び出したときに,その漢字ターミナルに対する情報とコマンド文字列を検索できるようにします。

形式

SMG$INIT_TERM_TABLE_BY_TYPE


戻り値

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 ルーチンは,指定されたターミナル・タイプに対して, TERMTABLE データベースを初期化することにより,その後で SMG$GET_TERM_DATA ルーチンを呼び出したときに,そのタイプの漢字ターミナルに対して情報とコマンド文字列を検索できるようにします。このルーチンを使用しなければならないのは,漢字ターミナルに対して直接日本語 SMG によるもの以外の入出力を実行する場合だけです。

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 も見つかりませんでした。


SMG$INSERT_CHARS
- Insert Characters

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 漢字コードセット


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


説明

SMG$INSERT_CHARS ルーチンは,start-row 引数と start-column 引数によって指定される位置に指定される文字列を挿入します。挿入された文字列の右側の文字は右にシフトされますが,その行に格納できない文字は切り捨てられます。仮想カーソルは,最後に挿入された文字位置に設定されます。

オリジナルの 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 引数の数が誤っています。


#1

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 ルーチンを呼び出す前に生成する出力は, 図 8-24 に示すとおりです。

図 8-24 SMG$INSERT_CHARS ルーチンを呼び出す前に生成される出力


この FORTRAN プログラムが SMG$INSERT_CHARS ルーチンを呼んだ後に生成する出力は, 図 8-25 に示すとおりです。

図 8-25 SMG$INSERT_CHARS ルーチンを呼んだ後に生成される出力



SMG$INSERT_LINE
Insert Line

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 漢字コードセット


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


説明

SMG$INSERT_LINE ルーチンは,仮想ディスプレイの最初の行と最後の行を除く行に1行挿入できます。既存の行は指定された方向にスクロールされ,挿入のための空間が作成されます。character-string 引数を指定した場合は,その文字列が生成される空間に書き込まれますが,省略した場合は空白になります。文字列が仮想ディスプレイの幅より短い場合は空白が埋め込まれます。

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 引数の数が誤っています。


#1

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 プログラムによって生成される最初の出力は 図 8-26 に示すとおりです。

図 8-26 SMG$INSERT_LINE ルーチンを呼び出す前に生成される出力


SMG$INSERT_LINE ルーチンを呼び出した後に生成される出力は 図 8-27 に示すとおりです。

図 8-27 SMG$INSERT_LINE ルーチンを呼び出した後に生成される出力



前へ 次へ 目次 索引