日本-日本語
日本HPホーム 製品 & サービス OpenVMS製品情報
≫  お問い合わせ


OpenVMS マニュアル


 

OpenVMS
ドキュメント・ライブラリ

タイトルページ
目次
まえがき
リファレンス・セクション
    ≫ コマンド一覧
    ≫ レキシカル関数
付録 A:廃止されたコマンド
付録 B:DCL整数表現の範囲を超える数値の処理
索引
PDF    Vol.1   Vol.2
OpenVMS ホーム

HP OpenVMS
DCL ディクショナリ


目次 索引




指定した入力ファイルから1つのレコードを読み込み,レコードの内容を指定されたシンボル名に割り当てます。

形式

READ 論理名[:] シンボル名


パラメータ



論理名[:]

レコードを読み込む入力ファイルの論理名を指定します。ファイルのオープン時に OPEN コマンドで割り当てた論理名を使用します (OPEN コマンドは,論理名を割り当て,その名前をプロセス論理名テーブルに登録します )。

さらに SYS$INPUT,SYS$OUTPUT,SYS$ERROR,SYS$COMMAND という論理名によって示される,プロセス・パーマネント・ファイルも指定できます。

シンボル名

読み取られるレコードの内容に割り当てられる,1 〜 255 文字までの英数字シンボル名を指定します。シンボル名の 1 文字目はアルファベット,アンダースコア (_),ドル記号 ($) のいずれかでなければなりません。

READ コマンドに対してシンボル名を指定すると,コマンド・インタプリタは,そのシンボル名を現在のコマンド・レベルのローカル・シンボル・テーブルに登録します。シンボルがすでに定義されている場合には,READ コマンドは,そのシンボルを読み込んだ新しい値に再定義します。


説明

READ コマンドは,順編成ファイル,相対編成ファイル,または索引編成ファイルから,データを読み込むことができます。指定されたファイルから各レコードが読み込まれるたびに,レコードポインタがファイル内の次のレコードに移動します。ただし,索引編成ファイルを読み込んでいる場合,/INDEX および /KEY 修飾子を使用すると,レコードをランダムに読み込むことができます。

単一の READ コマンドで読み込むことができるレコードの最大サイズは, 2048 バイトです。DCL によってオープンされたリモート・ファイルから 2048 バイトのレコードを読み込むには,システムの省略時のネットワーク・ブロック・カウントを少なくとも 25 に増加する必要があります (DCL SET RMS_DEFAULT/NETWORK=25)。

ファイルを読み込むには,/READ 修飾子を指定した OPEN コマンドを使用して,ファイルをオープンする必要があります。論理名 SYS$INPUT,SYS$OUTPUT, SYS$ERROR,および SYS$COMMAND で識別されるプロセス・パーマネント・ファイルは,読み込むために明示的にオープンする必要はありません。

READ コマンドを会話型で実行し,論理名をプロセス・パーマネント・ファイル SYS$INPUT,SYS$OUTPUT,SYS$COMMAND,または SYS$ERROR のうちいずれか 1 つとして指定した場合,コマンド・インタプリタから入力データを求めるプロンプトが表示されます。 READ コマンドは,入力したとおりにデータを受け付けます。READ コマンドは,文字を大文字に変換したり,余分なスペースとタブを削除したり,二重引用符 (" ") を削除しません。また,シンボルの置換は行われません。READ コマンドでプロンプトを表示する場合についての詳細は,/PROMPT 修飾子を参照してください。


修飾子



/DELETE

レコードが索引順編成ファイルから読み込まれた後,それをファイルから削除することを指定します。 READ/DELETE コマンドを使用するには, /READ 修飾子と /WRITE 修飾子の両方を使用して,索引順編成ファイルをオープンしなければなりません。

/END_OF_FILE=ラベル

ファイルの最後のレコードを読み込んだ後に制御を渡すべき,現在のコマンド・プロシージャ内のラベルを指定します。ファイルの最後のレコードが読み込まれると,OpenVMS レコード管理サービス (RMS) は,ファイルの終わり (EOF) を示すエラー状態を返します。 /END_OF_FILE 修飾子が指定されていると,コマンド・インタプリタは,指定したラベルのコマンド行に制御を移します。

/END_OF_FILE を指定していない場合には,ファイルの最後に到達した時に,制御は /ERROR 修飾子で指定されているエラー・ラベルに渡されます。 /ERROR 修飾子も /END_OF_FILE 修飾子も指定していない場合には,現在の ON 条件動作が実行されます。

/ERROR=ラベル

読み込み要求でエラーが発生した時に制御が移される,コマンド・プロシージャ内のラベルを指定します。エラー・ルーチンが指定されていない時に,ファイルの読み込みでエラーが発生した場合には,現在の ON 条件動作が実行されます。

この修飾子に対して指定されているエラー・ルーチンは,ON コマンドに指定されている条件動作に優先します。

エラーが発生し,指定されたラベルに制御が正しく渡されると,予約されている $STATUS というグローバル・シンボルに,そのエラーを示すコードがセットされます。このコードによって,それぞれのエラーに対応する処理を行うことができます。

/INDEX=n

索引順編成ファイルを読み込む時に,キーの参照に使用する,索引番号 (n) を指定します。

/INDEX 修飾子を省略した場合には,最後に明示的に指定された値が使用されます。値を指定せずに /INDEX 修飾子を使用すると,主キー(/INDEX=0)が使用されます。

