Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

$KEY

最新の READ からのターミネータ文字を含みます。

Synopsis

$KEY
$K

概要

$KEY は、現在のデバイスで最後の READ コマンドを終了した文字、あるいは文字シーケンスを含みます。$KEY$ZB は非常に類似した関数です。これらを比較した詳細は、以下を参照してください。

  • ターミネータ文字 ([Enter] キーなど) で最後の READ が終了した場合、$KEY にはそのターミネータ文字が含まれます。

  • タイムアウトや長さ制限で最後の READ が終了した場合、$KEY は NULL 文字列を返します。ターミネータ文字に出会うことはありません。

  • 最後の READ が単一文字 (READ *a) の読み込みで、文字が入力された場合、$KEY には実際の入力文字が含まれます。

$KEY$ZB は類似していますが、同じものではありません。以下の比較をご覧ください。

SET コマンドを使用して、$KEY の値を指定することができます。 ZZDUMP コマンドを使用して、$KEY の値を表示することができます。

ターミナル・セッション中は、すべてのコマンド行の最後はキャリッジ・リターン (16 進数で 0D) として $KEY で記録されます。また、$KEY 特殊変数は、ターミナル・セッションを初期化するプロセスによって、キャリッジ・リターンに初期化されます。したがって、ターミナル・セッション中に READ コマンド、または SET コマンドによって設定された $KEY の値を表示するには、$KEY 値を同じコード行のローカル変数にコピーしなければなりません。

以下の例では、可変長 READ コマンドはターミナルからデータを受け取るか、10 秒後にタイムアウトになります。ユーザがタイムアウト前にデータを入力した場合、$KEY には、データ入力を終了したユーザ入力のキャリッジ・リターン (16 進数の 0D) が含まれます。しかし READ がタイムアウトになった場合、$KEY にはターミネータ文字が受け取られなかったことを示す NULL 文字列が含まれます。

  READ "Ready or Not: ",x:10
  ZZDUMP $KEY

以下の例では、固定長 READ コマンドはターミナルからデータを受け取るか、10 秒後にタイムアウトになります。ユーザが指定の文字数 (この場合は 1 文字) を入力した場合、READ 処理を終了するためにユーザは [Enter] キーを押す必要はありません。指定の文字数を入力する代わりに [Enter] を押すことで、READ プロンプトに応答することができます。

読み込み処理がタイムアウトになった場合、$KEY$ZB の両方とも NULL 文字列を含みます。固定長の READ 処理はターミネータ文字なしで終了されるため、ユーザが 1 文字の中間文字を入力すると、$KEY は NULL 文字列を含みます。しかし、ユーザが中間文字を入力せずに [Enter] キーを押すと、$KEY はユーザ入力のキャリッジ・リターンを含みます。

   READ "Middle initial: ",z#1:10
   IF $ASCII($ZB)=-1 {
     WRITE !,"The read timed out" }
   ELSEIF $ASCII($KEY)=-1 {
     WRITE !,"A character was entered" }
   ELSEIF $ASCII($KEY)=13 {
     WRITE !,"A line return was entered" }
   ELSE {
     WRITE !,"Unexpected result" } 

メモ

$KEY と $ZB の比較

$KEY$ZB の両方は、READ 演算を終了する文字を含みます。これらの 2 つの特殊変数は類似していますが、個別のものです。以下は主な相違点です。

  • $KEYSET コマンドを使用して設定することができますが、$ZB を設定することはできません。

  • 以下の成功した固定長 READ では、$ZB は最終文字入力を含みます (例えば、固定長の READ としての入力が 5 桁の郵便番号 "02138" であるとき、$ZB は "8" を含みます)。固定長 READ が正常に終了すると、$KEY は NULL 文字列 ("") を含みます。

  • $KEY は、磁気テープ入出力などのブロック型の読み込み処理や書き込み処理をサポートしません。

コマンド行の $KEY

ターミナル・コマンド行から対話的にコマンドを実行するとき、各コマンド行を実行するために <RETURN> ([Enter]) を押します。$KEY$ZB 特殊変数は、このコマンド行ターミネータ文字を記録します。したがって、$KEY$ZB を使用して読み込み処理の最終状況を返すには、同じコマンド行の一部として変数を設定しなければなりません。

例えば、コマンド

>READ x:10

をコマンド行から実行する場合、$KEY をチェックします。これには、読み込み処理の結果が含まれません。コマンド行を実行した <RETURN> 文字が含まれます。読み込み処理の結果を返すには、以下のように同じコマンド行で $KEY でローカル変数を設定します。

>READ x:10 SET rkey=$KEY

これにより、読み込み処理で設定された $KEY の値が保持されます。 この読み込み処理値を表示するには、以下のコマンド行文のいずれかを実行します。

>WRITE $ASCII(rkey)
   ; returns -1 for null string (time out) 
   ; returns ASCII decimal value for terminator character
>ZZDUMP rkey
   ; returns blank line for null string (time out)
   ; returns hexadecimal value for terminator character

関連項目

FeedbackOpens in a new tab