前へ | 次へ | 目次 | 索引 |
SMG$DEFAULT_CHARACTER_SET 論理名に定義できる値については, 第 2.2.14 項 の 表 2-2 を参照してください。
SMG$READ_COMPOSED_LINE ルーチンは,指定されたキー・テーブルに定義されている方法で,通常のキー・ストロークとキー同値文字列で構成される 1 行を読み込みます。キー定義の属性は,同値文字列をエコー表示するかどうかと,定義されているキー・ストロークによって読み込み操作を終了するかどうかを制御します。通常のキー・ストロークは常にエコー表示されます。キャリッジ・リターンは常に読み込み操作を終了します。[Ctrl/Z]が入力されたときに,キー定義テーブルに [Ctrl/Z]に対する定義が登録されていない場合には, "EXIT" がエコー表示され,読み込み操作は終了します。 [Ctrl/Z]が行の最初の文字として入力された場合には,SMG$_EOF が戻されます。それ以外の場合には,次の読み込み操作で SMG$_EOF が戻されます。キー定義に属性として指定されていない限り,他の終了文字は認識されません。
矢印キー([↑],[↓])と[Ctrl/B]が定義されていない場合には, SMG$READ_xxxx ルーチンを使用して読み込んだ前の行は,矢印キー([↑], [↓])を使用して再呼び出しすることができます。後で再呼び出しするために保存される行数は,SMG$CREATE_VIRTUAL_KEYBOARD ルーチンの recall-size 引数に応じて異なります。省略時の設定は 20 行です。
SMG$READ_COMPOSED_LINE ルーチンは入力操作を実行する前に,SMG$FLUSH_BUFFER ルーチンを呼び出します。このため,入力操作を開始するときに,画面イメージは常に最新の状態に更新されます。SMG$READ_COMPOSED_LINE ルーチンを使用する場合には,ペーストボードと仮想ディスプレイの両方に対して,ディスプレイ・バッチ処理を禁止しておかなければなりません。
入力文字の文字集合がDEC漢字または Super DEC 漢字文字集合であった場合には, SMG$READ_COMPOSED_LINE ルーチンが,かな漢字変換の処理を行います。この場合,変換に使用されるキーは, SMG$DEFINE_KEY ルーチンおよび SMG$ADD_KEY_DEF ルーチンによるキー定義に優先されます。
SS$_NORMAL 正常終了。 SS$_ABORT 実行中に入出力操作が強制終了されました (SMG$CANCEL_INPUTルーチンにより)。 SS$_CANCEL キューに登録している間に入出力操作が取り消されました (SMG$CANCEL_INPUTルーチンにより)。 SMG$_EOF ファイルの最後。 SMG$_ILLBATFNC バッチ処理されているディスプレイからの入力は認められません。 SMG$_INVARG 引数が誤っています。 SMG$_INVCOL カラム番号に誤りがあります。読み込み操作が仮想ディスプレイの外側のカラムを使用しようとしました。 SMG$_INVDIS_ID display-id 引数に誤りがあります。 SMG$_INVKBD_ID keyboard-id 引数に誤りがあります。 SMG$_INVKTB_ID key-table-id 引数に誤りがあります。 SMG$_WRONUMARG 引数の数が誤っています。 SS$_xxx $QIOWから戻された状態値。 JSY$_xxx JSY$_xxx から戻された状態値。 LIB$_xxx LIB$COPY_R_DX から戻された状態値。 RMS$_xxx $GET から戻された状態値(RMS$_EOF を除く)。 IM$_xxx IMLIB から戻された状態値。
Read Text from Display ルーチンは,仮想ディスプレイから 1 行のテキストを読み込みます。
SMG$READ_FROM_DISPLAY display-id ,resultant-string [,terminator-string] [,start-row] [,rendition-string] [,character-set-string]
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 ルーチンによって与えられます。
resultant-string
VMS 用法: char_string データ型: character string アクセス: write only 受け渡し方: by descriptor
SMG$READ_FROM_DISPLAY ルーチンが仮想ディスプレイから読み込んだ情報を書き込む文字列。resultant-string 引数は,文字列が書き込まれる文字列を示すディスクリプタのアドレスです。terminator-string
VMS 用法: char_string データ型: character string アクセス: read only 受け渡し方: by descriptor
逆向き検索を終了する終了文字を格納した文字列。戻される文字列の開始位置を決定するために用いられます。terminator-string 引数は,終了文字の文字列を示すディスクリプタのアドレスです。terminator-string 引数を省略した場合には,逆向き検索は実行されず,戻される文字列はカーソルの現在の位置にある文字から始まります。start-row
VMS 用法: longword_signed データ型: longword (signed) アクセス: read only 受け渡し方: by reference
start-row 引数は,読み込まれる仮想ディスプレイの行番号を格納した,符号付きロングワードのアドレスです。この引数は省略可能です。rendition-string
OpenVMS 用法 char_string データ型 character string アクセス write only 受け渡し方 by descriptor
ビデオ属性を制御するビット・マスク文字列(省略可能)。 rendition-string 引数は,ビット・マスク文字列を示すディスクリプタのアドレスです。ディスプレイ上のテキスト文字列のカラムに対応する属性を指定することができます。この rendition-string 引数で指定できる属性は次のとおりです。
SMG$M_BLINK 点滅文字を指示します。 SMG$M_BOLD 通常より明るい輝度の文字を指定します。 SMG$M_REVERSE 反転表示文字を指示します。つまり,仮想ディスプレイの現在の属性の反対の状態で文字を表示しています。 SMG$M_UNDERLINE 下線付き文字を指示します。 SMG$M_INVISIBLE 表示されない文字を指定します。つまり,文字は仮想ディスプレイ内に存在しますが,ペーストボードには表示されていません。
character-set-string
OpenVMS 用法 char_string データ型 character string アクセス write only 受け渡し方 by descriptor
文字集合を示すバイト文字列(省略可能)。 character-set-string 引数は文字集合の文字列を示すディスクリプタのアドレスです。ディスクリプタ中の各バイトの値が,ディスプレイ中のテキスト文字列のバイトに対応する文字集合を示します。この character-set-string 引数に返される値は次の値の組み合せからなります。
値 文字集合 (コードセット) 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$READ_FROM_DISPLAY ルーチンは,指定された仮想ディスプレイの現在の行のすべてのテキストまたは一部のテキストを格納する文字列を戻します。 terminator-string 引数を省略した場合には,現在の行の内容(現在のカラム位置から右端のカラム位置まで)が戻されます。現在のカラム位置が,全角文字の右半分である場合には,その位置は未定義文字として扱われます。 start-row 引数を指定した場合には,start-row 引数によって指定される行の1カラム目から右端のカラムまでの内容が resultant-string 引数に戻されます。start-row 引数を指定した場合には,terminator-string 引数は無視されます。
terminator-string 引数を指定した場合には,その文字列内の各文字は逆向き検索の終了文字として機能します。つまり,戻される最初の文字列を判断するために使用されます。指定された終了文字がまったく検出されない場合には,検索操作はその行の最初の文字位置で終了します。
線画を読みこむ場合には,装置に依存しない文字 (+, --, |) で戻されます。
SS$_NORMAL 正常終了。 SMG$_INVDIS_ID display-id 引数に誤りがあります。 SMG$_DSPIN_USE 同じディスプレイへの日本語SMGルーチンコールを中断させた AST ルーチンから,日本語 SMGルーチンが呼ばれました。 SMG$_KBDIN_USE 2 回目または次の読み込み操作で,複数の QIO が同じチャネルを使用しようとしました。 LIB$_INSVIRMEM 仮想メモリが不足しています。 LIB$_INVSTRDES 文字列ディスクリプタに誤りがあります。
#1 |
---|
C+ C This FORTRAN example demonstrates the use of SMG$READ_FROM_DISPLAY. C- C+ C Include the SMG definitions. In particular, we want SMG$M_BORDER. C- IMPLICIT INTEGER (A-Z) INCLUDE '($SMGDEF)' CHARACTER*80 TEXT C+ C Use SMG$CREATE_VIRTUAL_DISPLAY to create the virtual display C and give it a border. C- ROWS = 5 COLUMNS = 60 STATUS = SMG$CREATE_VIRTUAL_DISPLAY 1 (ROWS, COLUMNS, DISPLAY1, SMG$M_BORDER) IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS)) C+ C Create the pasteboard by calling SMG$CREATE_PASTEBOARD. C- STATUS = SMG$CREATE_PASTEBOARD (PASTE1) IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS)) C+ C Call SMG$PASTE_VIRTUAL_DISPLAY and SMG$PUT_LINE to paste C the virtual display and put some text on line 2. C- STATUS = SMG$PASTE_VIRTUAL_DISPLAY ( DISPLAY1, PASTE1, 2, 10 ) IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS)) STATUS = SMG$PUT_LINE ( DISPLAY1, ' ' ) IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS)) STATUS = SMG$PUT_LINE ( DISPLAY1, 1 'This is an example of using SMG$READ_FROM_DISPLAY.' ) IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS)) C+ C Use SMG$READ_FROM_DISPLAY to read line 2 from the virtual C display, starting at column 22. C- STATUS = SMG$SET_CURSOR_ABS ( DISPLAY1, 2, 22 ) IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS)) C+ C Search line 2 from column 22 to column 1 for the null string. C Since no terminator will be supplied, no "back-searching" will take C place. TEXT will be assigned the "value" of the line from C column 22 to the rightmost column. C- STATUS = SMG$READ_FROM_DISPLAY ( DISPLAY1, TEXT ) IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS)) C+ C Put the line of text found into the virtual display at row 4, C column 10 by calling SMG$SET_CURSOR_ABS and SMG$PUT_LINE. C- STATUS = SMG$SET_CURSOR_ABS ( DISPLAY1, 4, 10 ) IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS)) STATUS = SMG$PUT_LINE ( DISPLAY1, TEXT ) IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS)) C+ C Use SMG$SET_CURSOR_ABS to set the cursor back to line 2, column 22. C- STATUS = SMG$SET_CURSOR_ABS ( DISPLAY1, 2, 22 ) IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS)) C+ C Use SMG$READ_FROM_DISPLAY to search line 2 from column 22 to C column 1 for an "f". Now, "back-searching" will take place. C Starting at column 22, "back-track" to column 1 looking for "f". C Text will then be assigned the "value" of the line from the C present cursor position (where the "f" is, to the rightmost C column. C- STATUS = SMG$READ_FROM_DISPLAY ( DISPLAY1, TEXT, 'f' ) IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS)) C+ C Put the line of text found into the virtual display at row 4, column 10. C- STATUS = SMG$SET_CURSOR_ABS ( DISPLAY1, 5, 10 ) IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS)) STATUS = SMG$PUT_LINE ( DISPLAY1, TEXT ) IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS)) END |
この FORTRAN プログラムによって生成される出力は, 図 8-33 に示すとおりです。
図 8-33 SMG$READ_FROM_DISPLAY ルーチンを呼び出す出力
Read a Single Character ルーチンは,キーストロークを読み込み,そのキーストロークの終了文字コードを戻します。
SMG$READ_KEYSTROKE keyboard-id ,word-terminator-code [,prompt-string] [,timeout] [,display-id] [,rendition-set] [,rendition-complement]
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 ルーチンによって与えられます。
word-terminator-code
OpenVMS 用法 word_unsigned データ型 word (unsigned) アクセス write only 受け渡し方 by reference
キー終了文字コード。word-terminator-code 引数は,どの文字またはどのキーが読み込み操作を終了したかを示すコードが書き込まれる符号なしワードです。キー終了文字コードは SMG$K_TRM_keyname の形式です。キー名は 第 3 章 の 表 3-1 に示すとおりです。prompt-string
OpenVMS 用法 char_string データ型 character string アクセス read only 受け渡し方 by descriptor
プロンプト文字列。prompt-string 引数は省略可能な文字列であり,読み込み操作に対するプロンプトとして使用されます。timeout
OpenVMS 用法 longword_signed データ型 longword (signed) アクセス read only 受け渡し方 by reference
時間切れの値。timeout 引数は省略可能です。この引数を指定した場合には,時間切れの前に入力されたキーストロークは読み込まれます。display-id
OpenVMS 用法 identifier データ型 longword (unsigned) アクセス read only 受け渡し方 by reference
仮想ディスプレイ識別子。display-id 引数は省略可能であり,読み込み操作が実行される仮想ディスプレイの識別子を格納した,符号なしロングワードのアドレスです。複数の仮想ディスプレイがペーストされているときに, prompt-string 引数を指定する場合には,プロンプト文字列をどの仮想ディスプレイに書き込むかを指定するために,display-id 引数も指定しなければなりません。prompt-string 引数を指定しない場合には, display-id 引数も指定しないでください。
複数の仮想ディスプレイが存在する場合には,各仮想ディスプレイにはそれぞれ仮想カーソルが対応づけられます。同時に,物理カーソルの現在の位置に対応する物理カーソルが 1 つだけ設定されます。
display-id 引数を指定した場合には,読み込み操作は指定された仮想ディスプレイ内の現在の仮想カーソルの位置から開始されます。display-id 引数を省略した場合には,読み込み操作は現在の物理カーソルの位置から開始されます。prompt-string 引数入力されるキーの合計の長さは,仮想ディスプレイに表示可能なカラム数に制限されます。
rendition-set
OpenVMS 用法 mask_longword データ型 longword (unsigned) アクセス read only 受け渡し方 by reference
プロンプトに対する属性指定子。rendition-set 引数は省略可能であり,ロングワード・ビット・マスクのアドレスです。このビット・マスク内で設定されている各属性に対して,ディスプレイ内の対応する属性が設定されます。 rendition-set 引数を使用して指定できる属性は次のとおりです。
SMG$M_BLINK 点滅文字を指定します。 SMG$M_BOLD 通常より明るい輝度の文字を表示します。 SMG$M_REVERSE 文字を反転表示することを指定します。つまり仮想ディスプレイの現在の属性の反対の状態で文字を指定します。 SMG$M_UNDERLINE 下線付き文字を指定します。 SMG$M_INVISIBLE 表示されない文字を指定します。つまり,文字は仮想ディスプレイ内に存在しますが,ペーストボードには表示されません。 SMG$M_USER1 から SMG$M_USER8 ユーザ定義属性を指定します。
rendition-set 引数を使用する場合には,display-id 引数を指定しなければなりません。
rendition-complement
OpenVMS 用法 mask_longword データ型 longword (unsigned) アクセス read only 受け渡し方 by reference
プロンプトに対する属性補足指定子。rendition-complement 引数は省略可能であり,ロングワード・ビット・マスクのアドレスです。ビット・マスク内で属性が設定されている場合には,ディスプレイ内で対応する属性が補足されます。 rendition-set 引数に指定できる属性はすべて, rendition-complement 引数を使用して補足できます。 rendition-complement 引数を使用する場合には,display-id 引数を指定しなければなりません。
前へ 次へ 目次 索引