/KEY=文字列

指定した文字列と一致するキーを持つレコードを読むように指定します。 2 進キーと整数キーを使用することはできません。この修飾子を /INDEX 修飾子とともに使用すれば,索引順編成ファイルをランダムにアクセスすることができます。

キーの照合は,/KEY 文字列に指定されている文字と,レコード・キーに含まれる文字を,比較することによって行われます。

索引順編成ファイルのレコードをランダムに読むには, /KEY 修飾子を指定しなければなりません。レコードをランダムに読み込んだ後,後続の読み込み操作で /KEY 修飾子を指定しなかった場合には,索引順編成ファイルのレコードは,順にアクセスされます。

/MATCH=オプション

一致するキーの照合時に使用される,キー照合アルゴリズムを指定します。下記のオプションを指定することができます。

EQ 指定したキーに等しいキーを選択するように指定します (省略時の設定)
GE 指定したキーに等しいか,またはそれより大きなキーを選択するように指定します。
GT 指定したキーより大きいキーを選択するように指定します。
LE 指定したキーに等しいか,またはそれより小さなキーを選択するように指定します。
LT 指定したキーより小さいキーを選択するように指定します。

索引順編成ファイルを読み込む時に,MATCH 修飾子を省略した場合には, /MATCH=EQ が用いられます。

/NOLOCK

読み込まれるレコードがロックされないように指定し,また,他のユーザがすでにロックしているレコードを,読み込むことができるようにします。

この修飾子を省略した場合,各レコードは読み込まれるときにロックされ,そのファイルに対する次の I/O でロックが解除されます。

/PROMPT=文字列

ターミナルから読み込まれる時に表示される,代替プロンプト文字を指定します。省略時の設定では,DATA: というプロンプト文字列が表示されます。

/TIME_OUT=n

/NOTIME_OUT (省略時の設定)

入力が与えられない時に,READ コマンドが終了するまでの秒数を指定します。 /TIMEOUT 修飾子を入力する場合には,必ず値を指定しなければならず,値は 0 から 255 までの範囲でなければなりません。

/ERROR= ラベル修飾子と /TIME_OUT 修飾子の両方を指定すると,指定時間制限が満了したときに,/ERROR で指定したラベルに分岐します。

/WAIT

RAB$V_WAT を設定し,プロセスがファイル内のレコードを待つようにします。 /TIME_OUT とともに使用して,レコードを見つけることができずにタイムアウトするまでに,プロセスが待機する時間を制限することもできます。

#1
$ OPEN IN NAMES.DAT 
$ LOOP: 
$ READ/END_OF_FILE=ENDIT IN NAME 
   .
   .
   .
$ GOTO LOOP 
$ ENDIT: 
$ CLOSE IN 

OPEN コマンドは,入力のために NAMES.DAT というファイルをオープンし,そのファイルに IN という論理名を割り当てます。READ コマンドは,ファイル IN からレコードを読み込み,その内容を NAME というシンボルに割り当てます。ファイルの最後のレコードが読み込まれた時に, ENDIT というラベルに制御を移すことを,READ コマンドは要求しています。このプロシージャは,ファイルに含まれるすべてのレコードが処理されるまで繰り返します。

#2
$ READ/ERROR=READERR/END_OF_FILE=OKAY  MSGFILE  CODE 
   .
   .
   .
$ READERR: 
$ CLOSE MSGFILE 
   .
   .
   .
$ OKAY: 
$ CLOSE MSGFILE 
$ EXIT 
 

READ コマンドでは,ファイル MSFFILE からレコードをシンボル CODE に読み込んでいます。/ERROR と /END_OF_FILE 修飾子で,ファイルの最後 (EOF) とエラー状態検出時の処理を指定しています。 EOF 検出時にはラベル OKAY に制御が移され,エラー検出時にはラベル READERR に制御が移されます。

#3
$ READ SYS$COMMAND  DATA_LINE 
$ WRITE  OUTPUT_FILE  DATA_LINE 
   .
   .
   .

READ コマンドは,現在の SYS$COMMAND 装置からデータを読み込みます。上記のコマンドを含むコマンド・プロシージャを会話型で実行した場合,ターミナルにプロンプトを出力し,1 行のデータを受け取り,シンボル DATA_LINE にその入力データを割り当てます。

その後,WRITE コマンドで,シンボル DATA_LINE を論理名 OUTPUT_FILE で参照されるファイルに書き出します。

#4
$ OPEN/READ INPUT_FILE TRNTO::INVENTORY.DAT 
$ OPEN/APPEND OUTPUT_FILE RECEIVE.DAT 
$ READ INPUT_FILE DATA_LINE 
$ WRITE OUTPUT_FILE DATA_LINE 
 

OPEN/READ コマンドは,TRNTO というリモート・ノードの,INVENTORY.DAT というファイルを読み込みのためにオープンし,そのファイルに INPUT_FILE という論理名を割り当てます。 OPEN/APPEND コマンドは,現在の省略時のディレクトリにある RECEIVE.DAT というファイルをオープンします。 READ コマンドは,リモート・ノード TRNTO の INVENTORY.DAT というファイルからデータを要求します。WRITE コマンドは,DATA_LINE というシンボルの値を, RECEIVE.DAT というローカル・ファイルの最後に書き込みます。


目次 索引

© 2012 Hewlett-Packard Development Company, L.P.