日本-日本語 |
|
|
|
OpenVMS マニュアル |
|
HP OpenVMS
|
目次 | 索引 |
OPEN |
入出力のために,ファイルをオープンします。OPEN コマンドは,ファイルをオープンするときにファイルに論理名を与え,その名前をプロセス論理名テーブルに登録します。制限事項については,各修飾子の説明を参照してください。
OPEN 論理名[:] ファイル指定
論理名[:]
ファイルに与える論理名の文字列を指定します。ファイル指定
入出力のためにオープンされる,ファイルまたは装置の名前を指定します。ファイル指定にファイル・タイプが含まれていない場合は,省略時のファイル・タイプとして DAT が使用されます。ワイルドカード文字は使用できません。新しい順編成ファイルを作成するためには,/WRITE 修飾子を使用します。詳細は /WRITE 修飾子の説明を参照してください。
ファイルは,読み込み,または書き込み,あるいは読み込み / 書き込みのためにオープンできます。ファイルをオープンすると,READ および WRITE コマンドでコマンド・レベルの入力または出力にファイルを使用できます。OPEN コマンドは,プロセス・パーマネントとしてファイルをオープンします。したがって,CLOSE コマンドでクローズするか,ログアウトするまで,これらのファイルはオープンしています。ファイルをオープンしたコマンド・プロシージャがそのファイルをクローズしないで終了すると,ファイルはオープンしたままになります。コマンド・インタプリタは,自動的にはファイルをクローズしません。 OPENコマンドは,OpenVMS RMS を使用してファイルをオープンし,プロセス・パーマネント・ファイルの使用に関する RMS 制限に従います。 OPEN コマンドは,順編成ファイル,相対ファイル,または索引順編成ファイルをオープンします。
論理装置 SYS$INPUT,SYS$OUTPUT,SYS$COMMAND,およびSYS$ERRORは,コマンド・レベルでの読み込みまたは書き込みの前に,明示的にオープンする必要はありません。他のすべてのファイルは,明示的にオープンしなければなりません。
異なるファイルをオープンする場合,同じ論理名を使用しないでください。 OPENコマンドで現在別のファイルに割り当てられている論理名を指定しても,警告メッセージは出ません。ただし,ファイルはオープンされず,次の READ 要求は,現在その論理名が割り当てられているファイルにアクセスします。
ファイルをオープンした後,はじめて /SHARE 修飾子を使用すると,同じファイルに2つ以上の OPEN コマンドを入力し,異なる論理名を割り当てることができます。/SHARE=READ または /SHARE=WRITE 修飾子を使用してファイルをオープンすると,他のユーザは TYPE または SEARCH コマンドでそのファイルにアクセスできます。
OPEN コマンドを使用して新しいファイルを作成する場合は,可変固定長制御部 (VFC) レコード形式が使用されます。レコード形式に互換性がない場合は,このレコード形式のファイルに別のレコード形式のファイルを連結できないことがあります。VFC 形式を使用したくない場合は,CREATE コマンドを使用してファイルを作成します。
既存のファイルに OPEN コマンドを指定すると,そのファイルのレコード・タイプが使用されます。
/APPEND
書き込みのために既存のファイルをオープンし,レコード・ポインタをファイルの最後 (EOF) にセットすることを指定します。したがって,ファイルの最後に新しいレコードを追加できます。順編成ファイルの場合にのみ,複数ユーザが同時にレコードを追加することができます。
/APPEND 修飾子は,既存のファイルにレコードを追加する場合にだけ使用できます。 /APPEND 修飾子と /WRITE 修飾子を,同時に指定することはできません。
/ERROR=ラベル
オープン要求でエラーが発生したときに,制御を移すコマンド・プロシージャ内のラベルを指定します。/ERROR 修飾子に対して指定されたエラー・ルーチンは, ON コマンドで指定されている動作に優先します。 /ERROR 修飾子が指定されていない場合には,現在の ON コマンドで指定されている条件の動作が実行されます。エラーが発生し,指定されたラベルに制御を正常に移すことができた場合には, $STATUS というグローバル・シンボルに,そのエラーを示すコードが設定されます。
/READ (省略時の設定)
入力のために,ファイルをオープンすることを指定します。 /READ を指定してファイルをオープンすると,他のユーザもそのファイルに入力アクセスができますが,出力アクセスはできません。 /READ/WRITE を指定してファイルをオープンすると,ファイルをオープンしている間,他のユーザは一切アクセスできません。 /READ 修飾子だけを指定し,/WRITE 修飾子を指定しない場合には,既存のファイルを指定しなければなりません。/SHARE[=オプション]
/NOSHARE (Alpha/Integrity のみ)
指定されたファイルを共用ファイルとしてオープンし,他のユーザからも入出力アクセスができるようにすることを指定します。 /SHARE=READ 修飾子を指定すると,他のユーザはそのファイルを読み込み (R) アクセスを行えますが,書き込み (W) アクセスはできません。 /SHARE=WRITE 修飾子を指定する場合や,オプションを省略する場合には,ユーザは指定されたファイルに対して,入出力アクセスの両方を実行できます。共用アクセスなしにファイルをオープンするには,/NOSHARE を指定するか,OPEN/READ/WRITE を指定します。
/WRITE
ファイルが出力のためにオープンされることを指定します。 /WRITE 修飾子に対しては,次の制約事項が適用されます。
- /WRITE 修飾子を使用すると,新しい順編成ファイルをオープンし作成できます。 OPEN/WRITE コマンドのファイル指定に,ファイル・バージョン番号が含まれず,指定されたファイル名とファイル・タイプを持つファイルがすでに存在する場合には, OPEN/WRITE コマンドは,既存のファイルよりバージョン番号が 1 だけ大きな新しいファイルを作成します。
- 既存のファイルをオープンする場合には,/WRITE 修飾子とともに /READ 修飾子を指定します。このファイルがオープンされると,レコード・ポインタはファイルの先頭にセットされます。( この点は,OPEN/APPEND コマンドの場合と異なります。 OPEN/APPEND コマンドでは,レコード・ポインタはファイルの最後にセットされます )。新しいファイルを作成するときには,OPEN/READ/WRITE コマンドは使用できません。
- /WRITE 修飾子と /APPEND 修飾子は同時に指定できません。
#1 |
---|
$ OPEN INPUT_FILE AVERAGE.DAT $ READ_LOOP: $ READ/END_OF_FILE=ENDIT INPUT_FILE NUM . . . $ GOTO READ_LOOP $ ENDIT: $ CLOSE INPUT_FILE |
この例の OPEN コマンドは,AVERAGE.DAT という名前のファイルを入力ファイルとしてオープンし,そのファイルに INPUT_FILE という論理名を割り当てます。省略時の設定によって,/READ 修飾子が指定されていると解釈されるため,ファイルは読み込みアクセスのためにオープンされます。 READ コマンドは INPUT_FILE という論理ファイルから, NUM という名前のシンボルにレコードを読み込みます。コマンド・プロシージャはファイルの終わりに到達するまで, READ_LOOP というラベルと ENDIT というラベルの間の行を実行します。ファイルの終わりに到達すると,CLOSE コマンドがファイルをクローズします。
#2 |
---|
$ OPEN/WRITE/ERROR=OPEN_ERROR OUTPUT_FILE TEMP.OUT $ COUNT = 0 $ WRITE_LOOP: $ COUNT = COUNT + 1 $ IF COUNT .EQ. 11 THEN GOTO ENDIT $ WRITE OUTPUT_FILE "Count is ''COUNT'." . . . $ GOTO WRITE_LOOP $ ENDIT: $ CLOSE OUTPUT_FILE $ EXIT $ $ OPEN_ERROR: $ WRITE SYS$OUTPUT "Cannot open file TEMP.OUT" $ EXIT |
この例では,/WRITE 修飾子が指定された OPEN コマンドが,TEMP.OUT というファイルを作成し,そのファイルに OUTPUT_FILE という論理名を割り当てます。 TEMP.OUT は,順編成ファイルです。
/ERROR 修飾子は,ファイルをオープンするときにエラーが発生した場合には,コマンド・インタプリタが,OPEN_ERROR というラベルの行に制御を移すことを指定しています。コマンド・プロシージャは,COUNT シンボルの値が 11 になるまで,ファイル TEMP.OUT にレコードを書き込みます。
#3 |
---|
$ OPEN/READ INPUT_FILE TRNTO::DKA0:[COST]INVENTORY.DAT $ READ_LOOP: $ READ/END_OF_FILE=ENDIT INPUT_FILE NUM $ FIRST_CHAR = F$EXTRACT(0,1,NUM) $ WRITE SYS$OUTPUT FIRST_CHAR $ GOTO READ_LOOP $ ENDIT: $ CLOSE INPUT_FILE |
このコマンド・プロシージャは,リモート・ノード TRNTO 上のファイル INVENTORY.DAT を入力ファイルとしてオープンし,論理名 INPUT_FILE を割り当てています。そして, READ コマンドで INPUT_FILE からシンボル NUM にレコードを読み込んでいます。次の 2 つのコマンドで,レコードから最初の文字を取り出して SYS$OUTPUT に書いています。この処理は,ファイルの終わり (EOF) まですべてのレコードに対して続けられ,最後に CLOSE コマンドで,ファイルをクローズし論理名 INPUT_FILE を削除しています。
目次 | 索引 |
|