Skip to main content

USE (ObjectScript)

現在のデバイスとして、デバイスを構築します。

構文

USE:pc useargument,...
U:pc useargument,...

useargument には、以下を指定できます。

device:(parameters):"mnespace"

引数

引数 説明
pc オプション — 後置条件式。
device 現在のデバイスとして選択されるデバイスです。デバイス ID、またはデバイス・エイリアスのいずれかで指定されます。デバイス ID は整数 (デバイス番号)、デバイス名、またはシーケンシャル・ファイルのパス名のいずれかです。文字列の場合は引用符で囲まれます。
parameters オプション — デバイスの特性を設定するのに使用されるパラメータ・リスト。パラメータ・リストは括弧で囲まれ、リスト内のパラメータはコロンで区切られます。パラメータは (パラメータ・リストの固定順で指定された) 位置、またはキーワード (順不同) のいずれかです。位置パラメータとキーワード・パラメータは、混在させることもできます。個別のパラメータとそれぞれの位置とキーワードは、デバイスに依存しています。
mnespace オプション — 引用符付き文字列として指定された、このデバイスで使用する制御ニーモニックを含むニーモニック空間名です。

概要

USEdevice では、指定されたデバイスが現在のデバイスとして設定されます。このコマンドを実行する前に、プロセスでは OPEN コマンドを使用して、デバイスの所有権を設定しておく必要があります。

現在のデバイスは、別の USE コマンドを実行して、他に所有しているデバイスを現在のデバイスとして選択するか、プロセスを終了するまで、そのまま保持されます。

USE コマンドはターミナル・デバイス、スプール・デバイス、TCP バインディング、プロセス間パイプ、名前付きパイプ、ジョブ内通信などのデバイスを現在のデバイスとして設定することができます。USE コマンドは、シーケンシャル・ファイルを開くためにも使用できます。device 引数は、引用符付きの文字列としてファイル・パス名を指定します。

USE コマンドで利用可能な parameters は、デバイスによって異なります。多くの場合、利用できる parametersOPEN コマンドで利用可能なものと同じです。しかし、OPEN コマンドでしか設定できないデバイス・パラメータもあり、逆に USE コマンドでしか設定できないデバイス・パラメータもあります。

USE コマンドは、コンマで区切られた複数の useargument を指定することができます。しかし、現在のデバイスは一度に 1 つしか持つことができません。複数の useargument を指定すると、最後の useargument で指定されたデバイスが現在のデバイスとなります。USE のこの形式は、複数のデバイスに対して parameters を設定するために使用され、現在のデバイスとして最後に名付けられたデバイスを設定します。

引数

pc

オプションの後置条件式。InterSystems IRIS は、後置条件式が True (0 以外の数値に評価される) の場合にコマンドを実行します。InterSystems IRIS は、後置条件式が False (0 に評価される) の場合はコマンドを実行しません。詳細は、"コマンド後置条件式" を参照してください。

device

現在のデバイスとして選択するデバイス。対応する OPEN コマンドで指定したものと同じデバイス ID (または他のデバイス識別子) を指定します。デバイスの指定に関する詳細は、"OPEN" コマンドを参照してください。

parameters

現在のデバイスとして使用されるデバイスの動作特性を設定するために使用される、パラメータのリストです。複数のパラメータが含まれる場合、括弧で囲まなければなりません (プログラム記述時には、パラメータが 1 つでも必ず括弧で囲むことをお勧めします。)コロンは、左括弧の前に配置します。括弧内では、コロンを使用して複数のパラメータを区切ります。

デバイス用のパラメータは、位置パラメータ、またはキーワード・パラメータのいずれかを使用して指定されます。また、位置パラメータとキーワード・パラメータを同じパラメータ・リスト内で混在させて使用することもできます。

多くの場合、矛盾したパラメータ、複製パラメータ、または無効なパラメータ値を指定するとエラーが返されます。可能な場合は常に、InterSystems IRIS は不適切なパラメータ値を無視し、適切な既定値を使用します。

