前へ | 次へ | 目次 | 索引 |
Replace Input Line ルーチンは,再呼び出しバッファ内の指定された行を指定された文字列に置き換えます。
SMG$REPLACE_INPUT_LINE keyboard-id [,replace-string] [,line-count] [,flags] [,character-set]
OpenVMS 用法 cond_value データ型 longword (unsigned) アクセス write only 受け渡し方 by value
keyboard-id
OpenVMS 用法 identifier データ型 longword (unsigned) アクセス read only 受け渡し方 by reference
キーボード識別子。keyboard-id 引数は,読み取る対象となる仮想キーボードの識別子を格納した符号なしロングワードのアドレスです。この引数は,SMG$CREATE_VIRTUAL_KEYBOARD ルーチンによって与えられます。
replace-string
OpenVMS 用法 char_string データ型 character string アクセス read only 受け渡し方 by descriptor
再呼び出しバッファに入力される行を格納した文字列。 replace-string 引数は,この文字列を指すディスクリプタのアドレスです。省略時の設定は空文字列であり,最後に入力された行を削除します。line-count
OpenVMS 用法 byte_unsigned データ型 byte (unsigned) アクセス read only 受け渡し方 by reference
置換する行数。line-count 引数は,replace-string 引数に置換する行数を格納した符号なしバイトのアドレスです。 line-count 引数の省略時の値は 1 (最後に入力した行)です。flags
OpenVMS 用法 mask_longword データ型 longword (unsigned) アクセス read only 受け渡し方 by reference
任意に実行できる動作を指定します。flags 引数は,フラグを格納した符号なしロングワードのアドレスです。指定できる値は以下のとおりです。
SMG$M_KEEP_CONTENTS replace-string 引数によって指定された文字列は, line-count 引数によって指定された既存の文字列と置き換えられます。このフラグをループ内で使用すれば,アプリケーションから再呼び出しバッファに情報をプリロードすることができます。
character-set
OpenVMS 用法 longword_unsigned データ型 longword (unsigned) アクセス read only 受け渡し方 by reference
文字集合指定子。再呼び出しバッファに入力される行,replace-string 引数の文字集合。character-set 引数は,文字集合コードを格納した符号なしロングワードのアドレスです。この引数を省略した場合のシステム設定値は,UNKNOWNです。
値 文字集合 (コードセット) 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$REPLACE_INPUT_LINE ルーチンは,再呼び出しバッファ内の要求された行を指定された文字列に置き換えます。残りの行(line-count-1)は削除されます。このルーチンは行継続の処理を補助するためのものです。
SS$_NORMAL 正常終了。 LIB$_INSVIRMEM 仮想メモリが不足しています。 SMG$_INVKBD_ID keyboard-id 引数に誤りがあります。 SMG$_WRONUMARG 引数の数が誤っています。
#1 |
---|
!+ ! This FORTRAN example uses the routine ! SMG$REPLACE_INPUT_LINE to concatenate ! the last 2 lines in the recall buffer. !- IMPLICIT INTEGER (A-Z) INCLUDE '($SMGDEF)' INCLUDE '($SMGMSG)' CHARACTER*20 TEXT, TEXT1 WRITE (5,*) 'Enter number of lines to save.' READ (5,*) R S = SMG$CREATE_PASTEBOARD(PBID) IF (.NOT. S) CALL LIB$STOP(%VAL(S)) S = SMG$CREATE_VIRTUAL_DISPLAY(22,70,DID,SMG$M_BORDER) IF (.NOT. S) CALL LIB$STOP(%VAL(S)) S = SMG$CREATE_VIRTUAL_KEYBOARD(KBID,,,,R) IF (.NOT. S) CALL LIB$STOP(%VAL(S)) S = SMG$PUT_LINE(DID,'Enter lines of text:') IF (.NOT. S) CALL LIB$STOP(%VAL(S)) S = SMG$PASTE_VIRTUAL_DISPLAY(DID,PBID,2,2) IF (.NOT. S) CALL LIB$STOP(%VAL(S)) !+ ! Read in lines of text. !- DO 10 I = 1,R S = SMG$READ_COMPOSED_LINE(KBID,,TEXT,'Example>',,DID) IF (.NOT. S) CALL LIB$STOP(%VAL(S)) 10 CONTINUE !+ ! Recall last 2 lines in the buffer. !- S = SMG$RETURN_INPUT_LINE(KBID,TEXT,,1,LEN) IF (.NOT. S) CALL LIB$STOP(%VAL(S)) S = SMG$RETURN_INPUT_LINE(KBID,TEXT1,,2,LEN1) IF (.NOT. S) CALL LIB$STOP(%VAL(S)) TEXT(LEN:20) = TEXT1(1:LEN1) !+ ! Concatenate them and replace the last 2 ! lines in the buffer with the new line. !- S = SMG$REPLACE_INPUT_LINE(KBID,TEXT,2) IF (.NOT. S) CALL LIB$STOP(%VAL(S)) !+ ! Recall the last line which is now the ! concatenated line. !- S = SMG$RETURN_INPUT_LINE(KBID,TEXT,,1) IF (.NOT. S) CALL LIB$STOP(%VAL(S)) S = SMG$PUT_LINE(DID,'**** The last line of text is:') IF (.NOT. S) CALL LIB$STOP(%VAL(S)) S = SMG$PUT_LINE(DID,TEXT) IF (.NOT. S) CALL LIB$STOP(%VAL(S)) END |
以下の例はこの FORTRAN プログラムによって生成される出力を示しています。
$ RUN REPLACE Enter number of lines to save. 3 Enter lines of text: Example> PASTEBOARD Example> DISPLAY Example> KEYBOARD ****The last line of text is: KEYBOARDDISPLAY
Restore Physical Pasteboard ルーチンは,SMG$SAVE_PHYSICAL_SCREENルーチンを呼び出したときの状態にペーストボード・イメージを復元します。
SMG$RESTORE_PHYSICAL_SCREEN pasteboard-id ,display-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ルーチンによって与えられます。
display-id
OpenVMS 用法 identifier データ型 longword (unsigned) アクセス read only 受け渡し方 by reference
SMG$SAVE_PHYSICAL_SCREENルーチンによって作成された仮想ディスプレイを指定します。 display-id 引数は,この仮想ディスプレイ識別子を格納した符号なしロングワードのアドレスです。
SMG$RESTORE_PHYSICAL_SCREENルーチンは,SMG$SAVE_PHYSICAL_SCREENルーチンによって保存されたペーストボード・イメージを再作成します。SMG$SAVE_PHYSICAL_SCREENルーチンから戻された display-id 引数をSMG$RESTORE_PHYSICAL_SCREENルーチンに渡さなければなりません。SMG$SAVE_PHYSICAL_SCREENルーチンと SMG$RESTORE_PHYSICAL_SCREENルーチンを2回以上呼び出す場合には,呼び出しはネスティング方式で実行しなければなりません。つまり,最後に保存したペーストボードは最初に復元しなければなりません。
SS$_NORMAL 正常終了。 SMG$_INVDIS_ID display-id 引数に誤りがあります。 SMG$_INVPAS_ID pasteboard-id 引数に誤りがあります。
Return Cursor Position ルーチンは,指定された仮想ディスプレイの仮想カーソルの現在の位置を戻します。
SMG$RETURN_CURSOR_POS 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) アクセス write only 受け渡し方 by reference
指定された仮想ディスプレイ内の仮想カーソルの現在の行位置が書き込まれます。 start-row 引数は,現在の行位置が書き込まれる符号付きロングワードのアドレスです。start-column
OpenVMS 用法 longword_signed データ型 longword (signed) アクセス write only 受け渡し方 by reference
指定された仮想ディスプレイ内の仮想カーソルの現在のカラム位置が書き込まれます。 start-column 引数は,現在のカラム位置が書き込まれる符号付きロングワードのアドレスです。
SMG$RETURN_CURSOR_POS ルーチンは,指定された仮想ディスプレイ内の仮想カーソルの現在の行位置とカラム位置を戻します。
SS$_NORMAL 正常終了。 SMG$_INVDIS_ID display-id 引数に誤りがあります。 SMG$_WRONUMARG 引数の数が誤っています。
The Return Input Line ルーチンは,再呼び出しバッファ内の要求された行を,呼び出し側に戻します。この行は,指定された文字列に適合させる,あるいは適切な行数を指定することによって回復します。
SMG$RETURN_INPUT_LINE keyboard-id ,resultant-string [,match-string] [,byte-integer-line-number] [,resultant-length] [,character-set]
OpenVMS 用法 cond_value データ型 longword (unsigned) アクセス write only 受け渡し方 by value
keyboard-id
OpenVMS 用法 identifier データ型 longword (unsigned) アクセス read only 受け渡し方 by reference
仮想キーボードの識別子。 keyboard-id 引数は,読み取る対象となる仮想キーボードの識別子を格納した符号なしロングワードのアドレスです。この引数は,SMG$CREATE_VIRTUAL_KEYBOARDルーチンによって与えられます。
resultant-string
OpenVMS 用法 char_string データ型 character string アクセス write only 受け渡し方 by descriptor
SMG$RETURN_INPUT_LINEルーチンが,最終的に作成した行を書き込む文字列。 resultant-string 引数は,生成される行が書き込まれる文字列を示すディスクリプタのアドレスです。match-string
OpenVMS 用法 char_string データ型 character string アクセス read only 受け渡し方 by descriptor
再呼び出しする行を検索するときに使用される照合文字列。 match-string 引数は省略可能であり,この照合文字列を指すディスクリプタのアドレスです。検索操作は最後に入力した行から開始されます。byte-integer-line-number
OpenVMS 用法 byte_unsigned データ型 byte (unsigned) アクセス read only 受け渡し方 by reference
呼び出す行を検索するときに使用される行番号。 byte-integer-line-number 引数は省略可能であり,再呼び出しする行の行番号を格納した符号なしバイトのアドレスです。最後に入力した行の行番号は1です。resultant-length
OpenVMS 用法 word_unsigned データ型 word (unsigned) アクセス write only 受け渡し方 by reference
resultant-string 文字列の長さ。読み込まれたバイト数と,resultant-string 引数の最大サイズのどちらか小さい方が書き込まれます。resultant-length 引数は,読み込まれたバイト数または最大サイズが書き込まれる符号なしワードのアドレスです。character-set
OpenVMS 用法 longword_unsigned データ型 longword (unsigned) アクセス write only 受け渡し方 by reference
再呼び出しバッファから戻された行の文字集合。 character-set 引数は,文字集合コードを格納する符号なしロングワードのアドレスです(省略可能)。文字集合が未定義の場合には,SMG$C_UNKOWN が戻されます。
値 文字集合 (コードセット) SMG$C_ASCII ASCII文字集合 SMG$C_SPEC_GRAPHICS DEC特殊文字集合 SMG$C_SUPPLEMENTAL 補助文字集合 1 SMG$C_KANJI DEC漢字文字集合 SMG$C_JIS_KANA JISカタカナ文字集合 SMG$C_UNKNOWN 未定義文字集合 SMG$C_SDK Super DEC 漢字コードセット
SMG$RETURN_INPUT_LINEルーチンは,再呼び出しバッファ内の指定された行を,呼び出し側に戻します。このルーチンは,DCL 形式の "RECALL" コマンドを実現するための補助として使用されます。match-string 引数を指定した場合には,SMG$RETURN_INPUT_LINEルーチンは,指定された文字列と一致する行を検索し,その行を戻します。 byte-integer-line-number 引数を指定した場合には, SMG$RETURN_INPUT_LINEルーチンは,指定された行番号に対応する行を戻します。 match-string 引数と byte-integer-line-number 引数をどちらも指定した場合には,SMG$_INVARG が戻されます。match-string 引数を指定したときに,一致する文字列を検索できない場合には,SMG$_LINNOTFNDが戻されます。
SS$_NORMAL 正常終了。 SMG$_INVARG 引数に誤りがあります。 SMG$_INVKBD_ID keyboard-id 引数に誤りがあります。 SMG$_LINNOTFND 一致する行を検索できませんでした。 SMG$_WRONUMARG 引数の数が誤っています。 LIB$_xxx LIB$COPY_R_DX から戻されたエラー。
#1 |
---|
!+ ! This FORTRAN example uses the routine ! SMG$RETURN_INPUT_LINE to implement a ! RECALL/ALL command. !- IMPLICIT INTEGER (A-Z) INCLUDE '($SMGDEF)' INCLUDE '($SMGMSG)' CHARACTER*20 TEXT WRITE (5,*) 'Enter number of lines to save.' READ (5,*) R S = SMG$CREATE_PASTEBOARD(PBID) IF (.NOT. S) CALL LIB$STOP(%VAL(S)) S = SMG$CREATE_VIRTUAL_DISPLAY(22,70,DID,SMG$M_BORDER) IF (.NOT. S) CALL LIB$STOP(%VAL(S)) S = SMG$CREATE_VIRTUAL_KEYBOARD(KBID,,,,R) IF (.NOT. S) CALL LIB$STOP(%VAL(S)) S = SMG$PUT_LINE(DID,'Enter lines of text:') IF (.NOT. S) CALL LIB$STOP(%VAL(S)) S = SMG$PASTE_VIRTUAL_DISPLAY(DID,PBID,2,2) IF (.NOT. S) CALL LIB$STOP(%VAL(S)) !+ ! Read in lines of text. !- DO 10 I = 1,R S = SMG$READ_COMPOSED_LINE(KBID,,TEXT,'Example>',,DID) IF (.NOT. S) CALL LIB$STOP(%VAL(S)) 10 CONTINUE S = SMG$PUT_LINE(DID,'**** The lines of text are:') IF (.NOT. S) CALL LIB$STOP(%VAL(S)) !+ ! Recall all lines in the buffer. !- DO 30 N = 1,R S = SMG$RETURN_INPUT_LINE(KBID,TEXT,,N) IF (.NOT. S) CALL LIB$STOP(%VAL(S)) S = SMG$PUT_LINE(DID,TEXT) IF (.NOT. S) CALL LIB$STOP(%VAL(S)) 30 CONTINUE !+ ! Recall the line containing 'fox' !- S = SMG$PUT_LINE(DID,'**** The line containing "fox" is:',2) IF (.NOT. S) CALL LIB$STOP(%VAL(S)) S = SMG$RETURN_INPUT_LINE(KBID,TEXT,'FOX') IF (S .EQ. SMG$_LINNOTFND) TEXT = 'None found!' S = SMG$PUT_LINE(DID,TEXT) IF (.NOT. S) CALL LIB$STOP(%VAL(S)) END |
以下の例は,この FORTRAN プログラムによって生成される出力を示しています。
$ RUN RETURN Enter number of lines to save. 3 Enter lines of text: Example> PASTEBOARD Example> DISPLAY Example> KEYBOARD ****The lines of text are: KEYBOARD DISPLAY PASTEBOARD ****The line containing "fox" is: None found!
前へ | 次へ | 目次 | 索引 |