複数の入出力ステートメントに適用される共通の処理機能がいくつかあります。 そのような共通の処理機能としては、次のようなものが挙げられます。
次のセクションでは、ボリューム およびリール という用語の使用について説明します。 ボリューム という用語は、ユニット・レコード入出力装置以外の入出力装置を指します。リール はテープ装置にのみ適用されます。順次アクセス・モードにおける直接アクセス装置の処理方法は、テープ装置の処理方法と論理的には同じです。
ファイル制御項目で FILE STATUS 文節を指定した場合は、そのファイルに対する要求の実行中、 指定したファイル状況キー (FILE STATUS 文節で指定した 2 文字のデータ項目) の中に値が入れられます。この値は、要求の状況を表します。 値がファイル状況キーに入れられた後で、その要求に関連のある EXCEPTION/ERROR 宣言、INVALID KEY 句、または AT END 句が実行されます。
2 種類のファイル状況キー・データ名があります。1 つは、ファイル制御項目の FILE STATUS 文節の中でデータ名-1 によって記述されます。これは、ファイル状況キー 1 として認識される最初の 1 文字と、 ファイル状況キー 2 として認識される 2 番目の文字を持つ 2 文字データ項目です。可能な値の組み合わせとその意味については、ファイル状況キーの値と意味 (表 36) に示しています。
もう 1 つのファイル状況キーは、ファイル制御項目の FILE STATUS 文節の中にデータ名-8 として記述されます。データ名-8 は、行順次ファイルには適用されません。データ名-8 の詳細については、FILE STATUS 文節を参照してください。
| 高位桁 | 意味 | 下位桁 | 意味 |
|---|---|---|---|
| 0 | 正常終了 | 0 | それ以上の情報はありません。 |
| 2 | このファイル状況値は、
重複可能な代替キーのある指標ファイルのみに適用されます。
入出力ステートメントは正常に実行されましたが、複写するキーが見つかりました。 READ ステートメントの場合は、現行参照キーのためのキー値が、現行参照キー内の次のレコードにある同じキー値と等しい値でした。REWRITE ステートメントまたは WRITE ステートメントの場合は、今書き込まれたレコードが、 重複が許される 1 つ以上の代替レコード・キーに対して複写キーを作成しました。 |
||
| 4 | READ ステートメントは正常に実行されましたが、処理されるレコードの長さがそのファイルの固定ファイル属性に一致しないか、RSD ファイルのレコードの末尾に改行文字が見つかりませんでした。 | ||
| 5 | OPEN ステートメントは正常に実行されましたが、参照されたオプション・ファイルが、 OPEN ステートメントの実行時に存在しませんでした。 オープン・モードが I-O または EXTEND ならば、ファイルは作成済みです。 | ||
| 7 | NO REWIND 句、REEL/UNIT 句、 または FOR REMOVAL 句を持つ CLOSE ステートメントの場合、または NO REWIND 句を持つ OPEN ステートメントの場合、参照されたファイルは非リール / ユニット・メディア上にありました。 | ||
| 1 | AT END 条件 | 0 | 順次 READ ステートメントを試みましたが、ファイルの終わりに達したため次の論理レコードがファイル中に存在しませんでした。または、最初の READ ステートメントをオプション入力ファイル上で試みましたが、そのファイルが存在しませんでした。 |
| 4 | 順次 READ ステートメントを相対ファイルで試みましたが、相対レコード番号の中の有効数字の桁数が、そのファイル用に記述された相対キー・データ項目のサイズを超えていました。 | ||
| 2 | 無効キーの条件 | 1 | 順次にアクセスされた索引付きファイルにシーケンス・エラーがあります。 READ ステートメントが正しく実行されてから、次の REWRITE ステートメントがそのファイルで実行されるまでの間に、 基本レコード・キー値がプログラムによって変更されました。または、連続レコード・キー値に要求される昇順でなければならないという条件に違反していました。 |
| 2 | レコードを書き込む試みを行いましたが、相対ファイルに複写キーを作成するものでした。または、レコードを書き込んだり再度書き込んだりする試みを行いましたが、そのレコードは DUPLICATES 句がないにもかかわらず、重複基本レコード・キーまたは重複代替レコード・キーを索引付きファイルに作成するものでした。 | ||
| 3 | ファイルに存在しないレコードに対しランダムにアクセスする試みを行いました。または、START ステートメントまたはランダム READ ステートメントを、存在しないオプション入力ファイル上で試みようとしました。 | ||
| 4 | 相対ファイルまたは索引付きファイルの外部定義境界を超えて書き込もうとしました。 または、順次 WRITE ステートメントを相対ファイルで試みましたが、相対レコード番号の中の有効数字の桁数が、そのファイル用に記述された相対キー・データ項目のサイズを超えていました。 | ||
| 3 | 永続エラー条件 | 0 | RSD ファイルに対し、BEFORE 句、AFTER 句が指定された WRITE ステートメントの処理を行おうとしました。 |
| 4 | 境界違反による永続エラーがあります。順次ファイルの外部定義境界を超えて書き込もうとしました。 | ||
| 5 | INPUT 句、I-O 句、または EXTEND 句を持つ OPEN ステートメントがオプショナル・ファイル以外のファイル上で試みられましたが、そのファイルは存在しません。 | ||
| 7 | OPEN ステートメントで指定したオープン・モードをサポートしていないファイル上で OPEN ステートメントを試みました。
考えられる違反としては、次のものが挙げられます。
|
||
| 8 | OPEN ステートメントを、 以前にロック付きでクローズしたファイル上で試みました。 | ||
| 9 | 固定ファイル属性とプログラムの中でそのファイルに対して指定した属性の間に不一致が検出されたため、
OPEN ステートメントが正しく実行されませんでした。
これらの属性には、ファイルの編成 (順次、相対、指標付き)、
基本レコード・キー、代替レコード・キー、コード・セット、
最大レコード・サイズ、レコード・タイプ (固定長、可変長)、
およびブロック化因数があります。
RSD ファイルの宣言に、索引編成、相対編成、可変長レコード、または LINAGE 文節が指定されました。 ファイル状況 39 は、行順次ファイルまたは Btrieve ファイルについてはサポートされていません。 |
||
| 4 | 論理エラー条件 | 1 | オープン・モードにあるファイルに対して OPEN ステートメントを試みました。 |
| 2 | オープン・モードにないファイルに対して CLOSE ステートメントを試みました。 | ||
| 3 | 順次アクセス・モードにある大容量記憶ファイルの場合は、
関連したファイルに対して REWRITE ステートメントの実行前に実行された最後の入出力ステートメントが、
正常に実行された READ ステートメントではありませんでした。
順次アクセス・モードにある相対ファイルおよび索引付きファイルの場合には、 関連したファイルに対して DELETE ステートメントまたは REWRITE ステートメントの実行前に実行された最後の入出力ステートメントが、正常に実行された READ ステートメントではありませんでした。 |
||
| 4 | あるレコードをファイルに書き込む試みを行いましたが、そのレコードは書き換えようとするレコードと同じサイズではなかったために境界違反が起こりました。またはあるレコードを書き込んだり、再度書き込んだりする試みを行いましたが、そのレコードは関連したファイル名の RECORD IS VARYING 文節で許容されている最大レコードより大きかったか、 最小レコードより小さかったために、境界違反が起こりました。 | ||
| 6 | INPUT または I-O のオープン・モードにあるファイル上で順次 READ ステートメントを試みましたが、有効な次のレコードが設定されていませんでした。
その理由としては、次のものが考えられます。
|
||
| 7 | INPUT や I-O のオープン・モードではないファイルに対して READ ステートメントの実行を試みました。 | ||
| 8 | I-O、OUTPUT、または EXTEND のオープン・モードではないファイルに対して WRITE ステートメントの実行を試みました。 | ||
| 9 | I-O のオープン・モードではないファイルに対して DELETE ステートメントまたは REWRITE ステートメントの実行を試みました。 | ||
| 9 | インプリメンターで定義した条件 | 0 | それ以上の情報はありません。 |
| 1 | 許可エラー | ||
| 2 | 論理エラー | ||
| 3 | リソースが使用不可 | ||
| 4 | 同時オープンのエラー | ||
| 5 | ファイル情報が無効または不完全 | ||
| 6 | ファイル・システムが無効 | ||
| 8 | ロック・ファイルによるオープンのエラー | ||
| 9 | ロック・レコードによるレコード・アクセスのエラー |
無効キー条件が起こるのは、START、READ、WRITE、REWRITE、 または DELETE の各ステートメントのうちのいずれかの実行中です (この条件の発生原因については、環境部の該当するステートメントを参照してください)。無効キー条件が発生した場合、その条件を起こした入出力ステートメントは正しく実行されません。
無効キー条件が認識されると、 次の順序で処置が取られます。
INVALID KEY 句も EXCEPTION/ERROR プロシージャーも両方とも省略することができます。
入出力操作の実行後に無効キー条件が存在しなければ、 INVALID KEY 句は指定されていても無視され、次の処置が取られます。
INTO 句および FROM 句は、READ、RETURN、RELEASE、REWRITE、および WRITE の各ステートメントに対して有効です。
作業用ストレージ・セクションまたはリンケージ・セクション内の項目の名前、 またはすでにオープンされている別のファイル用のレコード記述を ID に 指定しなければなりません。
| フォーマット |
|---|
|
INTO 句を伴う READ ステートメントまたは RETURN ステートメントの実行結果は、 次の規則を指定した順序で適用した結果と同じになります。
FROM 句を伴う RELEASE ステートメント、REWRITE ステートメント、または WRITE ステートメントの実行結果は、 次のステートメントを指定した順序で実行した結果と同じになります。
RELEASE、REWRITE、または WRITE の各ステートメントの実行を完了した後は、ID-1 によって参照される領域にある情報は、レコード名-1 によって参照される領域の情報が使用可能でない場合でも使用可能です。ただし、SAME RECORD AREA 文節によって指定されたものを除きます。
本書で説明するファイル位置標識とは、入出力操作がある順序で行われているときに、指定されたファイル内で次にアクセスされる レコード (または、逆に、直前のレコード) を正確に指定するために使用される概念上のエンティティーです。 ファイル位置標識の設定値は、OPEN、 CLOSE、READ、および START の各ステートメントによってのみ影響を受けます。ファイル位置標識の概念は、 OUTPUT または EXTEND のモードでオープンされたファイルでは何も意味を持ちません。