テープ装置に保管されているファイルの読み書きを行うには、 その前にまずファイルをオープンしなければなりません。 ファイルをオープンするには、形式 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 プログラムがファイル中の次の論理レコードを使用できるようにします。 順次マルチボリューム・ファイルで、READ ステートメントの処理中にボリュームの終わりが検出されたものの、 論理的なファイルの終わりに達していない場合には、以下のアクションが示されている順番で行われます。
ILE COBOL プログラムは、読み取り操作中に上記のアクションが取られたという標識を受け取りません。
テープ装置に保管されているレコードを順次ファイルに書き込むには、形式 1 の WRITE ステートメントを使用します。 順次マルチボリューム・ファイルで、WRITE ステートメントの処理中にボリュームの終わりが検出された場合、以下に示すアクションがこの順に行われます。
ボリュームの終わり状態になっても、そのことを示す標識は ILE COBOL プログラムには返されません。
テープ装置に保管されているファイルの使用が終ったなら、それをクローズしなければなりません。 ファイルをクローズするには、形式 1 の CLOSE ステートメントを使用します。 ファイルをクローズすると、そのファイルは、それを再びオープンするまで処理できなくなります。
CLOSE sequential-file-name.
CLOSE ステートメントには、ボリュームを巻き戻したりアンロードしたりするオプションもあります。
通常は、テープ・ファイルに対して CLOSE ステートメントを実行する時点で、ボリュームの巻き戻しを実行します。 しかし、ファイルをクローズした後でも現行ボリュームをその時点の位置のままにしておきたい場合は、CLOSE ステートメントに NO REWIND 句を指定してください。 NO REWIND を指定すると、リールは巻き戻されません。
順次マルチボリューム・テープ・ファイルの場合に REEL/UNIT FOR REMOVAL 句を使用すると、現行ボリュームの巻き戻しとアンロードが行われます。 続いて、ボリュームが除去されたことがシステムに通知されます。
ボリュームの巻き戻しとアンロードについては、「WebSphere Development Studio: ILE COBOL 解説書」の中の形式 1 の CLOSE ステートメントに関する説明を参照してください。
可変長レコードをテープ・ファイルに読み書きする場合、 その可変長レコードの最大長が、必ずテープの最大レコード長以下になるようにしてください。 テープの最大レコード長は、それが OUTPUT 用にオープンされた時点で決められます。 テープの最大レコード長がテープに書き込まれるどの可変長レコードよりも短いなら、 それらのレコードはテープの最大長で切り捨てられます。
テープ装置に保管されている順次ファイルから読み取るには、 形式 1 の READ ステートメントを使用します。 READ ステートメントは、ILE COBOL プログラムがファイル中の次の論理レコードを使用できるようにします。
READ 操作が正常に実行された場合、data-name-1 が指定されているなら、 読み取ったレコードの文字位置数がそれに入れられます。 READ 操作が失敗した場合、data-name-1 は READ 操作が試行される前の値のままです。
READ ステートメントに INTO 句を指定した場合、現行レコードの中で、 暗黙の MOVE ステートメントの中の送り出し項目として加わっている文字位置数は、以下のようにして決められます。
READ ステートメント実行時に、 読み込んだレコードの中の文字位置の数がそのファイルのレコード記述項目で指定されている最小レコード長より小さい場合は、 レコード域のうち読み込まれた有効な最後の文字の右の部分にブランクが埋め込まれます。 読み込んだレコードの中の文字位置の数がそのファイルのレコード記述項目で指定されている最大レコード長より大きい場合は、 レコードは、レコード記述項目で指定されている最大レコード・サイズの右側で切り捨てられます。 読み込んだレコードの長さが、ファイルのファイル記述項目で定義されている最小レコード長と最大レコード長の間にない場合には、 ファイル状況 04 が戻されます。
テープ装置に保管されている可変長レコードを順次ファイルに書き込むには、 形式 1 の WRITE ステートメントを使用します。 書き込むレコードの長さは、data-name-1 に指定します。 data-name-1 を指定しない場合、書き込むレコードの長さは以下のようにして決められます。
(C) Copyright IBM Corporation 1992, 2006. All Rights Reserved.