キーワード・パラメータは、パラメータ・リスト内の任意の順序で指定することができます。パラメータ・リストはキーワード・パラメータだけで構成することも、位置パラメータとキーワード・パラメータを混在させて構成することもできます。(一般的には、位置パラメータが (適切な順序で) 最初に指定され、その次にキーワード・パラメータが指定されます)。すべてのパラメータ (位置、およびキーワード) は、コロン (:) で区切られなければなりません。キーワード・パラメータのパラメータ・リストの標準的な構文は、以下のとおりです。
OPEN device:(/KEYWORD1=value1:/KEYWORD2=value2:.../KEYWORDn=valuen):timeout
個別のパラメータとそれぞれの位置は、デバイスに依存しています。標準規約として、位置パラメータやキーワード・パラメータのいずれかを使用して、同じパラメータと値を指定することができます。文字コード文字列は、/PARAMS キーワードを使用して キーワード・パラメータとして指定することができます。
timeout
OPEN 要求の成功を待機する時間を指定します (秒)。先頭のコロンは必須です。timeout は、必ず整数値または式で指定します。timeout がゼロ (0) の場合、OPEN はファイルを開く操作を 1 回試行します。実行が失敗した場合、OPEN も即座に失敗します。試行に成功した場合は、ファイルが無事に開きます。timeout を設定していない場合、InterSystems IRIS は OPEN が成功するまで、またはプロセスが手動で終了されるまで、デバイスを開く試行を続行します。timeout オプションを使用し、デバイスを開く操作に成功した場合、InterSystems IRIS は特殊変数 $TEST を 1 (TRUE) に設定します。タイムアウト時間内にデバイスを開くことができなかった場合、InterSystems IRIS は $TEST を 0 (FALSE) に設定します。$TEST は、ユーザが設定することもできます。また、JOB、LOCK、または READ のタイムアウトで設定されることもあります。
mnespace
このデバイスによって使用されるデバイス制御ニーモニックを含む、ニーモニック・スペースの名前です。既定で、InterSystems IRIS はデバイスとシーケンシャル・ファイル用に ^%X364 (ANSI X3.64 互換) のニーモニック・スペースを提供しています。既定のニーモニック・スペースは、デバイスのタイプごとに割り当てられます。
管理ポータルに進み、[システム管理]、[構成]、[デバイス設定]、[IO設定] の順に選択します。[ファイル]、[ターミナル]、または [その他] のニーモニック・スペース設定を表示して編集します。
ニーモニック・スペースは、READ コマンドと WRITE コマンドによって使用されるデバイス制御ニーモニックに対するエントリ・ポイントを含むルーチンです。READ コマンドと WRITE コマンドは、/mnemonic(params) 構文を使用して、デバイス制御ニーモニックを呼び出します。このデバイス制御ニーモニックは、カーソルを画面内の指定された位置に移動するなどの処理を実行します。
mnespace 引数を使用して、既定のニーモニック・スペースの割り当てをオーバーライドします。このデバイスで使用されている制御ニーモニック・エントリ・ポイントを含む、ObjectScript ルーチンを指定します。二重引用符は必須です。このオプションは、READ コマンドや WRITE コマンドでデバイス制御ニーモニックを使用したい場合にのみ指定します。ニーモニック・スペースが存在しない場合は、<NOROUTINE> エラーが返されます。ニーモニック・スペースに関する詳細は、"入出力デバイス・ガイド" の "入出力デバイスとコマンド" を参照してください。
例
以下の例は、OPEN コマンドでデバイス 2 (スプーラ) の所有権を取得するものです。最初の位置パラメータ (3) で、グローバル ^SPOOL 内のファイル番号を指定し、2 番目の位置パラメータ (12) で、そのファイル内の行番号を指定しています。後から USE コマンドを使用してこれを現在のデバイスに指定する (つまり USE 2) 場合、ObjectScript はそれ以降の出力をスプーラに送信します。
OPEN 2:(3:12)
以下の例は、OPEN コマンドで、シーケンシャル・ファイル CUSTOMER の所有権をタイムアウト時間 10 秒以内に取得します。
OPEN "\myfiles\customer"::10
パラメータが指定されていないので括弧は省略されますが、それでもコロンは必要です。
以下の例は、Seqtest というシーケンシャル・ファイルを開きます。文字コード位置パラメータは "NRW" です。"N" 文字コードは、ファイルが存在しない場合に、この名前を持つ新規のシーケンシャル・ファイルを作成するように指定します。"R" と "W" 文字コードは、そのファイルが読み取りまたは書き込みのために現在開いていることを意味します。タイムアウトは 5 秒です。
NEW $NAMESPACE
SET $NAMESPACE="%SYS"
SET dir=##class(%SYSTEM.Process).CurrentDirectory() ; determine InterSystems IRIS directory
SET seqfilename=dir_"Samples\Seqtest"
OPEN seqfilename:("NRW"):5
WRITE !,"Opened a sequential file named Seqtest"
USE seqfilename
WRITE "a line of data for the sequential file"
CLOSE seqfilename:"D"
WRITE !,"Closed and deleted Seqtest"
QUIT
この例では、UnknownUser が %DB_IRISSYS ロールを割り当てている必要があります。
デバイスの所有権と現在のデバイス
OPEN は、指定されたデバイスの所有権を設定します。プロセスは、プロセスが終了するか、後続の CLOSE コマンドでデバイスが解放されるまで、そのデバイスの所有権を維持します。あるプロセスがデバイスを所有している間は、他のプロセスがこのデバイスを取得したり、使用したりすることはできません。
プロセスは、同時に複数のデバイスを所有できます。しかし、現在のデバイスにできるデバイスは 1 つだけです。所有しているデバイスを現在のデバイスとして設定するには、USE コマンドを使用します。現在のデバイスのデバイス ID は、$IO 特殊変数に含まれています。
プロセスは、常に少なくとも 1 つのデバイスを所有しています (device 0 として指定されます)。これが、そのプロセスの主デバイスです。このデバイスは、プロセスの起動時に割り当てられます。通常は、InterSystems IRIS へのサインオンに使用されたターミナルです。主デバイスの ID は、$PRINCIPAL 特殊変数に含まれています。
プロセスが終了すると、InterSystems IRIS は、そのプロセスによって所有されている各デバイスに対して、暗黙の CLOSE を実行し、デバイスを使用可能デバイスのプールに返します。
所有デバイスのパラメータの変更
既にプロセスが所有しているデバイスのパラメータを変更するには、以下の方法があります。
他の OPEN コマンドでそのデバイスを指定する場合、最初の OPEN コマンドで設定されたデバイス・パラメータは、明示的に変更されない限り、有効のままとなります。デバイスの種類によっては、デバイスをいったん閉じて再び開いた場合に、後続の入出力が異なる可能性があります。
一部のデバイスでは、parameters オプションを省略し、後で USE コマンドの parameters オプションを使用して、必要な特性を設定することができます。
物理デバイス番号の使用法
InterSystems IRIS では、システムによって割り当てられている物理デバイス番号によって、任意のデバイスを識別できます。InterSystems IRIS では、どの実装タイプでも、以下の物理デバイス番号を認識します。
OPEN 63 は、以下の例に示すように、ネームスペースを受け入れます。
OPEN 63:"SAMPLES"
存在しないネームスペースを指定した場合、InterSystems IRIS は <NAMESPACE> エラーを発行します。特権を持たないネームスペースを指定した場合、InterSystems IRIS は <PROTECT> エラーを発行します。
デバイス 3 は無効なデバイスになります。この番号のデバイスをオープンしようとすると、timeout の期限切れを待たずに <NOTOPEN> エラーが返されます。
デバイス番号に関する詳細は、"入出力デバイス・ガイド" の "入出力デバイスの詳細" を参照してください。
デバイス・エイリアスの使用法
エイリアスは数値デバイス ID の別名です。これは、有効なデバイス番号でなければならず、一意である必要があり、割り当てられたデバイス番号と競合してはなりません。
デバイスに対する数値エイリアスを作成できます。管理ポータルに進み、[システム管理]、[構成]、[デバイス設定]、[デバイス] の順に選択し、現在のデバイスとそのエイリアスのリストを表示します。対象のデバイスに対して [編集] をクリックし、その [エイリアス :] オプションを編集します。
デバイスのエイリアスを割り当てた後、OPEN コマンド、または %IS ユーティリティ を使用して、このエイリアスを使用するデバイスを開きます。
開くファイル数割り当ての超過
InterSystems IRIS は、データベース・ファイルと OPEN で開くファイルとの間で、プロセスごとに開くことができるファイル数を割り当てます。OPEN によって OPEN コマンドに割り当てられるファイル数が多すぎる場合、<TOOMANYFILES> エラーが返されます。InterSystems IRIS ではプロセスごとに開くことができるファイルの最大数は 1,024 です。プロセスごとに開くことができるファイルの実際の最大数は、プラットフォーム固有の設定です。例えば、Windows の既定では、プロセスごとに開くことができるファイルの最大数は 998 です。
既定のレコード長
OPEN コマンドにシーケンシャル・ファイルのレコード・サイズが指定されていない場合、InterSystems IRIS は、既定の 32,767 文字を想定します。
関連項目