ディスケット装置に保管されているファイルの読み書き

ディスケット装置に保管されているファイルの読み書きを行うには、 その前にまずファイルをオープンしなければなりません。 ファイルをオープンするには、形式 1 の OPEN ステートメントを使用します。 ディスケット装置に保管されているファイルから読み取る場合は、INPUT モードでオープンする必要があります。 ディスケット装置に保管されているファイルに書き込む場合は、OUTPUT モードまたは EXTEND モードでオープンする必要があります。 ディスケット装置に保管されているファイルを I-O モードでオープンすることはできません。 OPEN ステートメントのいくつかの例を次に示します。

OPEN INPUT sequential-file-name.
OPEN OUTPUT sequential-file-name.
OPEN EXTEND sequential-file-name.

ディスケット装置に保管されている順次ファイルから読み取るには、 形式 1 の READ ステートメントを使用します。 READ ステートメントは、ILE COBOL プログラムがファイル中の次の論理レコードを使用できるようにします。

入力ファイルからレコードを読み込む場合、COBOL プログラムに指定されているレコード長は、 ディスケットのデータ・ファイル・ラベルに記述されているレコード長と同じでなければなりません。 COBOL プログラムに指定するレコード長がデータ・ファイルのレコード長と同じでないなら、 レコードがプログラムに指定される長さになるよう埋め込みまたは切り捨てが行われます。

順次マルチボリューム・ファイルで、READ ステートメントの処理中にボリュームの終わりが検出されたものの、 論理的なファイルの終わりに達していない場合には、以下のアクションが示されている順番で行われます。

  1. 標準的な終了ボリューム・ラベル・プロシージャーが処理される。
  2. ボリュームの切り替えが行われる。
  3. 標準的な開始ボリューム・ラベル・プロシージャーが実行される。
  4. 次のボリュームの最初のデータ・レコードを使用可能にする。

ILE COBOL プログラムは、読み取り操作中に上記のアクションが取られたという標識を受け取りません。

ディスケット装置に保管されているレコードを順次ファイルに書き込むには、形式 1 の WRITE ステートメントを使用します。

出力ファイルにレコードを書き込む場合、レコード長を COBOL プログラム中に指定しなければなりません。 プログラムに指定したレコード長がディスケットの様式のレコード長より長い場合、 診断メッセージがプログラムに送られ、レコードは切り捨てられます。 各交換タイプごとにディスケット装置でサポートされている最大レコード長は、次のとおりです。

交換タイプ
サポートされる最大レコード長
基本交換
128 バイト
H 交換
256 バイト
I 交換
4096 バイト

順次マルチボリューム・ファイルで、WRITE ステートメントの処理中にボリュームの終わりが検出された場合、以下に示すアクションがこの順に行われます。

  1. 標準的な終了ボリューム・ラベル・プロシージャーが実行される。
  2. ボリュームの切り替えが行われる。
  3. 標準的な開始ボリューム・ラベル・プロシージャーが実行される。
  4. 次のボリュームにデータ・レコードが書き込まれる。

ボリュームの終わり状態になっても、そのことを示す標識は COBOL プログラムには返されません。

ディスケット装置に保管されているファイルを使用し終えた時点で、 それをクローズしなければなりません。 ファイルをクローズするには、形式 1 の CLOSE ステートメントを使用します。 ファイルをクローズすると、そのファイルは、それを再びオープンするまで処理できなくなります。

CLOSE sequential-file-name.