REGIONAL(1) レコード入出力

REGIONAL(1) ファイルでは、レコード内に記録されるキーはありません。その代わりに、各レコードは、符号なし整数である領域番号で識別されます。REGIONAL(1) ファイルのキーには、10 進数のみで構成される文字列 (先頭に空白文字を入れることができ、その場合ゼロと解釈されます) または整数型のキーを使用できます。

REGIONAL(1) ファイルには、データ レコードとダミー レコードが格納されます。ダミー レコードは、1 バイト目が 16 進数値 FF であることで識別されます。ダミー レコードは、削除済みのレコード、またはファイルが最初に作成されたときに領域番号がスキップされたレコードを表します。1 バイト目が 16 進数値 FF であるレコードを書き込むことで、ダミー レコードを明示的に作成することもできます。REGIONAL(1) ファイルを読み取る際には、ダミー レコードは無視されません。REGIONAL(1) ファイルを読み取る Open PL/I プログラムは、ダミー レコードを処理できるように設計する必要があります。ダミー レコードは、有効なデータ レコードで置換できます。

REGIONAL(1) ファイルは、キー付きの WRITE 文で DIRECT OUTPUT モードを使用する方法でのみ作成できます。レコードは、領域番号の昇順で書き込む必要がありますが、領域番号はスキップしてもかまいません。領域番号をスキップすると、その位置にダミー レコードが書き込まれます。後続の番号以外を使用してレコードを書き込もうとした場合、または重複するキーを使用してレコードを書き込もうとした場合、KEY 条件が発生します。

既存の REGIONAL(1) ファイルには、SEQUENTIAL INPUT モードまたは SEQUENTIAL UPDATE モード、DIRECT INPUT モードまたは DIRECT UPDATE モードでアクセスできます(OUTPUT モードでファイルを開くと、既存のファイルが上書きされます)。

SEQUENTIAL アクセス (INPUT または UP_ DATE) で REGIONAL(1) ファイルを開くと、領域番号の昇順でレコードが取得されます。有効なデータ レコードと同様にダミー レコードも取得されます。SEQUENTIAL INPUT では、ファイルのすべてのレコードを領域番号の昇順で読み取ることができます。SEQUENTIAL UPDATE では、すべてのレコードを読み取り、(ダミー レコードを有効なデータ レコードに変更する、有効なデータ レコードをダミー レコードに変更することも含め) 選択したレコードを更新することができます。REGIONAL(1) の順次 READ および REWRITE に関する規則は、CONSECUTIVE ファイルの場合と同じです。

REGIONAL(1) ファイルは、DIRECT アクセス モードの INPUT または UPDATE で開くことができます。この場合、キー付きの READ 文、WRITE 文、REWRITE 文、および DELETE 文を使用できます。READ は、有効なデータ レコードと同様にダミー レコードにもアクセスします。WRITE と REWRITE は同等の操作です。いずれも既存のレコード (データ レコードまたはダミー レコード) を置換レコード (これもデータ レコードまたはダミー レコード) で置き換えます。DELETE は、指定した領域番号のレコードをダミー レコードに変換します。