OPEN ステートメントは、ファイルの処理を開始します。 ラベルのチェックまたは書き込み、あるいはその両方を行います。
フォーマット 1: 順次ファイルの OPEN ステートメント >>-OPEN---------------------------------------------------------> .----------------------------------------------------------. | .-------------------------------------------. | V V | | >----+-INPUT----ファイル名-1---+-------------------------+-+-+-+->< | | (1) | | | +-REVERSED----------------+ | | | (1) | | | '-+------+--NO REWIND-----' | | '-WITH-' | | .---------------------------------------. | | V | | +-OUTPUT----ファイル名-2---+---------------------+-+----+ | '-+------+--NO REWIND-' | | '-WITH-' | | .--------------. | | V | | +-I-O----ファイル名-3--+--------------------------------+ | .--------------. | | V | | '-EXTEND----ファイル名-4--+-----------------------------'
フォーマット 2: 索引付きおよび相対ファイルの OPEN ステートメント .------------------------------. | .--------------. | V V | | >>-OPEN----+-INPUT-----ファイル名-1-+--+-+---------------------->< | .--------------. | | V | | +-OUTPUT-----ファイル名-2-+-+ | .--------------. | | V | | +-I-O-----ファイル名-3-+----+ | .--------------. | | V | | '-EXTEND-----ファイル名-4-+-'
フォーマット 3: 行順次ファイルの OPEN ステートメント .------------------------------. | .--------------. | V V | | >>-OPEN----+-INPUT-----ファイル名-1-+--+-+---------------------->< | .--------------. | | V | | +-OUTPUT-----ファイル名-2-+-+ | .--------------. | | V | | '-EXTEND-----ファイル名-4-+-'
INPUT、OUTPUT、I-O、および EXTEND 句は、ファイルのオープンに使用するモ ードを指定します。キーワード OPEN と共に、INPUT、OUTPUT、I-O、または EXTEND の各句のうち少なくとも 1 つを指定しなければなりません。INPUT、 OUTPUT、I-O、および EXTEND の句は、任意の順序で指定できます。
OUTPUT は下記のファイルには指定しないでください。
すでにレコードが入っているファイルに OUTPUT 句が指定されると、 データ・セットは再使用可能として定義しなければならず、 代替索引を持つことができなくなります。 ファイル内のレコードは新規データに置き換えられ、 SELECT ステートメント内の ALTERNATE RECORD KEY 節はすべて無視されます。
I-O 句は行順次ファイルには無効です。
EXTEND 句を順次アクセス・ファイルで使用できるのは、新規データが昇順で作成されている場合だけです。EXTEND 句は、LINAGE 節が指定されたファイルで使用可能です。
QSAM ファイルの場合は、複数のファイル・リールに EXTEND 句を指定 しないでください。
存在するかどうかが不確実なファイルを追加したい場合は、 EXTEND モードでそのファイルをオープンする前に SELECT OPTIONAL 節を使用してください。そのファイルが存在しない場合はファイルが作成され、 既存の場合は OPEN ステートメントに追加されます。
例えば、 直接アクセス装置のようにそのストレージ・メディアにリールの概念が意味を成さない場合には、REVERSED 句や NO REWIND 句は適用されません。
OPEN REVERSED を指定する場合は、レコード・フォーマットは固定長でなければなりません。
ファイル制御項目で PASSWORD 節を指定している場合、OPEN ステートメントを実行する前に、パスワード・データ項目に、有効なパスワードを入れておく必要があります。有効なパスワードが存在しなければ、OPEN を正しく実行できません。
OPEN ステートメントを実行する時にファイルにラベル・レコードが指定された場合は、以下の標準ラベル規則に従って、ラベルが処理されます。
ラベル・レコードが指定されたにもかかわらずそれが存在しない場合、 または存在するのに指定されていない場合、OPEN ステートメントを実行するとどうなるかは予測できません。
| OPEN の形式 | ファイルが 使用可能 | ファイルが使用可能でない |
|---|---|---|
| INPUT | 通常のオープン | オープンに失敗する |
| INPUT (オプション・ファイル) | 通常のオープン | 通常のオープン。最初の読み取りにより、終了条件または無効キー条件が生じる |
| I-O | 通常のオープン | オープンに失敗する |
| I-O (オプション・ファイル) | 通常のオープン | オープンするとファイルが作成される |
| OUTPUT | 通常のオープン。ファイルにレコードが入っていない。 | オープンするとファイルが作成される |
| EXTEND | 通常のオープン | オープンに失敗する |
| EXTEND (オプション・ファイル) | 通常のオープン | オープンするとファイルが作成される |
| ステートメント | 入力オープン・モード | 出力オープン・モード | I-O オープン・モード | 拡張オープン・モード |
|---|---|---|---|---|
| READ | X | X | ||
| WRITE | X | X | ||
| REWRITE | X |
以下の表では、'X' は、その行に示されているアクセス・モードで使用されると、 上段に示されたオープン・モードで使用できることを意味します。
| ファイル・アクセス・モード | ステートメント | 入力オープン・モード | 出力オープン・モード | I-O オープン・モード | 拡張オープン・モード |
|---|---|---|---|---|---|
| 順次 | READ | X | X | ||
| WRITE | X | X | |||
| REWRITE | X | ||||
| START | X | X | |||
| DELETE | X | ||||
| ランダム | READ | X | X | ||
| WRITE | X | X | |||
| REWRITE | X | ||||
| START | |||||
| DELETE | X | ||||
| 動的 | READ | X | X | ||
| WRITE | X | X | |||
| REWRITE | X | ||||
| START | X | X | |||
| DELETE | X |
以下の表では、'X' はステートメントが、最上段に示されているオープン・モードで 使用できることを意味しています。
| ステートメント | 入力オープン・モード | 出力オープン・モード | I-O オープン・モード | 拡張オープン・モード |
|---|---|---|---|---|
| READ | X | |||
| WRITE | X | X | ||
| REWRITE |