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

前へ | 次へ | 目次 | 索引

この FORTRAN プログラムによって生成される最初の出力は， 図 8-19 に示すとおりです。

図 8-19 SMG$ERASE_DISPLAY ルーチンを呼ぶ FORTRAN プログラムによって生成される最初の出力

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

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

# SMG$ERASE_LINE

> Erase Line ルーチンは，仮想ディスプレイの1行全体またはその一部を消去します。

## 形式

> SMG$ERASE_LINE display-id [,start-row] [,start-column]

## 戻り値

> ###

> 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 引数は，消去操作を開始する行の位置を格納した符号付きロングワードのアドレスです。この引数を省略した場合は，start-column 引数も無視されて現在のカーソル位置が使用されます。

> ### start-column

> OpenVMS 用法 | longword_signed
> データ型 | longword (signed)
> アクセス | read only
> 受け渡し方 | by reference

> 消去開始カラム。 start-column 引数は，消去操作が開始されるカラム位置を格納した符号付きロングワードのアドレスです。この引数を省略した場合は，start-row 引数も無視されて現在のカーソル位置が使用されます。

## 説明

> SMG$ERASE_LINE ルーチンは，指定された開始位置からその行の最後までを消去します。開始位置を省略した場合は，SMG$ERASE_LINE ルーチンは現在の仮想カーソルの位置から行の最後までのテキストを消去します。仮想カーソルは，消去されたテキストの最初の空白に設定されます。

> DEC漢字または Super DEC 漢字文字集合を使用している際に，全角文字の右半分から消去操作が始まる場合は，その文字の左半分は未定義文字になります。

## 戻される状態値

> SS$_NORMAL | 正常終了。
> SMG$_INVCOL | カラム位置が誤っています。指定されたカラムは仮想ディスプレイの外部です。
> SMG$_INVDIS_ID | display-id 引数が誤っています。
> SMG$_INVROW | 行の位置が誤っています。指定された行は仮想ディスプレイの外部です。
> SMG$_WRONUMARG | 引数の数が誤っています。

## 例

#1
    C+
    C This FORTRAN example program demonstrates the use of
    C SMG$ERASE_LINE.
    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$ERASE_LINE to erase line 2, and then again to
    C erase the last 4 words on line 4.
    C-

            STATUS = SMG$ERASE_LINE ( DISPLAY1, 2, 1)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))

            STATUS = SMG$ERASE_LINE ( DISPLAY1, 4, 9)
            IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS))

            END

> この FORTRAN プログラムによって生成される最初の出力は， 図 8-21 に示すとおりです。

> 図 8-21 SMG$ERASE_LINE ルーチンを呼び出す FORTRAN プログラムによって生成される最初の出力

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

図 8-22 SMG$ERASE_LINE ルーチンを呼び出した後で生成される出力

# SMG$ERASE_PASTEBOARD

> Erase Pasteboard ルーチンは，ペーストボードの内容を消去します。

## 形式

> SMG$ERASE_PASTEBOARD pasteboard-id

## 戻り値

> ###

> OpenVMS 用法 | cond_value
> データ型 | longword (unsigned)
> アクセス | write only
> 受け渡し方 | by value

## 引数

> ### pasteboard-id

> OpenVMS 用法 | identifier
> データ型 | longword (unsigned)
> アクセス | read only
> 受け渡し方 | by reference

> 消去されるペーストボードを指定します。 pasteboard-id 引数は，ペーストボード識別子を格納した符号なしロングワードのアドレスです。

> この引数は SMG$CREATE_PASTEBOARD ルーチンによって与えられます。

## 説明

> SMG$ERASE_PASTEBOARD ルーチンは，指定されたペーストボードの内容を消去します。物理カーソルは左上の角(1行目，1カラム目)に設定されます。ペーストボードにペーストされる仮想ディスプレイがある場合には，次回の日本語 SMG による，ぺーストボードへの出力時に書き出されます。

## 戻される状態値

> SS$_NORMAL | 正常終了。
> SMG$_BATWAS_ON | ペーストボードがバッチ処理されています。
> SMG$_INVPAS_ID | pasteboard-id 引数に誤りがあります。
> SMG$_WRONUMARG | 引数の数が誤っています。
> SS$_xxxx | $QIOW から戻されたエラー。

## 例

#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

# SMG$EXECUTE_COMMAND

> Execute Command in a Subprocess ルーチンは，SMG$CREATE_SUBPROCESS ルーチンを使用して生成したサブプロセスの内部で，指定されたコマンドを実行します。

## 形式

> SMG$EXECUTE_COMMAND display-id ,command-desc [,flags] [,ret-status]

## 戻り値

> ###

> 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 ルーチンによって与えられます。

> ### command-desc

> OpenVMS 用法 | char_string
> データ型 | character string
> アクセス | read only
> 受け渡し方 | by descriptor

> コマンド文字列。command-desc 引数はコマンド文字列を示すディスクリプタのアドレスです。

> ### flags

> OpenVMS 用法 | mask_longword
> データ型 | longword (unsigned)
> アクセス | read only
> 受け渡し方 | by reference

> オプションとして実行される動作を指定するビット・マスク(省略可能)。 flags 引数はフラグを格納した符号なしロングワードのアドレスです。 flags 引数に対して指定できる値は次のとおりです。

> SMG$M_DATA_FOLLOWS | この後に入力データが続きます。 次の SMG$EXECUTE_COMMAND ルーチンの呼び出しには，現在実行中のコマンドに対する入力データが含まれています。これが最後の入力データ項目である場合には，この値を指定しないでください。この値を指定した場合には， ret-status 引数は戻されません。
> SMG$M_SEND_EOF | エンド・オブ・ファイル・マーカーを送信します。エンド・オブ・ファイル・マーカーはサブプロセスに送信されます。

