日本-日本語
日本HPホーム 製品 & サービス OpenVMS製品情報
≫  お問い合わせ


OpenVMS マニュアル


 

OpenVMS ドキュメント
ライブラリ

タイトルページ
目次
まえがき
第 1 部:概論
第 1 章:日本語SMG (SMG$)の概要
第 2 章:日本語 SMG の出力操作
第 3 章:日本語 SMG 入力操作
第 4 章:日本語 SMG の高度な機能
第 5 章:フォーリン・ターミナルのサポート
第 6 章:日本語 SMG を使用したプログラム開発
第 7 章:日本語 SMG ルーチンの呼び出しの例
第 2 部:リファレンス・セクション
第 8 章:日本語 SMG リファレンス
コマンド一覧
索引
PDF
OpenVMS ホーム
日本語 OpenVMS

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


目次 索引




Read String ルーチンは,仮想キーボードから文字列を読み込みます。

形式

SMG$READ_STRING keyboard-id ,resultant-string [,prompt-string] [,maximum-length] [,modifiers] [,timeout] [,terminator-set] [,resultant-length] [,word-terminator-code] [,display-id] [,initial-string] [,rendition-set] [,rendition-complement] [,terminator-string] [,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


入力行が書き込まれる文字列。resultant-string 引数は,テキストが書き込まれる文字列を示すディスクリプタのアドレスです。

prompt-string

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


読み込み操作に対するプロンプトとして使用される文字列。prompt-string 引数は,プロンプト文字列を示すディスクリプタのアドレスです。

maximum-length

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


読み込む最大バイト数を指定します。maximum-length 引数は,読み込む最大バイト数を格納した符号付きロングワードのアドレスです。この引数に対して指定できる最大値は 512 です。省略時の設定は 512 になります。

かな漢字変換を使用する場合には,変換中ではなく,変換後に maximum-length 引数に指定されたバイト数で変換された文字列は,切り捨てられます。
ただし, 変換バッファの最大長が 512 バイトであるため,512 バイトを超える文字列は変換できません。
得られた文字列の最後が全角文字の左半分であった場合には,その文字の左半分は切り捨てられ,maximum-length 引数よりも 1 バイト短い文字列が返されます。

modifiers

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


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

modifiers 引数に対して指定できる値は次のとおりです。

TRM$M_TM_CVTLOW 小文字を大文字に変換します。ASCII文字および補助文字に対してのみ有効です。
TRM$M_TM_NOECHO 入力された文字を画面にエコー表示しません。入力文字列の文字集合として Super DEC 漢字または DEC漢字文字集合が指定された場合には無視されます。
TRM$M_TM_PURGE 読み込み操作を実行する前に,先読みを可能にするバッファを消去します。
TRM$M_TM_TRMNOECHO 終了文字は入力されません。
TRM$M_TM_NOEDIT 拡張編集機能が禁止されます。入力文字列の文字集合として Super DEC 漢字または DEC漢字文字集合が指定された場合には,行編集は禁止されません。
TRM$M_TM_NORECALL 行再呼び出し機能が禁止されます。

modifiers 引数についての詳しい説明は,『OpenVMS I/O User's Reference Manual』のターミナル・ドライバの節を参照してください。TRM$ シンボルは, HP が提供するシステム・シンボル・ライブラリ内の $TRMDEF マクロ/モジュールによって定義されています。

timeout

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


プロンプトを表示した後,入力操作が終了するまでに認められる秒数を指定します。 timeout 引数は,時間切れの値を格納した符号付きロングワードのアドレスです。

timeout 引数を指定した場合には,満了時間の前に入力されたすべての文字,または終了キーが入力されるまでに入力されたすべての文字は resultant-string 引数に戻されます。この引数を省略した場合には,終了文字が入力されるまで,入力操作は有効です。

terminator-set


VMS 用法: unspecified
データ型: unspecified
アクセス: read only
受け渡し方: by descriptor, fixed length


どの文字が終了文字として取り扱われるかを指定するマスク(短い形式),またはこのようなマスクを示すディスクリプタ(長い形式)。terminator-set 引数は,マスクを示すディスクリプタのアドレスです。

0 〜 31 の範囲の ASCII 値を持つ終了文字を使用する場合には,2 ロングワードで構成される短い形式を使用してください。最初のロングワードは 0 であり,2 番目のロングワードは終了文字ビット・マスクです。このマスクを作成するには,適切な終了文字の ASCII 値に対応するビットを設定します。たとえば,[Ctrl/A] (ASCIIの 1 ) が終了文字であることを指定するには,terminator-set マスクのビット 1 を設定します。

0 〜 31以外の ASCII 値を持つ終了文字を使用する場合には,長い形式を使用します。まず,この形式のディスクリプタを作成してください。


マスク自体は短い形式の場合と同じ形式です。しかし,長い形式では,短い形式の場合より包括的な終了文字集合を使用できます。たとえば,16バイトのマスク・サイズの場合には,7ビットの ASCII文字を終了文字として設定できますが,マスク・サイズが 32バイトの場合には,8ビット文字を終了文字として設定できます。1〜32バイトのマスク・サイズを使用できます。

終了文字マスクがすべて 0 の場合には,指定された終了文字は存在しません。その場合,読み込み操作は,maximum-length 引数に指定された文字数が転送されたとき,または時間切れが満了したときに,読み込み操作を終了します。

terminator-set 引数を省略した場合には,終了文字集合は OpenVMS の省略時の終了文字集合になります。詳しい説明は,『OpenVMS I/O User's Reference Manual』を参照してください。

character-set 引数に SMG$C_KANJI または SMG$C_SDK が指定された場合には,かな漢字変換キーに設定されているキーを終了文字として指定しても,終了文字として認識されません。

resultant-length


VMS 用法: word_unsigned
データ型: word (unsigned)
アクセス: write only
受け渡し方: by reference


読み込まれたバイト数と,resultant-string 引数の最大サイズのどちらか小さい方が書き込まれます。resultant-length 引数は,読み込まれたバイト数または最大サイズが書き込まれる符号なしワードのアドレスです。

word-terminator-code


VMS 用法: word_unsigned
データ型: word (unsigned)
アクセス: write only
受け渡し方: by reference


キー終了文字コード。word-terminator-code 引数は,どの文字またはどのキーが読み込み操作を終了したかを示すコードが書き込まれる符号なしワードのアドレスです。キー終了文字コードは SMG$K_TRM_keyname の形式です。キー名については 第 3 章表 3-1 を参照してください。

display-id


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


ディスプレイ識別子。display-id 引数は,ディスプレイ識別子を格納した符号なしロングワードのアドレスです。画面管理機能の出力ルーチンを使用しない場合のみ,この引数は省略可能です。

画面管理機能の入力ルーチンと出力ルーチンを使用する場合には,この引数は入力が行われる仮想ディスプレイを指定します。指定される仮想ディスプレイは, keyboard-id によって指定されるペーストボードと同じペーストボードにペーストされていなければならず,他のディスプレイによって隠されていない状態でなければなりません。仮想ディスプレイの隠された領域から入力を受け付けることはできません。

複数の仮想ディスプレイが存在する場合には,各仮想ディスプレイに対して仮想カーソルの位置が割り当てられています。同時に,物理カーソルの現在の位置に対応する物理カーソル位置が 1 つだけあります。display-id 引数を指定した場合には,読み込み操作は指定された仮想ディスプレイ内の現在の仮想カーソルの位置から開始されます。ディスプレイ識別子を省略した場合には,読み込み操作は現在の物理カーソルの位置から開始されます。prompt-string 引数の長さと入力されるキーの合計は,ディスプレイ内に表示されるカラム数に制限されます。

  注意
この仮想ディスプレイはカラム 1 にペーストしなければならず,その右側に他の仮想ディスプレイを配置することはできません。この制約事項が必要なのは,この条件が満足されない場合,[Ctrl/R] または [Ctrl/U] の発生によって,右側にペーストされた出力も含めて行全体が消去されるからです。



initial-string

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


初期文字列(省略可能)。initial-string 引数は,フィールドの初期文字列を格納した省略可能な文字列を示すディスクリプタのアドレスです。文字列はキーボードから入力されたかのように,ディスプレイの入力領域に書き込まれます。文字列は通常の方法で編集できます(TRM$M_TM_NOEDIT が設定されていない場合)。文字列長は maximum-length 引数より短くなければなりません。短くない場合には,SMG$READ_STRINGルーチンはただちに終了し,キーボード入力は受け付けられません。

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-set 引数を使用する場合は,display-id 引数を指定しなければなりません。

rendition-complement

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


属性補足指定子。 rendition-complement 引数は省略可能で,ロングワード・ビット・マスクのアドレスです。この引数で指定する補足的な属性が仮想ディスプレイ上に設定されます。 rendition-set 引数で指定できる属性はすべて, rendition-complement 引数で補足指定することができます。

rendition-complement 引数を使用する場合は,display-id 引数を指定しなければなりません。

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 属性を無効にする。



terminator-string


VMS 用法: char_string
データ型: character string
アクセス: write only
受け渡し方: by descriptor


入出力を終了した文字。terminator-string 引数は省略可能であり,終了文字が書き込まれるディスクリプタのアドレスです。terminator-string 引数は,入出力を終了するために押されたキーではなく,実際の終了文字を戻します。

character-set


VMS 用法: unsigned_longword
データ型: longword (unsigned)
アクセス: read only
受け渡し方: by reference


入力される文字の文字集合を指定します(省略可能)。 character-set 引数は入力される文字集合を格納する符号なしロングワードのアドレスです。この引数が省略された場合には,指定された仮想ディスプレイの省略時の文字集合が使用されます。この引数を省略し,かつ仮想ディスプレイが指定されていない場合には, SMG$DEFAULT_CHARACTER_SET 論理名で示される文字集合が使用されます。

character-set 引数として次の値を指定できます。

文字集合 (コードセット)
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$DEFAULT_CHARACTER_SET 論理名に定義できる値については, 第 2.2.14 項表 2-2 を参照してください。


説明

SMG$READ_STRING ルーチンは,仮想キーボードから読み込んだ文字列を戻します。 SMG$READ_STRING ルーチンを使用する場合には,ペーストボードと仮想ディスプレイの両方に対して,ディスプレイのバッチ処理を禁止しておかなければなりません。

SMG$READ_STRING が読み込んだテキストは,SMG$READ_COMPOSED_LINE を使用して後で再呼び出しできるように保存されます。表示属性の指定はプロンプト(プロンプト文字列が存在する場合)と入力文字のエコー表示の両方に対して適用されます。

入力文字の文字集合がDEC漢字または Super DEC 漢字文字集合の場合には,日本語 SMG は,かな漢字変換を行います。


戻される状態値

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$SCOPY_R_DX から戻されたエラー。
RMS$_xxx $GET から戻されたエラー(RMS$_EOF を除く)。
IM$_xxx IMLIB から戻されたエラー。


#1
C+ 
C This FORTRAN example program demonstrates how to use 
C SMG$READ_STRING. 
C 
C This routine creates a virtual display and writes it to the pasteboard. 
C Data is placed in the virtual display using SMG$PUT_CHARS. 
C- 
 
C+ 
C Include the SMG definitions. In particular, we want SMG$M_BORDER. 
C- 
 
        IMPLICIT INTEGER (A-Z) 
        INCLUDE '($SMGDEF)' 
        CHARACTER*20 TEXT 
 
C+ 
C Create a virtual display with a border using SMG$CREATE_VIRTUAL_DISPLAY. 
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 Use SMG$CREATE_PASTEBOARD to create the pasteboard. 
C- 
 
        STATUS = SMG$CREATE_PASTEBOARD (PASTE1) 
        IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS)) 
 
C+ 
C Create a virtual keyboard by calling SMG$CREATE_VIRTUAL_KEYBOARD. 
C- 
 
        STATUS = SMG$CREATE_VIRTUAL_KEYBOARD ( KEYBOARD1 ) 
        IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS)) 
 
C+ 
C Use SMG$PASTE_VIRTUAL_DISPLAY to paste the virtual display 
C at row 3, column 9. 
C- 
 
        STATUS = SMG$PASTE_VIRTUAL_DISPLAY ( DISPLAY1, PASTE1, 3, 9 ) 
        IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS)) 
 
C+ 
C Read a string from the virtual pasteboard using SMG$READ_STRING. 
C- 
 
        STATUS = SMG$READ_STRING ( KEYBOARD1, 
     1          TEXT, 'prompt', 20, , , , , , DISPLAY1 ) 
        IF (.NOT. STATUS) CALL LIB$SIGNAL(%VAL(STATUS)) 
 
        END 
 
 


目次 索引

© 2012 Hewlett-Packard Development Company, L.P.