前へ | 次へ | 目次 | 索引 |
Create Pasteboard ルーチンはペーストボードを作成し,ペーストボード識別子を返します。
SMG$CREATE_PASTEBOARD pasteboard-id [,output-device] [,number-of-pasteboard-rows] [,number-of-pasteboard-columns] [,flags] [,type-of-terminal]
OpenVMS 用法 cond_value データ型 longword (unsigned) アクセス write only 受け渡し方 by value
pasteboard-id
OpenVMS 用法 identifier データ型 longword (unsigned) アクセス write only 受け渡し方 by reference
新規生成されるペーストボードの識別子。 pasteboard-id 引数は,ペーストボード識別子を格納する符号なしロングワードのアドレスです。output-device
VMS 用法: device_name データ型: character string アクセス: read only 受け渡し方: by descriptor
ペーストボードに結びついた出力を書き出すファイル指定または論理名。 output-device 引数は,出力装置名を示すディスクリプタのアドレスです。この引数を省略した場合の値は SYS$OUTPUT です。
注意
日本語 SMG では,ファイルへの出力はサポートされていません。
number-of-pasteboard-rows
OpenVMS 用法 longword_signed データ型 longword (signed) アクセス write only 受け渡し方 by reference
output-device 引数で指定された装置の行数。 number-of-pasteboard-rows 引数は, output-device 引数で指定された装置の行数を格納する符号付きロングワードのアドレスです。この値は,ペーストボードの行数となる場合もあります。number-of-pasteboard-columns
OpenVMS 用法 longword_signed データ型 longword (signed) アクセス write only 受け渡し方 by reference
output-device 引数で指定された装置のカラム数。 number-of-pasteboard-columns 引数は output-device 引数で指定された装置のカラム数を格納する符号付きロングワードのアドレスです。flags
OpenVMS 用法 mask_longword データ型 longword (unsigned) アクセス read only 受け渡し方 by reference
ペーストボードで使用される属性。 flags 引数は省略可能で,フラグを格納した符号なしロングワードのアドレスです。システムで設定されている動作では,ペーストボードが生成される時点でターミナル画面を消去します。以下の値が指定できます。
SMG$M_KEEP_CONTENTS 初期化時に,画面を消去します。日本語 SMG はすべてのターミナル画面を管理する際に最良の機能を提供するため,SMG$M_KEEP_CONTENTS の使用は望ましくありません。
type-of-terminal
OpenVMS 用法 mask_longword データ型 longword (unsiqned) アクセス write only 受け渡し方 by reference
ペーストボード関連の出力が書かれる SMG 内部の装置タイプ。 type-of-terminal 引数はターミナル・タイプを格納する符号なしロングワードのアドレスです。
返される値は次のとおりです。SMG$K_UNKNOWN
SMG$K_VTFOREIGN
SMG$K_HARDCOPY
SMG$K_VTTERMTABLESMG$K_VTTERMTABLE 以外の値が返される場合,SMG$SNAPSHOT ルーチンを使用してペーストボードの内容を出力しなければなりません(現在の日本語 SMG では, SMG$SNAPSHOT ルーチンはサポートされていません)。
SMG$CREATE_PASTEBOARD ルーチンは新しいペーストボードを作成し, output-device 引数で指定された装置と結び付け,割り当てられた pasteboard-id 引数を返します。すでにペーストボードが割り当てられている装置にペーストボードが要求された場合は,このルーチンは既存のペーストボードの識別子を返し,SMG$_PASALREXI 状態コードを戻します。プログラムが SMG$CREATE_PASTEBOARD ルーチンと SMG$CREATE_VIRTUAL_KEYBOARD ルーチンを呼ぶ場合,SMG$CREATE_PASTEBOARD ルーチンが先に呼ばれることを確認してください。SMG$CREATE_PASTEBOARD ルーチンより先に SMG$CREATE_VIRTUAL_KEYBOARD ルーチンを呼ぶと,プログラムは正しく機能しません。
SS$_NORMAL 正常終了。 LIB$_INSVIRMEM 要求されたバッファを割り当てるのに必要な仮想メモリが不足しています。 SMG$_PASALREXI 終了。この装置にはすでにペーストボードが存在しています。 SMG$_WRONUMARG 引数の数が誤っています。 その他 LIB$GET_EF,
LIB$GET_VM,
$QIO,
$GETDVI
$ASSIGN から戻される状態値
Create and Initialize a Subprocess ルーチンは,DCL サブプロセスを生成し,そのサブプロセスを仮想ディスプレイに対応づけます。
SMG$CREATE_SUBPROCESS display-id [,AST-routine] [,AST-argument]
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 ルーチンによって与えられます。
AST-routine
OpenVMS 用法 ast_procedure データ型 procedure entry mask アクセス call without stack unwinding 受け渡し方 by value
現在実行中のコマンドが終了したときに呼び出される AST ルーチン(省略可能)。 AST-routine 引数はルーチンのプロシージャ・エントリ・マスクです。AST ルーチンは 5 つの引数を使用して呼び出されます。最初の引数は, display-id 引数,AST-argument 引数, command-status 引数の値を格納したデータ構造を示すポインタです。 AST ルーチンに対する他の 4 つの引数は R0,R1,PC,PSL です。
AST-routine 引数を指定した場合には,SMG$EXECUTE_COMMAND ルーチンはそのルーチンに渡されたコマンドをバッファに登録し,各コマンドを順に実行し,各コマンドが終了すると,指定された AST ルーチンを呼び出します。 AST-routine 引数を指定しなかった場合には,SMG$EXECUTE_COMMAND ルーチンは,指定されたコマンドが終了するのを待ち,その後,制御をユーザに戻します。
OpenVMS 用法 | user_arg |
データ型 | longword (unsigned) |
アクセス | read only |
受け渡し方 | by value |
AST ルーチンに対して指定する引数(省略可能)。 AST-argument 引数は,AST ルーチンに渡される値を格納した符号なしロングワードです。
SMG$CREATE_SUBPROCESS ルーチンを使用すれば,DCL サブプロセスを生成し,このサブプロセスを仮想ディスプレイに対応づけることができます(サブプロセスは SET NOVERIFY と SET NOON の DCL コマンドを使用して初期化されます)。その後,メイン・プロセスから SMG$EXECUTE_COMMAND ルーチンを使用してサブプロセスが実行するコマンドを指定できます。プロセス間通信はメール・ボックスを使用して実行されます。したがって,入力コマンドと出力テキストを制御できます。コマンドをバッファに登録する場合には,オプションとして AST ルーチンを使用することにより,コマンドが終了したことをメイン・プロセスに通知します。このルーチンを使用するために,ブロードキャスト・トラッピングと要求されていない入力を禁止する必要はありません。
サブプロセスを生成する前に,日本語 SMG は,必要なメールボックスとサブプロセスを作成するための十分な資源があるかどうかを確認します。BYTLM の残存値は少なくとも 5,000 でなければならず,PRCLM の残存値は少なくとも 1 でなければなりません。
日本語 SMG は,ユーザが SMG$DELETE_SUBPROCESS ルーチンを呼び出さずに処理を終了した場合,サブプロセスを削除する終了ハンドラを宣言します。しかし,場合によっては,これらの機能が提供する終了ハンドラが実行されないことがあります。この場合には,DCL の SHOW PROCESS/SUB コマンドと DCL の STOP コマンドを使用してサブプロセスを削除しなければなりません。
SS$_NORMAL 正常終了。 SMG$_INSQUOCRE サブプロセスを生成するのに必要なクォータが不足しています。 SMG$_INVDIS_ID display-id 引数に誤りがあります。 SMG$_SUBALREXI この display-id 引数に対応するサブプロセスがすでに存在します(代替正常終了状態)。 SS$_xxxx $GETDVI,$GETJPI,$DCLEXH,または $CREMBX から戻された状態値。 LIB$_xxxx LIB$SPAWN,LIB$GET_EF,LIB$GET_VM から戻された状態値。
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 DEC 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 |
この DEC FORTRAN の例では,最初の仮想ディスプレイが 2 番目の仮想ディスプレイにコピーされます。2 番目の仮想ディスプレイにはビューポートが対応づけられています。 2 番目の仮想ディスプレイをペーストすると,仮想ディスプレイの中でビューポートの内部だけが表示されます。これは 図 8-8 に示すとおりです。
図 8-8 ビューポートを作成することにより生成される出力
前へ | 次へ | 目次 | 索引 |