> ### ret-status

> OpenVMS 用法 | cond_value
> データ型 | longword (unsigned)
> アクセス | write only
> 受け渡し方 | by reference

> 実行したコマンドの状態(省略可能)。コマンドがバッファに登録されないときに戻されます。ret-status 引数は，この状態を格納する符号なしロングワードのアドレスです。

## 説明

> SMG$EXECUTE_COMMAND ルーチンは，SMG$CREATE_SUBPROCESS ルーチンを使用して生成したサブプロセス内で，指定されたコマンドを実行します。コマンドがバッファに登録される場合には，このルーチンはコマンドをバッファに登録した後，制御を戻し，コマンドが終了した後，ユーザが指定した AST ルーチンを起動します。コマンドがバッファに登録されない場合には，SMG$EXECUTE_COMMAND ルーチンは，コマンドが実行を終了するのを待ち，その後，コマンドの状態を戻します。

> コマンド文字列を指定する場合には，DCL コマンドの1文字目としてドル記号($)を指定しなければなりません。ドル記号から始まらないコマンド文字列は，前のコマンドに対する入力データとして解釈されます。

> SMG$EXECUTE_COMMAND ルーチンは，コマンドを実行するときに，そのコマンドとコマンドからの出力を指定された仮想ディスプレイに出力します。指定した仮想ディスプレイに対して入出力を実行しないでください。 SPAWN コマンド，GOTO コマンド，LOGOUT コマンドをコマンド文字列として使用することはできず，これらのコマンドを使用した場合には，予測できない結果が発生します。

> 入出力はターミナル・ドライバを通じてではなく，メールボックスを使用して実行されるため，コマンド・プロンプトや，`[Ctrl/C]`，`[Ctrl/Y]`，`[Ctrl/Z]` などの単一文字コマンドは使用できません。 `[Ctrl/Z]` をサブプロセスに送信する場合には，flags 引数に対して SMG$M_SEND_EOF を指定しなければなりません。詳しい説明は，『OpenVMS I/O User's Reference Manual』のメールボックス・ドライバに関する節を参照してください。

## 戻される状態値

> SS$_NORMAL | 正常終了。
> SMG$_INPTOOLON | 入力の長さが 255 バイトを超えています。
> SMG$_INVIDS_ID | display-id 引数に誤りがあります。
> SMG$_NOSUBEXI | サブプロセスが存在しません。
> SS$_xxxx | $QIO，$DCLAST，または $SYNCH から戻された状態値。
> LIB$_xxxx | LIB$ANALYZE_SDESC ルーチンから戻された状態値。
> SMG$_xxxx | SMG$PUT_LINE ルーチンから戻された状態値。

# SMG$FIND_CURSOR_DISPLAY

> Find Display that Contains the Cursor ルーチンは，物理カーソルが現在格納されている，最後にペーストされた仮想ディスプレイの識別子を戻します。

## 形式

> SMG$FIND_CURSOR_DISPLAY pasteboard-id ,display-id [,pasteboard-row] [,pasteboard-column]

## 戻り値

> ###

> OpenVMS 用法 | cond_value
> データ型 | longword (unsigned)
> アクセス | write only
> 受け渡し方 | by value

## 引数

> ### pasteboard-id

> OpenVMS 用法 | identifier
> データ型 | longword (unsigned)
> アクセス | read only
> 受け渡し方 | by reference

> 物理カーソルが検索される対象となるペーストボードを指定します。 pasteboard-id 引数は，ペーストボード識別子を格納した符号なしロングワードのアドレスです。

> この引数は SMG$CREATE_PASTEBOARD ルーチンによって与えられます。

> ### display-id

> OpenVMS 用法 | identifier
> データ型 | longword (unsigned)
> アクセス | write only
> 受け渡し方 | by reference

> 物理カーソルが存在する仮想ディスプレイの識別子が書き込まれます。
> display-id 引数は，ディスプレイ識別子が書き込まれる符号なしロングワードのアドレスです。

> ### pasteboard-row

> OpenVMS 用法 | longword_signed
> データ型 | longword (signed)
> アクセス | read only
> 受け渡し方 | by reference

> 物理カーソルの検索を開始する行番号。pasteboard-row 引数は省略可能な引数であり，ペーストボードの行番号を格納した符号付きロングワードのアドレスです。物理カーソルの行番号の代わりに pasteboard-row 引数を使用できます。

> ### pasteboard-column

> OpenVMS 用法 | longword_signed
> データ型 | longword (signed)
> アクセス | read only
> 受け渡し方 | by reference

> 物理カーソルが検索を開始するカラム番号。 pasteboard-column 引数は省略可能な引数であり，ペーストボード・カラム番号を格納した符号付きロングワードのアドレスです。物理カーソルのカラム番号の代わりに pasteboard-column 引数を使用できます。

## 説明

> SMG$FIND_CURSOR_DISPLAY ルーチンは，指定されたペーストボードの物理カーソルがどの仮想ディスプレイに格納されているかを判断し，仮想ディスプレイの識別子を戻します。 SMG$FIND_CURSOR_DISPLAY ルーチンは，物理カーソルが格納されている最後にペーストされた仮想ディスプレイの display-id 引数を戻します。仮想ディスプレイに物理カーソルが格納されていない場合には，このルーチンは0を戻します。これは，ディスプレイ識別子としては無効な値です。

## 戻される状態値

> SS$_NORMAL | 正常終了。
> SMG$_INVPAS_ID | pasteboard-id 引数に誤りがあります。
> SMG$_WRONUMARG | 引数の数が誤っています。

前へ | 次へ | 目次 | 索引