キーワード・パラメータは、パラメータ・リスト内の任意の順序で指定することができます。パラメータ・リストはキーワード・パラメータだけで構成することも、位置パラメータとキーワード・パラメータを混在させて構成することもできます。(一般的には、位置パラメータが (適切な順序で) 最初に指定され、その次にキーワード・パラメータが指定されます)。すべてのパラメータ (位置、およびキーワード) は、コロン (:) で区切られなければなりません。キーワード・パラメータのパラメータ・リストの標準的な構文は、以下のとおりです。
USE device:(/KEYWORD1=value1:/KEYWORD2=value2:.../KEYWORDn=valuen):"mnespace"
個別のパラメータとそれぞれの位置は、デバイスに依存しています。標準規約として、位置パラメータやキーワード・パラメータのいずれかを使用して、同じパラメータと値を指定することができます。文字コード文字列は、/PARAMS キーワードを使用して キーワード・パラメータとして指定することができます。
mnespace
このデバイスによって使用されるデバイス制御ニーモニックを含む、ニーモニック・スペースの名前です。既定で、InterSystems IRIS はすべてのデバイスとシーケンシャル・ファイル用に ^%X364 (ANSI X3.64 互換) のニーモニック・スペースを提供しています。既定のニーモニック・スペースは、デバイスのタイプごとに割り当てられます。
管理ポータルに進み、[システム管理]、[構成]、[デバイス設定]、[IO設定] の順に選択します。[ファイル]、[その他]、または [ターミナル] のニーモニック・スペース設定を表示して編集します。
ニーモニック・スペースは、READ コマンドと WRITE コマンドによって使用されるデバイス制御ニーモニックに対するエントリ・ポイントを含むルーチンです。READ コマンドと WRITE コマンドは、/mnemonic(params) 構文を使用して、デバイス制御ニーモニックを呼び出します。このデバイス制御ニーモニックは、カーソルを画面内の指定された位置に移動するなどの処理を実行します。
mnespace 引数を使用して、既定のニーモニック・スペースの割り当てをオーバーライドします。このデバイスで使用されている制御ニーモニック・エントリ・ポイントを含む、ObjectScript ルーチンを指定します。二重引用符で囲むことが必要です。このオプションは、READ コマンドや WRITE コマンドでデバイス制御ニーモニックを使用したい場合にのみ指定します。ニーモニック空間が存在しない場合、InterSystems IRIS は <NOROUTINE> エラーを発行します。ニーモニック・スペースに関する詳細は、"入出力デバイス・ガイド" の "入出力デバイスとコマンド" を参照してください。
例
以下の例では、USE コマンドはシーケンシャル・ファイル "STUDENTS" を現在のデバイスとして設定し、ファイルの開始行を基準にして 256 行目から順次読み取りが開始されるファイル・ポインタを設定します。
USE "STUDENTS":256
デバイスの所有権
デバイスの所有権は OPEN コマンドで設定されます。唯一の例外は主デバイスで、これはユーザがサインオンしたときにプロセスに割り当てられるもので、通常は端末になります。USE コマンドで指定されたデバイスをそのプロセスが所有していない場合、InterSystems IRIS は <NOTOPEN> エラー・メッセージを返します。
現在のデバイス
現在のデバイスは、READ コマンドおよび WRITE コマンドによる入出力処理に使用されるデバイスです。READ コマンドは、現在のデバイスから入力を取得し、WRITE コマンドは、現在のデバイスに出力を送ります。
InterSystems IRIS は現在のデバイスの ID を特殊変数 $IO に保持します。USE 要求が成功した場合、InterSystems IRIS は $IO に指定デバイスの ID を設定します。%Library.DeviceOpens in a new tab クラスの GetType()Opens in a new tab メソッドは、現在のデバイスのデバイス・タイプを返します。
主デバイス
特殊なデバイス番号 0 (ゼロ) は、主デバイスを表します。各プロセスに 1 つの主デバイスが割り当てられています。InterSystems IRIS は主デバイスの ID を特殊変数 $PRINCIPAL に保持します。主デバイスは、ユーザが InterSystems IRIS を開始したときに自動的に開きます。最初は、主デバイス ($PRINCIPAL) と現在のデバイス ($IO) は同じものです。
USE コマンドを実行した後、現在のデバイス ($IO) は通常、最後に実行した USE コマンドで指定されていたデバイスになっています。
多くのプロセスが同じ主デバイスを持つことができますが、一度に 1 つしか持つことができません。あるプロセスがデバイスの OPEN コマンドの実行に成功した後は、明示的な CLOSE コマンドの実行、プロセス自体の停止、またはユーザによるセッション終了によって、そのプロセスがデバイスを解放するまで、他のプロセスがそのデバイスに対して OPEN コマンドを実行することはできません。
ターミナルから主デバイス以外のデバイスに対して OPEN と USE を発行することはできますが、InterSystems IRIS は > プロンプトに戻るたびに、暗黙に USE 0 を発行します。0 以外のデバイスの使用を継続するには、> プロンプトで入力する行ごとに USE コマンドを実行する必要があります。
以下のいずれかの場合に、自動的に主デバイスが現在のデバイスに設定されます。
USE 0 は、主デバイスに対する OPEN コマンドを意味します。他のプロセスがそのデバイスを所有している場合、このプロセスは OPEN コマンドが発生した場合と同じように、暗黙の OPEN で停止します。
USE 0 は、主デバイスに対して OPEN 0 コマンドを実行することを意味しますが、(以前の OPEN コマンドが原因で) プロセスが所有していない他のデバイスに対して USE コマンドを実行すると、<NOTOPEN> エラーが返されます。
Note:
大多数の InterSystems IRIS プラットフォームでは、入力主デバイスを閉じることができますが、UNIX® 用の InterSystems IRIS ではできません。したがって、他のジョブの子であるジョブがログイン端末で入出力を実行しようとした場合、そのジョブは、InterSystems IRIS をログオフするまで停止します。このとき、出力が表示されることも、表示されないこともあります。
UNIX® での NULL デバイスの使用
NULL デバイス (UNIX® の場合は /dev/null) に対して、OPEN コマンドおよび USE コマンドを実行すると、InterSystems IRIS は、その NULL デバイスをダミー・デバイスとして扱います。この後の READ コマンドは、即座に NULL 文字列 ("") を返します。また、WRITE コマンドの場合は、直ちに成功を返します。いずれも、実データは、読み取りまたは書き込みされていません。UNIX® ベースのシステムの場合、デバイス /dev/null は UNIX® システム・コール open、write、および read をバイパスします。
JOB コマンドで他のプロセスによって開始されたプロセスには、既定で、主デバイスとして /dev/null が設定されます。
InterSystems IRIS の外部から /dev/null を開く場合、例えば InterSystems IRIS の出力を UNIX® シェルから /dev/null に転送する場合は、他のデバイスに行われるのと同じように、UNIX® システム・コールによって処理が行われます。
関連項目