利用可能なパラメータは、多くの場合、OPEN コマンドでサポートされているパラメータと同じです。シーケンシャル・ファイル、TCP デバイス、プロセス間通信パイプでは、OPEN コマンドでしか設定できないパラメータもあります。また、シーケンシャル・ファイルでは、USE コマンドでしか設定できないパラメータもあります。USE パラメータは、選択されるデバイスの種類や特定の実装タイプによって異なります。"入出力の概要" に、USE コマンド・キーワード・パラメータがデバイス・タイプ別にリストされています。

USE パラメータのリストを指定しない場合は、デバイスの既定の OPEN パラメータが使用されます。デバイスの既定パラメータは構成可能です。管理ポータルに進み、[システム管理][構成][デバイス設定][デバイス] の順に選択して、現在のデバイスのリストを表示します。対象のデバイスに対して [編集] をクリックし、[オープン・パラメータ :] オプションを表示します。この値を、OPEN コマンド・パラメータと同じ方法で指定します (括弧も含む)。例えば ("AVL":0:2048) です。

位置パラメータ

位置パラメータは、パラメータ・リスト内で固定の順序で指定されなければなりません。位置パラメータは省略することもできますが (省略の場合は既定値を使用)、省略された位置パラメータの位置を示すためのコロンは保持する必要があります。末尾のコロンは必須です。余分なコロンは無視されます。個別のパラメータとそれぞれの位置は、デバイスに依存しています。位置パラメータには、値と文字コード文字列の 2 種類があります。

値は整数 (例えばレコード・サイズ)、文字列 (例えばホスト名)、または値に評価される変数や式のいずれかです。

文字コード文字列は、開くデバイスの特性を指定するために個別の文字を使用します。大半のデバイスで、この文字コード文字列は位置パラメータの 1 つとなります。ユーザは文字列内の任意の文字数を順不同で指定することができます。文字コードは、大文字と小文字を区別しません。文字コード文字列は引用符で囲まれます。文字コード文字列でスペースや句読点を使用することはできません (\ 記号で区切られた名前が続く K と Y (例 : K\name\) は例外です)。位置パラメータを使用する例は、シーケンシャル・ファイルを開くときに "ANDFW" (既存のファイルへの追加 (A)、ファイルの新規作成 (N)、ファイルの削除 (D)、固定長レコード (F)、書き込みアクセス (W)) という文字コード文字列を指定する場合などです。文字コード文字列パラメータの位置と、それぞれの文字の意味は、デバイスに依存しています。

キーワード・パラメータ

キーワード・パラメータは、パラメータ・リスト内の任意の順序で指定することができます。パラメータ・リストはキーワード・パラメータだけで構成することも、位置パラメータとキーワード・パラメータを混在させて構成することもできます。(一般的には、位置パラメータが (適切な順序で) 最初に指定され、その次にキーワード・パラメータが指定されます)。すべてのパラメータ (位置、およびキーワード) は、コロン (:) で区切られなければなりません。キーワード・パラメータのパラメータ・リストの標準的な構文は、以下のとおりです。

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 コマンドを実行することはできません。

ターミナルから主デバイス以外のデバイスに対して OPENUSE を発行することはできますが、InterSystems IRIS は > プロンプトに戻るたびに、暗黙に USE 0 を発行します。0 以外のデバイスの使用を継続するには、> プロンプトで入力する行ごとに USE コマンドを実行する必要があります。

以下のいずれかの場合に、自動的に主デバイスが現在のデバイスに設定されます。

  • ログオンしたとき。

  • USE 0 コマンドを発行したとき。

  • エラー・トラップが設定されていない状態でエラーが発生したとき。

  • 現在のデバイスを閉じたとき。

  • ターミナル・プロンプトに戻ったとき。

  • HALT コマンドを発行して InterSystems IRIS を終了したとき。

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® システム・コールによって処理が行われます。

関連項目

FeedbackOpens in a new tab