(57)【特許請求の範囲】
【請求項１】
上位装置からのコマンドに応じてバッファ内のデータをテープ媒体に書き込む装置であって、
前記バッファ内の全てのデータを前記テープ媒体に書き込むことを指示する第１のコマンドと、区切り情報を当該テープ媒体に書き込むことを指示する第２のコマンドと、前記バッファにデータを格納することを指示する第３のコマンドとを前記上位装置から受け付ける受付部と、
前記受付部が前記第１のコマンドを受け付けた場合に、前記バッファ内の全てのデータとダミーの区切り情報とを前記テープ媒体に書き込む書込み部と、
前記書込み部により前記ダミーの区切り情報が前記テープ媒体に書き込まれたことを示す情報を記録媒体に記録する記録部と、
前記受付部が前記第１のコマンドに続けて前記第２のコマンドを受け付けた場合に、前記記録媒体に記録された前記情報を消去することにより、前記ダミーの区切り情報を、前記受付部が前記第２のコマンドを受け付けた場合に書き込まれる通常の区切り情報とする処理を行い、前記受付部が前記第１のコマンドに続けて前記第３のコマンドを受け付けた場合に、当該第３のコマンドが前記バッファに格納することを指示するデータを、前記テープ媒体上の前記ダミーの区切り情報と同じ位置に書き込まれるデータが記憶される当該バッファ内の位置に記憶する処理、及び、当該第３のコマンドが前記バッファに格納することを指示するデータと、前記ダミーの区切り情報が無効であることを示す情報とを、前記テープ媒体上の前記ダミーの区切り情報と異なる位置に書き込まれるデータが記憶される当該バッファ内の位置に記憶する処理の何れかを行う処理部と
を含む、装置。
【請求項２】
前記記録媒体は、前記テープ媒体を収納するカートリッジに設けられたメモリである、請求項１の装置。
【請求項３】
前記受付部は、前記テープ媒体に書き込まれた前記区切り情報を読み出すこと、及び、前記テープ媒体に書き込まれた前記区切り情報が目的の位置に来るように当該テープ媒体を移動させることの何れかを指示する第４のコマンドを更に受け付け、
前記処理部は、前記受付部が前記第１のコマンドに続けて前記第４のコマンドを受け付けた場合に、終端情報を、前記テープ媒体上の前記ダミーの区切り情報と同じ位置に書き込まれるデータが記憶される前記バッファ内の位置に記憶する処理、及び、終端情報と、前記ダミーの区切り情報が無効であることを示す情報とを、前記テープ媒体上の前記ダミーの区切り情報と異なる位置に書き込まれるデータが記憶される前記バッファ内の位置に記憶する処理の何れかを行う、請求項１の装置。
【請求項４】
前記受付部は、前記テープ媒体に書き込まれた前記区切り情報を読み出すこと、及び、前記テープ媒体に書き込まれた前記区切り情報が目的の位置に来るように当該テープ媒体を移動させることの何れかを指示する第４のコマンドを更に受け付け、
前記処理部は、前記受付部が前記第４のコマンドを受け付けた場合に、前記区切り情報が前記ダミーの区切り情報でなければ、当該第４のコマンドにより指示された処理を行い、前記区切り情報が前記ダミーの区切り情報であれば、当該第４のコマンドにより指示された処理を行わない、請求項１の装置。
【請求項５】
上位装置からのコマンドに応じてバッファ内のデータをテープ媒体に書き込む方法であって、
前記バッファ内の全てのデータを前記テープ媒体に書き込むことを指示する第１のコマンドが前記上位装置から送られた場合に、当該バッファ内の全てのデータとダミーの区切り情報とを当該テープ媒体に書き込むステップと、
前記ダミーの区切り情報が前記テープ媒体に書き込まれたことを示す情報を記録媒体に記録するステップと、
区切り情報を前記テープ媒体に書き込むことを指示する第２のコマンドが前記第１のコマンドに続けて前記上位装置から送られた場合に、前記記録媒体に記録された前記情報を消去することにより、前記ダミーの区切り情報を、前記第２のコマンドが前記上位装置から送られた場合に書き込まれる通常の区切り情報とするステップと、
前記バッファにデータを格納することを指示する第３のコマンドが前記第１のコマンドに続けて前記上位装置から送られた場合に、当該第３のコマンドが前記バッファに格納することを指示するデータを、前記テープ媒体上の前記ダミーの区切り情報と同じ位置に書き込まれるデータが記憶される当該バッファ内の位置に記憶する処理、及び、当該第３のコマンドが前記バッファに格納することを指示するデータと、前記ダミーの区切り情報が無効であることを示す情報とを、前記テープ媒体上の前記ダミーの区切り情報と異なる位置に書き込まれるデータが記憶される当該バッファ内の位置に記憶する処理の何れかを行うステップと、
を含む、方法。
【請求項６】
上位装置からのコマンドに応じてバッファ内のデータをテープ媒体に書き込む装置としてコンピュータを機能させるプログラムであって、
前記コンピュータを、
前記バッファ内の全てのデータを前記テープ媒体に書き込むことを指示する第１のコマンドと、区切り情報を当該テープ媒体に書き込むことを指示する第２のコマンドと、前記バッファにデータを格納することを指示する第３のコマンドとを前記上位装置から受け付ける手段と、
前記第１のコマンドが受け付けられた場合に、前記バッファ内の全てのデータとダミーの区切り情報とを前記テープ媒体に書き込む手段と、
前記ダミーの区切り情報が前記テープ媒体に書き込まれたことを示す情報を記録媒体に記録する手段と、
前記第１のコマンドに続けて前記第２のコマンドが受け付けられた場合に、前記記録媒体に記録された前記情報を消去することにより、前記ダミーの区切り情報を、前記第２のコマンドが受け付けられた場合に書き込まれる通常の区切り情報とし、前記第１のコマンドに続けて前記第３のコマンドが受け付けられた場合に、当該第３のコマンドが前記バッファに格納することを指示するデータを、前記テープ媒体上の前記ダミーの区切り情報と同じ位置に書き込まれるデータが記憶される当該バッファ内の位置に記憶する処理、及び、当該第３のコマンドが前記バッファに格納することを指示するデータと、前記ダミーの区切り情報が無効であることを示す情報とを、前記テープ媒体上の前記ダミーの区切り情報と異なる位置に書き込まれるデータが記憶される当該バッファ内の位置に記憶する処理の何れかを行う手段と
して機能させる、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データをテープ媒体に書き込む装置及び方法に関する。特に、本発明は、上位装置からのコマンドに応じてバッファ内のデータをテープ媒体に書き込む装置及び方法に関する。
【背景技術】
【０００２】
磁気テープ等のテープ媒体にデータを書き込むテープドライブでは、データを一旦バッファに蓄積しておき、ドライブの都合の良いタイミングでバッファからテープ媒体へデータを書き込むのが一般的である。ホストは、ドライブに送ったデータが全てテープ媒体上に書き出されていることを保証するため、強制的にデータを書き込むためのコマンド（ＷｒｉｔｅＦＭ  Ｎｏｎ  Ｉｍｍｅｄｉａｔｅコマンド）をドライブに送る。このようなバッファからテープ媒体への強制書込みを「同期」という。
ところで、同期が発生した後にテープ媒体を停止させないと、テープ媒体上で、先行する同期にて書き込まれたデータと次に書き込まれたデータとの間にギャップが生じる。その結果、テープ媒体の記録領域が無駄になってしまう。そのため、バックヒッチを行う必要がある。バックヒッチとは、テープ媒体の走行速度を減速して一旦停止し、逆方向に走行し、その後、再度元の方向に走行して書き込むべき位置に達して次のデータを書く、という一連の動作のことである。次のデータは、このバックヒッチが完了するまで書き込むことができない。バックヒッチには約２〜３秒程度の時間を要するため、バックヒッチの発生は、パフォーマンスに大きな影響を与える。
【０００３】
従来より、かかるバックヒッチを回避するための技術は種々提案されている（例えば、特許文献１参照）。特許文献１では、ホストから送られた様々なサイズの複数のブロックを、一定サイズのセグメントで分割されたバッファに順次蓄積し、セグメントが少なくとも１つのブロックにより準備された場合に、セグメントの内容をデータセットとしてテープ媒体に書き込み、テープ媒体が４ｍを移動する間に次のセグメントが準備されない場合に４ｍ内にＮｕｌｌデータセットをテープ媒体に書き込むようにしている。
【０００４】
【特許文献１】特開２００７−９５２３１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところで、ホスト側のアプリケーションによっては、「同期」を指示するコマンドとして、バッファ内のデータをテープ媒体に強制的に書き込むことを指示する第１のコマンドと、区切り情報をテープ媒体に書き込むことを指示する第２のコマンドとを連続して送る場合がある。
この場合、まず、第１のコマンドでバッファ内のデータをテープ媒体に強制的に書き込むため、バックヒッチが発生する。更に、次の第２のコマンドにより、区切り情報をテープ媒体に強制的に書き込む必要があるため、再度バックヒッチを行う。
そして、バックヒッチを行った後でないと次のデータの書込みを開始できないため、この２度のバックヒッチは、パフォーマンスに大きな影響を与える。
【０００６】
しかしながら、上記特許文献１の技術では、「同期」を指示するコマンドとして、上記の第１のコマンド及び第２のコマンドのような２つのコマンドが送られるような場合を想定していない。
【０００７】
本発明の目的は、バッファ内のデータをテープ媒体に強制的に書き込むことを指示するコマンドと、区切り情報をテープ媒体に書き込むことを指示するコマンドとが連続して送られる場合に、２度のバックヒッチが発生する可能性を低くすることにある。
【課題を解決するための手段】
【０００８】
かかる目的のもと、本発明は、上位装置からのコマンドに応じてバッファ内のデータをテープ媒体に書き込む装置であって、バッファ内のデータをテープ媒体に強制的に書き込むことを指示する第１のコマンドと、区切り情報をテープ媒体に書き込むことを指示する第２のコマンドとを上位装置から受け付ける受付部と、受付部が第１のコマンドを受け付けた場合に、バッファ内のデータとダミーの区切り情報とをテープ媒体に書き込む書込み部と、受付部が第１のコマンドの次に第２のコマンドを受け付けた場合に、ダミーの区切り情報を有効な区切り情報として扱えるようにする処理を行う処理部とを含む、装置を提供する。
【０００９】
ここで、この装置は、書込み部によりダミーの区切り情報がテープ媒体に書き込まれたことを示す情報を記録媒体に記録する記録部を更に備え、処理部は、記録媒体に記録された情報を消去することにより、ダミーの区切り情報を有効な区切り情報として扱えるようにする、ものであってよい。
また、記録媒体は、テープ媒体を収納するカートリッジに設けられたメモリであってよい。
【００１０】
また、この装置において、受付部は、第１のコマンド及び第２のコマンド以外の第３のコマンドを更に受け付け、処理部は、受付部が第１のコマンドの次に第３のコマンドを受け付けた場合に、ダミーの区切り情報を有効な区切り情報として扱えないようにする処理を行う、ものであってよい。
【００１１】
ここで、第３のコマンドは、バッファにデータを格納することを指示するコマンドであり、処理部は、ダミーの区切り情報を有効な区切り情報として扱えないようにする処理として、ダミーの区切り情報に対してバッファ内のデータによる上書きがなされるようにバッファにデータを格納する処理を行う、ものであってよい。そして、バッファ内のデータによる上書きは、テープ媒体上のダミーの区切り情報と同じ位置にバッファ内のデータを書き込むことによる上書きであってもよいし、テープ媒体上のダミーの区切り情報と異なる位置にバッファ内のデータを書き込むと共にテープ媒体にダミーの区切り情報が無効であることを示す情報を書き込むことによる上書きであってもよい。
【００１２】
一方、第３のコマンドは、バッファにデータを格納することを指示するコマンド以外のコマンドであり、処理部は、ダミーの区切り情報を有効な区切り情報として扱えないようにする処理として、ダミーの区切り情報に対して終端情報による上書きがなされるようにバッファに終端情報を格納する処理を行う、ものであってよい。
【００１３】
また、この装置において、受付部は、テープ媒体に書き込まれた区切り情報を読み出すこと、及び、テープ媒体に書き込まれた区切り情報にテープ媒体を位置付けることの何れかを指示する第４のコマンドを更に受け付け、処理部は、受付部が第４のコマンドを受け付けた場合に、区切り情報がダミーの区切り情報でなければ、第４のコマンドにより指示された処理を行い、区切り情報がダミーの区切り情報であれば、第４のコマンドにより指示された処理を行わない、ものであってよい。
また、本発明は、上位装置からのコマンドに応じてバッファ内のデータをテープ媒体に書き込む装置であって、バッファ内のデータをテープ媒体に強制的に書き込むことを指示する第１のコマンドと、区切り情報をテープ媒体に書き込むことを指示する第２のコマンドとを上位装置から受け付ける受付部と、受付部が第１のコマンドを受け付けた場合に、バッファ内のデータとダミーの区切り情報とをテープ媒体に書き込む書込み部と、書込み部によりダミーの区切り情報がテープ媒体に書き込まれたことを示す情報を、テープ媒体を収納するカートリッジに設けられたメモリに記録する記録部と、受付部が第１のコマンドの次に第２のコマンドを受け付けた場合に、メモリに記録された情報を消去することにより、ダミーの区切り情報を有効な区切り情報として扱えるようにする処理を行う処理部とを含む、装置も提供する。
【００１４】
更に、本発明は、上位装置からのコマンドに応じてバッファ内のデータをテープ媒体に書き込む方法であって、バッファ内のデータをテープ媒体に強制的に書き込むことを指示する第１のコマンドが上位装置から送られた場合に、バッファ内のデータとダミーの区切り情報とをテープ媒体に書き込むステップと、区切り情報をテープ媒体に書き込むことを指示する第２のコマンドが第１のコマンドの次に上位装置から送られた場合に、ダミーの区切り情報を有効な区切り情報として扱えるようにするステップとを含む、方法も提供する。
【００１５】
更にまた、本発明は、上位装置からのコマンドに応じてバッファ内のデータをテープ媒体に書き込む装置としてコンピュータを機能させるプログラムであって、コンピュータを、バッファ内のデータをテープ媒体に強制的に書き込むことを指示する第１のコマンドと、区切り情報をテープ媒体に書き込むことを指示する第２のコマンドとを上位装置から受け付ける手段と、第１のコマンドが受け付けられた場合に、バッファ内のデータとダミーの区切り情報とをテープ媒体に書き込む手段と、第１のコマンドの次に第２のコマンドが受け付けられた場合に、ダミーの区切り情報を有効な区切り情報として扱えるようにする手段として機能させる、プログラムも提供する。
【発明の効果】
【００１６】
本発明によれば、バッファ内のデータをテープ媒体に強制的に書き込むことを指示するコマンドと、区切り情報をテープ媒体に書き込むことを指示するコマンドとが連続して送られる場合に、２度のバックヒッチが発生する可能性が低くなる。
【発明を実施するための最良の形態】
【００１７】
以下、添付図面を参照して、本発明を実施するための最良の形態（以下、「実施の形態」という）について詳細に説明する。
図１は、本実施の形態が適用されるテープドライブ１０の構成例を示した図である。このテープドライブ１０は、ホストインターフェイス（以下、「ホストＩ／Ｆ」という）１１と、バッファ１２と、チャネル１３と、ヘッド１４と、モータ１５とを含む。また、コントローラ１６と、ヘッド位置制御システム１７と、モータドライバ１８とを含む。更に、テープドライブ１０には、テープカートリッジ２０が挿入されることにより装填可能となっているので、ここでは、テープカートリッジ２０も図示している。このテープカートリッジ２０は、リール２１、２２に巻かれたテープ２３を含む。テープ２３は、リール２１、２２の回転に伴い、リール２１からリール２２の方向へ、又は、リール２２からリール２１の方向へ、長手方向に移動する。尚、テープ２３としては、磁気テープが例示されるが、磁気テープ以外のテープ媒体でもよい。
【００１８】
また、テープカートリッジ２０は、カートリッジメモリ２４も含む。このカートリッジメモリ２４は、例えば、テープ２３上にどのようにデータが書かれたかの情報を記録する。そして、例えばＲＦインターフェイスを用いて非接触でテープ２３に書かれたデータのインデックスやテープ２３の使用状況等を調べることにより、データへの高速アクセスを可能としている。尚、図では、このＲＦインターフェイスのようなカートリッジメモリ２４へのアクセスを行うためのインターフェイスを、カートリッジメモリインターフェイス（以下、「ＣＭＩ／Ｆ」という）１９として示している。
【００１９】
ここで、ホストＩ／Ｆ１１は、上位装置の一例であるホスト３０との通信を行う。例えば、ホスト３０から、テープ２３へのデータの書込みを指示するコマンド、テープ２３を目的の位置に移動させるコマンド、テープ２３からのデータの読出しを指示するコマンドを受け取る。尚、このホストＩ／Ｆ１１で用いる通信規格としては、ＳＣＳＩが例示される。ＳＣＳＩの場合、１つ目のコマンドは、Ｗｒｉｔｅコマンドに相当し、２つ目のコマンドは、ＬｏｃａｔｅコマンドやＳｐａｃｅコマンドに相当し、３つ目のコマンドは、Ｒｅａｄコマンドに相当する。また、ホストＩ／Ｆ１１は、ホスト３０に対し、これらのコマンドに応じた処理が成功したのか失敗したのかの応答を返す。
【００２０】
バッファ１２は、テープ２３に書き込むべきデータやテープ２３から読み出されたデータを蓄積するメモリである。例えば、ＤＲＡＭ（Dynamic Random Access Memory）によって構成される。また、バッファ１２は、複数のバッファセグメントからなり、各バッファセグメントが、テープ２３に対する読み書きの単位であるデータセットを格納している。
チャネル１３は、テープ２３に書き込むべきデータをヘッド１４に送ったり、テープ２３から読み出されたデータをヘッド１４から受け取ったりするために用いられる通信経路である。
ヘッド１４は、テープ２３が長手方向に移動するとき、テープ２３に対して情報を書き込んだり、テープ２３から情報を読み出したりする。
モータ１５は、リール２１、２２を回転させる。尚、図では、１つの矩形でモータ１５を表しているが、モータ１５としては、リール２１、２２の各々に１つずつ、合計２個設けるのが好ましい。
【００２１】
一方、コントローラ１６は、テープドライブ１０の全体を制御する。例えば、ホストＩ／Ｆ１１で受け付けたコマンドに従って、データのテープ２３への書込みやテープ２３からの読出しを制御する。また、ヘッド位置制御システム１７やモータドライバ１８の制御も行う。
ヘッド位置制御システム１７は、所望の１つ又は複数のラップを追跡するシステムである。ここで、ラップとは、テープ２３上の複数のトラックのグループである。ラップを切り換える必要が生じると、ヘッド１４を電気的に切り換える必要も生じるので、このような切り換えの制御を、このヘッド位置制御システム１７で行う。
モータドライバ１８は、モータ１５を駆動する。尚、上述したように、モータ１５を２個使用する場合であれば、モータドライバ１８も２個設けられる。
ＣＭＩ／Ｆ１９は、例えば、ＲＦリーダライタにより実現され、カートリッジメモリ２４への情報の書込みや、カートリッジメモリ２４からの情報の読出しを行う。
【００２２】
ところで、ＳＣＳＩには、Ｗｒｉｔｅコマンド、Ｌｏｃａｔｅコマンド、Ｓｐａｃｅコマンド、Ｒｅａｄコマンドの他に、バッファ１２内のデータをテープ２３に強制的に書き込むことを指示するＷｒｉｔｅＦｉｌｅＭａｒｋ  Ｎｏｎ  Ｉｍｍｅｄｉａｔｅコマンドがある。ここで、ＦｉｌｅＭａｒｋ（以下、「ＦＭ」という）とは、ひとまとまりのデータの書き込みの区切りを示す区切り情報である。このようなＷｒｉｔｅＦＭ  Ｎｏｎ  Ｉｍｍｅｄｉａｔｅコマンドとしては、更に、ＷｒｉｔｅＦＭ０コマンドと、ＷｒｉｔｅＦＭ１コマンドとがある。ＷｒｉｔｅＦＭ０コマンドは、バッファ１２内のデータをＦＭを伴わずにテープ２３に強制的に書き込むことを指示するコマンドである。一方、ＷｒｉｔｅＦＭ１コマンドは、バッファ１２内のデータと共にＦＭをテープ２３に強制的に書き込むことを指示するコマンドである。
【００２３】
そして、ホスト３０で動作するアプリケーションの中には、ＷｒｉｔｅＦＭ０コマンドを発行した後、続けてＷｒｉｔｅＦＭ１コマンドを発行するものがある。
この場合、まず、ＷｒｉｔｅＦＭ０コマンドによりバッファ１２内のデータをテープ２３に強制的に書き込むため、バックヒッチが発生する。更に、次のＷｒｉｔｅＦＭ１コマンドにより、ＦＭをテープ２３に強制的に書き込む必要があるため、再度バックヒッチを行う。
【００２４】
米国ＩＢＭ社のＴＳ１１２０テープドライブの場合、データセットと呼ばれるデータ単位で、データをテープに書き込む。そこで、このようなデータの書込みを行う場合を例にとり、上記バックヒッチが発生する様子について具体的に説明する。
図２は、バックヒッチが発生する様子を模式的に示した図である。尚、ここでは、「データセット」を便宜上「ＤＳ」と表記している。
【００２５】
例えば、ＤＳ＃Ｎ＋１の途中までデータが格納された状態で、ＷｒｉｔｅＦＭ０コマンドを受け取ったとする。すると、ＤＳ＃Ｎ＋１の後ろの部分をパディングし、（ａ）に示すように、強制的にＤＳ＃Ｎ＋１をテープ２３に書き込み、バックヒッチを行う。
【００２６】
その後、ＷｒｉｔｅＦＭ１コマンドを受け取ったとする。すると、（ｂ）に示すように、上記バックヒッチの完了後、ＤＳ＃Ｎ＋２をテープ２３に書き込み、再度バックヒッチを行う。ここで、ＤＳ＃Ｎ＋２は、ＦＭのみを含み、残りの部分はパディングされたデータセットである。
ＤＳ＃Ｎ＋１を書き込んだ後に発生したバックヒッチの完了後でなければ、このＤＳ＃Ｎ＋２の書込み処理はできない。更に、続くＷｒｉｔｅコマンドの処理はＤＳ＃Ｎ＋２の書き込み終了後にしかできない。
【００２７】
従って、（ｃ）に示すように、ＤＳ＃Ｎ＋２の書込みの後に発生したバックヒッチの完了後、Ｗｒｉｔｅコマンドの実行を開始し、ＤＳ＃Ｎ＋３を書き込むことになる。
このように、２度のバックヒッチを行った後でないと次のデータ（この場合はＤＳ＃Ｎ＋３以降のデータ）の書込みを開始することができないため、パフォーマンスが大きな影響を受ける。
【００２８】
そこで、本実施の形態では、ＷｒｉｔｅＦＭ０、ＷｒｉｔｅＦＭ１というコマンドシーケンスに対して、従来は２度のバックヒッチが発生していた点を、１度のバックヒッチの発生で済むよう、テープドライブ１０側で解決する。尚、この場合、ホスト３０側のソフトウェアを変更することは容易ではないので、テープドライブ１０側でパフォーマンスを向上させることは有意義である。
具体的には、ＷｒｉｔｅＦＭ０コマンドを受け取った時点で、次にＷｒｉｔｅＦＭ１コマンドが発行されることを想定して、ＷｒｉｔｅＦＭ１コマンドに対応したＦＭを投機的に書き込んでおく。尚、以下では、このように投機的に書き込まれたＦＭを「投機的ＦＭ」（Speculative FM）と呼ぶことにする。そして、投機的ＦＭを書き込んだことをカートリッジメモリ２４に保持しておき、続くＷｒｉｔｅＦＭ１コマンドに対しては、カートリッジメモリ２４に対する情報のアップデートのみを行うことで、バックヒッチの発生を防ぐ。このように、投機的ＦＭを書き込んだことをカートリッジメモリ２４に保持するようにしたのは、投機的ＦＭを書き込んだ後、次の処理が行われる前に電源が遮断されてしまった場合に、テープ２３の最後に残ったＦＭが投機的ＦＭか通常のＦＭかを見分けるためである。
また、投機的ＦＭが不要になった場合は、ＦＭを読み出すコマンドに対し、投機的ＦＭを誤ってホスト３０に送らないようにする。
【００２９】
次に、このような動作を実現するためのコントローラ１６の機能構成について説明する。
図３は、コントローラ１６の機能構成例を示したブロック図である。
図示するように、コントローラ１６は、コマンド処理部４１と、バッファ管理部４２と、チャネル入出力部４３と、カートリッジメモリ入出力部（以下、「ＣＭ入出力部」という）４４とを備える。
【００３０】
このうち、コマンド処理部４１は、ホストＩ／Ｆ１１からコマンドを受け取る。ここで、コマンドとしては、バッファ内のデータをテープ媒体に強制的に書き込むことを指示する第１のコマンドの一例であるＷｒｉｔｅＦＭ０コマンド、区切り情報をテープ媒体に書き込むことを指示する第２のコマンドの一例であるＷｒｉｔｅＦＭ１コマンド、バッファにデータを格納することを指示する第３のコマンドの一例であるＷｒｉｔｅコマンド、テープ媒体に書き込まれた区切り情報を読み出したり、テープ媒体に書き込まれた区切り情報にテープ媒体を位置付けたりする第４のコマンドの一例であるＲｅａｄコマンド、Ｌｏｃａｔｅコマンド、Ｓｐａｃｅコマンド等がある。本実施の形態では、第１乃至第４のコマンドを受け付ける受付部の一例として、コマンド処理部４１を設けている。
【００３１】
バッファ管理部４２は、コマンド処理部４１がＷｒｉｔｅＦＭ０コマンドを受け取った場合は、投機的ＦＭをバッファ１２内に用意し、コマンド処理部４１がＷｒｉｔｅＦＭ１コマンドを受け取った場合は、ＷｒｉｔｅＦＭ０コマンドの直後でなければ、ＦＭをバッファ１２内に用意する。また、コマンド処理部４１がＷｒｉｔｅコマンドを受け取った場合は、データをバッファ１２内に用意し、コマンド処理部４１がＷｒｉｔｅＦＭコマンド、Ｗｒｉｔｅコマンド以外のコマンドを受け取った場合は、ＷｒｉｔｅＦＭ０コマンドの直後であれば、ＥＯＤ（End Of Data）をバッファ１２内に用意する。
【００３２】
チャネル入出力部４３は、バッファ管理部４２がバッファ１２から読み出したデータをチャネル１３に出力したり、チャネル１３から受け取ったデータをバッファ１２に格納したりする。特に、区切り情報の一例であるＦＭ、ダミーの区切り情報の一例である投機的ＦＭ、投機的ＦＭを上書きするためのデータをテープ２３に書き込むべく出力する。本実施の形態では、バッファ内のデータとダミーの区切り情報とをテープ媒体に書き込む書込み部の一例として、また、ダミーの区切り情報を有効な区切り情報として扱えないようにする処理を行う処理部の一例として、チャネル入出力部４３を設けている。
【００３３】
ＣＭ入出力部４４は、カートリッジメモリ２４がアクセス可能であるかどうかや、投機的ＦＭがテープ２３に存在することを示す情報（以下、「投機的ＦＭ存在情報」という）がカートリッジメモリ２４に保存されているかどうかを、ＣＭＩ／Ｆ１９を介して調べる。また、カートリッジメモリ２４に保存された投機的ＦＭ存在情報の消去も行う。本実施の形態では、ダミーの区切り情報がテープ媒体に書き込まれたことを示す情報を記録媒体に記録する記録部の一例として、また、ダミーの区切り情報を有効な区切り情報として扱えるようにする処理を行う処理部一例として、ＣＭ入出力部４４を設けている。
【００３４】
次に、コントローラ１６の動作について説明する。
この場合の動作は、ＷｒｉｔｅＦＭ０コマンドに応じて投機的ＦＭを書き込んだ後、予想に反してＷｒｉｔｅＦＭ１コマンドが来なかった場合に、投機的ＦＭを物理的に上書きするか論理的に上書きするかで異なってくるので、これらを分けて説明する。
【００３５】
［物理的に上書きする場合］
図４は、この場合のデータセットの内容を模式的に示した図である。尚、ここでも、「データセット」を便宜上「ＤＳ」と表記している。即ち、図は、データセットのうちＤＳ＃ＮとＤＳ＃Ｎ＋１に着目して、その内容を示している。
まず、（ａ）では、ＷｒｉｔｅＦＭ０コマンドに応じて、その時点でホスト３０から受け取っていたレコードＲｅｃ＃Ｍを含むＤＳ＃Ｎと、投機的ＦＭのみを含むＤＳ＃Ｎ＋１がテープ２３に書き込まれている。尚、図中、「ＳＦＭ」は、投機的ＦＭ（Speculative FM）を表す。
そして、（ｂ）は、予想通り、次にＷｒｉｔｅＦＭ１コマンドが来た場合のＤＳ＃Ｎ及びＤＳ＃Ｎ＋１の内容を示す。この場合、投機的ＦＭは、有効化され、通常のＦＭとなっている。
【００３６】
一方、（ｃ），（ｄ）は、予想に反して、次にＷｒｉｔｅＦＭ１コマンドが来なかった場合のＤＳ＃Ｎ及びＤＳ＃Ｎ＋１の内容を示す。例えば、ＷｒｉｔｅコマンドによりＲｅｃ＃Ｍ＋１を書き込むよう指示されれば、（ｃ）に示すように、投機的ＦＭを含むＤＳ＃Ｎ＋１は、Ｒｅｃ＃Ｍ＋１を含むＤＳ＃Ｎ＋１で物理的に上書きされる。また、Ｗｒｉｔｅコマンド以外のコマンドが来れば、（ｄ）に示すように、投機的ＦＭを含むＤＳ＃Ｎ＋１は、ＥＯＤを含むＤＳ＃Ｎ＋１で物理的に上書きされる。尚、この場合、物理的上書き（Physical Overwrite）とは、テープ２３上の投機的ＦＭと同じ位置に他のデータを書き込むことによって上書きすることをいう。
【００３７】
以下、この場合のコントローラ１６の動作について、詳細に説明する。
まず、ＷｒｉｔｅＦＭコマンドを受け取った場合の動作について説明する。
図５は、このときのコントローラ１６の動作例を示したフローチャートである。尚、このとき、バッファ１２内にはＤＳ＃Ｎまでの幾つかのデータセットが格納されており、ＤＳ＃Ｎには、図４に示したように途中までデータが格納されているものとする。
【００３８】
コントローラ１６では、まず、コマンド処理部４１が、ホストＩ／Ｆ１１からＷｒｉｔｅＦＭコマンドを受け取り（ステップ４０１）、それがＷｒｉｔｅＦＭ０コマンドかＷｒｉｔｅＦＭ１コマンドかを判定する（ステップ４０２）。
ここで、ＷｒｉｔｅＦＭ０コマンドであると判定した場合、コマンド処理部４１はその旨の情報をバッファ管理部４２に出力し、バッファ管理部４２が、投機的ＦＭを含むＤＳ＃Ｎ＋１をバッファ１２に用意する（ステップ４０３）。そして、バッファ管理部４２が、バッファ１２内のデータをチャネル入出力部４３に渡し、チャネル入出力部４３が、このデータをチャネル１３に出力する（ステップ４０４）。これにより、バッファ１２内にあるＤＳ＃Ｎ＋１までのデータセットがチャネル１３及びヘッド１４を介してテープ２３に書き込まれることになる。
【００３９】
また、バッファ管理部４２は、投機的ＦＭをテープ２３に書き込んだ旨をＣＭ入出力部４４に通知し、ＣＭ入出力部４４が、投機的ＦＭ存在情報をカートリッジメモリ２４に保存することを指示する情報をＣＭＩ／Ｆ１９に出力する（ステップ４０５）。
その後、これらの処理の結果は、コマンド処理部４１に返され、コマンド処理部４１は、ＷｒｉｔｅＦＭコマンド（この場合、ＷｒｉｔｅＦＭ０コマンド）の完了をホスト３０に報告する（ステップ４０６）。
【００４０】
一方、ステップ４０２でＷｒｉｔｅＦＭ１コマンドであると判定した場合、コマンド処理部４１はその旨をＣＭ入出力部４４に通知し、ＣＭ入出力部４４が、ＣＭＩ／Ｆ１９を用いて、投機的ＦＭ存在情報がカートリッジメモリ２４に保存されているかどうかを確認することにより、投機的ＦＭがテープ２３上にあるかどうかを判定する（ステップ４０７）。
【００４１】
その結果、投機的ＦＭがテープ２３上にないと判定した場合、ＣＭ入出力部４４は、その旨をバッファ管理部４２に伝える。この場合は、前回のコマンドがＷｒｉｔｅＦＭ０コマンドではない、つまり、ＷｒｉｔｅＦＭ０コマンドに続けてＷｒｉｔｅＦＭ１コマンドが来たわけではないので、バッファ管理部４２は、通常のＦＭの書込みを行う。即ち、まず、ＦＭを含むＤＳ＃Ｎ＋１をバッファ１２に用意する（ステップ４０８）。そして、バッファ１２内のデータをチャネル入出力部４３に渡し、チャネル入出力部４３が、このデータをチャネル１３に出力する（ステップ４０９）。これにより、バッファ１２内にあるＤＳ＃Ｎ＋１までのデータセットがチャネル１３及びヘッド１４を介してテープ２３に書き込まれることになる。
その後、これらの処理の結果は、コマンド処理部４１に返され、コマンド処理部４１は、ＷｒｉｔｅＦＭコマンド（この場合、ＷｒｉｔｅＦＭ１コマンド）の完了をホスト３０に報告する（ステップ４０６）。
【００４２】
一方、ステップ４０７で投機的ＦＭがテープ２３上にあると判定した場合は、前回のコマンドがＷｒｉｔｅＦＭ０コマンドである、つまり、ＷｒｉｔｅＦＭ０コマンドに続けてＷｒｉｔｅＦＭ１コマンドが来た場合であるので、ＣＭ入出力部４４は、カートリッジメモリ２４に記憶された投機的ＦＭ存在情報を消去することを指示する情報をＣＭＩ／Ｆ１９に出力する（ステップ４１０）。これにより、カートリッジメモリ２４内の投機的ＦＭ存在情報は消去される。
その後、これらの処理の結果は、コマンド処理部４１に返され、コマンド処理部４１は、ＷｒｉｔｅＦＭコマンド（この場合、ＷｒｉｔｅＦＭ１コマンド）の完了をホスト３０に報告する（ステップ４０６）。
【００４３】
次に、Ｗｒｉｔｅコマンドを受け取った場合の動作について説明する。
図６は、このときのコントローラ１６の動作例を示したフローチャートである。尚、このとき、テープ２３上にはＤＳ＃Ｎ＋１までが書かれているものとする。
コントローラ１６では、まず、コマンド処理部４１が、ホストＩ／Ｆ１１からＷｒｉｔｅコマンドを受け取り（ステップ４１１）、その旨の情報をバッファ管理部４２及びＣＭ入出力部４４に出力する。すると、ＣＭ入出力部４４が、ＣＭＩ／Ｆ１９を用いて、投機的ＦＭ存在情報がカートリッジメモリ２４に保存されているかどうかを確認することにより、投機的ＦＭがテープ２３上にあるかどうかを判定する（ステップ４１２）。
【００４４】
ここで、投機的ＦＭがテープ２３上にあると判定した場合は、ＷｒｉｔｅＦＭ０コマンドに続くコマンドとしてＷｒｉｔｅＦＭ１コマンドが来ることを予想して投機的ＦＭをテープ２３に書き込んだにも関わらず、続くコマンドとしてＷｒｉｔｅコマンドが来た場合である。この場合、ＣＭ入出力部４４は、カートリッジメモリ２４に記憶された投機的ＦＭ存在情報を消去することを指示する情報をＣＭＩ／Ｆ１９に出力する（ステップ４１３）。これにより、カートリッジメモリ２４内の投機的ＦＭ存在情報は消去される。
【００４５】
また、ＣＭ入出力部４４は、投機的ＦＭ存在情報がカートリッジメモリ２４に保存されていた旨をバッファ管理部４２に通知する。すると、バッファ管理部４２は、テープ２３上の投機的ＦＭを無効化して次のデータを書き込むための処理を行う。即ち、バッファ１２内のデータの格納位置をＤＳ＃Ｎ＋１に設定し、この新たなＤＳ＃Ｎ＋１によりテープ２３上の投機的ＦＭを含むＤＳ＃Ｎ＋１が物理的に上書きされるように管理する（ステップ４１４）。例えば、バッファ１２内のＤＳ＃Ｎ＋１が、テープ２３上のＤＳ＃Ｎ＋１を物理的に上書きする位置に書き込まれる場合であれば、テープ２３上の上書きされるべきデータセットの番号と、バッファ１２内の上書きすべきデータセットの番号とを同じにすることが、物理的に上書きされるように管理することに相当する。一方、バッファ１２内のＤＳ＃Ｎ＋１が、テープ２３上のＤＳ＃Ｎ＋１を物理的に上書きする位置に書き込まれるとは限らない場合であれば、例えば、データセットに付随する情報テーブル（ＤＳＩＴ：Data Set Information Table）の中に、そのデータセットが同じ番号のテープ２３上のデータセットを物理的に上書きすべきことを示す情報を持たせてもよい。
【００４６】
そして、バッファ管理部４２は、Ｗｒｉｔｅコマンドと共にホスト３０から送られたデータをコマンド処理部４１から受け取り、バッファ１２内の格納位置として設定されたデータセットに格納する（ステップ４１５）。
その後、これらの処理の結果は、コマンド処理部４１に返され、コマンド処理部４１は、Ｗｒｉｔｅコマンドの完了をホスト３０に報告する（ステップ４１６）。
そして、その後の同期コマンドにより、投機的ＦＭは、データにより物理的に上書きされる。これは、ＷｒｉｔｅＦＭ１コマンドを実行し、それを次のデータで物理的に上書きした場合と同じと考えることができる。
【００４７】
一方、ステップ４１２で投機的ＦＭがテープ２３上にないと判定した場合は、ＷｒｉｔｅＦＭ０コマンドに続いて来たＷｒｉｔｅコマンドではなく、通常のＷｒｉｔｅコマンドである。この場合、ＣＭ入出力部４４は、その旨をバッファ管理部４２に通知する。すると、バッファ管理部４２は、Ｗｒｉｔｅコマンドと共にホスト３０から送られたデータをコマンド処理部４１から受け取り、バッファ１２内の現在のデータに続けて格納する（ステップ４１５）。
その後、これらの処理の結果は、コマンド処理部４１に返され、コマンド処理部４１は、Ｗｒｉｔｅコマンドの完了をホスト３０に報告する（ステップ４１６）。
【００４８】
次いで、ＷｒｉｔｅＦＭコマンド、Ｗｒｉｔｅコマンド以外のコマンドを受け取った場合の動作について説明する。尚、この動作においては、カートリッジメモリ２４を読める場合と読めない場合について考慮する。仮に、カートリッジメモリ２４が物理的に壊れていたとしても、テープ２３上に書かれたデータは正しく読み出されることが求められるからである。
【００４９】
図７は、このときのコントローラ１６の動作例を示したフローチャートである。尚、ここでは、ＤＳ＃Ｎ＋１がテープ２３の最後に書かれたデータセットであるとする。
コントローラ１６では、まず、コマンド処理部４１が、ホストＩ／Ｆ１１からＷｒｉｔｅＦＭコマンド、Ｗｒｉｔｅコマンド以外のコマンドを受け取る（ステップ４２１）。尚、このようなコマンドとしては、Ｒｅａｄコマンド、Ｌｏｃａｔｅコマンド、Ｓｐａｃｅコマンド、Ｒｅｗｉｎｄコマンド、Ｕｎｌｏａｄコマンド等がある。
【００５０】
そして、コマンド処理部４１は、コマンドを受け取った旨の情報をバッファ管理部４２に出力し、バッファ管理部４２は、まだ書かれていないデータがバッファ１２内にあるかどうかを判定する（ステップ４２２）。
ここで、まだ書かれていないデータがバッファ１２内にあると判定した場合、バッファ１２内の全てのデータをテープ２３に書き込んで（ステップ４２９）、ステップ４２７へ進む。一方、まだ書かれていないデータがバッファ１２内にないと判定した場合、その旨の情報をＣＭ入出力部４４に出力する。すると、ＣＭ入出力部４４が、カートリッジメモリ２４にアクセス可能かどうかを調べることを指示する情報をＣＭＩ／Ｆ１９に出力する（ステップ４２３）。
【００５１】
その結果、カートリッジメモリ２４にアクセス可能でないと判定すると、ステップ４２７へ進むが、カートリッジメモリ２４にアクセス可能であると判定すると、ＣＭ入出力部４４は、ＣＭＩ／Ｆ１９を用いて、投機的ＦＭ存在情報がカートリッジメモリ２４に保存されているかどうかを確認することにより、投機的ＦＭがテープ２３上にあるかどうかを判定する（ステップ４２４）。ここで、投機的ＦＭがテープ２３上にない場合は、ステップ４２７へ進むが、投機的ＦＭがテープ２３上にある場合、ＣＭ入出力部４４は、カートリッジメモリ２４に記憶された投機的ＦＭ存在情報を消去することを指示する情報をＣＭＩ／Ｆ１９に出力する（ステップ４２５）。これにより、カートリッジメモリ２４内の投機的ＦＭ存在情報は消去される。
【００５２】
また、ＣＭ入出力部４４は、投機的ＦＭ存在情報がカートリッジメモリ２４に保存されていた旨をバッファ管理部４２に通知する。一連の書込み処理が終わった時点で投機的ＦＭはテープ２３上に存在してはいけないので、この通知により、バッファ管理部４２は、テープ２３上の投機的ＦＭを無効化してＥＯＤを書き込むための処理を行う。即ち、バッファ１２内のＥＯＤの格納位置をＤＳ＃Ｎ＋１に設定し、この新たなＤＳ＃Ｎ＋１によりテープ２３上の投機的ＦＭを含むＤＳ＃Ｎ＋１が物理的に上書きされるように管理する（ステップ４２６）。尚、この場合の物理的に上書きされるような管理の方法としては、ステップ４１４に関して説明したのと同様の方法を用いることができる。
その後、コマンド処理部４１が受け取ったコマンドに応じて、後述するコマンド処理が行われる（ステップ４２７）。そして、コマンド処理が終了すると、コマンド処理部４１は、コマンドの完了をホスト３０に報告する（ステップ４２８）。
【００５３】
次いで、図７のステップ４２７におけるコマンド処理の動作について説明する。
図８は、コマンド処理を行うときのコントローラ１６の動作例を示したフローチャートである。
コントローラ１６では、まず、コマンド処理部４１が、処理の対象となるコマンドがターゲットの指定を有するものであるかどうかを判定する（ステップ４３１）。尚、ここで、ターゲットとは、Ｒｅａｄコマンドで指定される読出し対象のレコード又はＦＭ、ＬｏｃａｔｅコマンドやＳｐａｃｅコマンドで指定される位置合わせ対象のレコード又はＦＭである。
【００５４】
その結果、ターゲット指定を有するコマンドでない場合、例えば、Ｕｎｌｏａｄコマンド等の場合は、そのコマンドに応じた処理が行われ（ステップ４４０）、図７のフローチャートに戻る。
一方、ターゲット指定を有するコマンドである場合、例えば、Ｒｅａｄコマンド、Ｌｏｃａｔｅコマンド、Ｓｐａｃｅコマンド等の場合、コマンド処理部４１は、コマンド及びターゲットをチャネル入出力部４３に出力し、チャネル入出力部４３が、ターゲットを含むデータセット及びその次のデータセットを読んで、読めたかどうかをコマンド処理部４１に返す。そして、この結果に基づいて、コマンド処理部４１は、ターゲットを含むデータセットがテープ２３上の最後のデータセットであるかどうかを判定する（ステップ４３３）。尚、図では、ターゲットを含むデータセットをＤＳ＃Ｎとしている。
【００５５】
ここで、最後のデータセットでないと判定した場合、Ｒｅａｄコマンドに対しては、チャネル入出力部４３が取得したレコード又はＦＭをコマンド処理部４１がホスト３０に転送する。また、ＬｏｃａｔｅコマンドやＳｐａｃｅコマンドに対しては、指定されたレコード又はＦＭへの位置合わせをバッファ管理部４２が行う（ステップ４３６）。
【００５６】
一方、最後のデータセットであると判定した場合、コマンド処理部４１は、その旨の情報をＣＭ入出力部４４に出力する。すると、ＣＭ入出力部４４が、カートリッジメモリ２４にアクセス可能かどうかを調べることを指示する情報をＣＭＩ／Ｆ１９に出力する（ステップ４３４）。
【００５７】
まず、このステップ４３４でカートリッジメモリ２４にアクセス可能であると判定された場合について述べる。この場合、コマンド処理部４１は、ターゲットが投機的ＦＭであるかどうかを判定する（ステップ４３５）。尚、ここでの判定は、具体的には、次のように行うことが可能である。即ち、まず、コマンド処理部４１が、ターゲットがデータセット内の最後のブロック（レコード又はＦＭ）であるかどうかを判定する。そして、ＣＭ入出力部４４が、ＣＭＩ／Ｆ１９を用いて、投機的ＦＭ存在情報がカートリッジメモリ２４に保存されているかどうかを確認することにより、投機的ＦＭがテープ２３上にあるかどうかを判定する。その結果、ターゲットがデータセット内の最後のブロックであり、かつ、投機的ＦＭがテープ２３上にあれば、この投機的ＦＭがターゲットとして指定されたことになる。
【００５８】
電源障害等により投機的ＦＭを書き込んだ後に正常に書き込み処理が終了できなかった場合を除けば、この時点で、投機的ＦＭ存在情報がカートリッジメモリ２４に残っていることはない。従って、物理的上書きの規則に従って、ＤＳ＃Ｎ、ＤＳ＃Ｎ＋１を扱えば、整合性の取れたデータをホスト３０に転送することが可能である。即ち、ターゲットが投機的ＦＭでないと判定した場合、Ｒｅａｄコマンドに対しては、チャネル入出力部４３が取得したレコード又はＦＭをコマンド処理部４１がホスト３０に転送する。また、ＬｏｃａｔｅコマンドやＳｐａｃｅコマンドに対しては、指定されたレコード又はＦＭへの位置合わせをバッファ管理部４２が行う（ステップ４３６）。
【００５９】
一方、例えば、ＷｒｉｔｅＦＭ０コマンドにより投機的ＦＭがテープ２３上に書き込まれた状態で、ドライブの電源障害等により以後の処理が行われなかった場合は、投機的ＦＭ存在情報がカートリッジメモリ２４に残っていると考えられる。その場合には、テープ２３上の最後に書き込まれた投機的ＦＭはなかったものとして扱う。即ち、ターゲットが投機的ＦＭであると判定した場合、コマンド処理部４１は、読出しエラーを報告する準備を行う（ステップ４３９）。尚、この読出しエラーは、図７のステップ４２８でホスト３０に報告されることになる。
【００６０】
次に、ステップ４３４でカートリッジメモリ２４にアクセス可能でないと判定された場合について述べる。このように、カートリッジメモリ２４が無効な場合としては、カートリッジメモリ２４が物理的に利用できないような場合がある。このような場合でも、テープ２３上のデータは可能な限り、正しい内容でホスト３０に転送することが要求される。
ここでは、次のデータセットを読めない場合、つまり、ターゲットを含むデータセットがテープ２３上の最後のデータセットである場合を考えている。この場合、最後にテープ２３上から読めたＦＭは、情報が不確かである（投機的ＦＭであるかもしれない）ため、ホスト３０に転送しない。即ち、まず、コマンド処理部４１は、ターゲットがＦＭであるかどうかを判定する（ステップ４３８）。そして、ターゲットがＦＭであると判定されれば、読出しエラーを報告する準備を行う（ステップ４３９）。尚、この読出しエラーは、図７のステップ４２８でホスト３０に報告されることになる。また、ターゲットがＦＭでないと判定されれば、Ｒｅａｄコマンドに対しては、チャネル入出力部４３が取得したレコードをコマンド処理部４１がホスト３０に転送する。また、ＬｏｃａｔｅコマンドやＳｐａｃｅコマンドに対しては、指定されたレコードへの位置合わせをバッファ管理部４２が行う（ステップ４３６）。
【００６１】
尚、次のデータセットが読める場合、つまり、ターゲットを含むデータセットがテープ２３上の最後のデータセットでない場合は、物理上書きの規則に従って、ＤＳ＃Ｎ、ＤＳ＃Ｎ＋１を扱えば、整合性の取れたデータをホスト３０に転送することが可能である。この場合は、カートリッジメモリ２４に投機的ＦＭ存在情報が存在することはない。なぜなら、次のデータセットの書込みが正常に終了していれば、投機的ＦＭは、有効なＦＭであるか、続くデータで物理的に上書きされているかのどちらかのケースしかありえないからである。このような場合は、ステップ４３３の判断が「Ｎｏ」である場合に該当する。
【００６２】
［論理的に上書きする場合］
図９は、この場合のデータセットの内容を模式的に示した図である。尚、ここでも、「データセット」を便宜上「ＤＳ」と表記している。即ち、図は、データセットのうちＤＳ＃Ｎと必要があればＤＳ＃Ｎ＋１に着目して、その内容を示している。
まず、（ａ）では、ＷｒｉｔｅＦＭ０コマンドに応じて、その時点でホスト３０から受け取っていたレコードＲｅｃ＃Ｍと投機的ＦＭとを含むＤＳ＃Ｎがテープ２３に書き込まれている。尚、図中、「ＳＦＭ」は、投機的ＦＭ（Speculative FM）を表す。
そして、（ｂ）は、予想通り、次にＷｒｉｔｅＦＭ１コマンドが来た場合のＤＳ＃Ｎの内容を示す。この場合、投機的ＦＭは、有効化され、通常のＦＭとなっている。
【００６３】
一方、（ｃ），（ｄ）は、予想に反して、次にＷｒｉｔｅＦＭ１コマンドが来なかった場合のＤＳ＃Ｎ及びＤＳ＃Ｎ＋１の内容を示す。例えば、ＷｒｉｔｅコマンドによりＲｅｃ＃Ｍ＋１を書き込むよう指示されれば、（ｃ）に示すように、Ｒｅｃ＃Ｍと投機的ＦＭとを含むＤＳ＃Ｎは、Ｒｅｃ＃ＭとＲｅｃ＃Ｍ＋１を含むＤＳ＃Ｎ＋１で論理的に上書きされる。また、Ｗｒｉｔｅコマンド以外のコマンドが来れば、（ｄ）に示すように、Ｒｅｃ＃Ｍと投機的ＦＭとを含むＤＳ＃Ｎは、Ｒｅｃ＃Ｍを含むＤＳ＃Ｎ＋１で論理的に上書きされ、その後にＥＯＤが書かれる。尚、この場合、論理的上書き（Logical Overwrite）とは、テープ２３上の投機的ＦＭと異なる位置に他のデータを書き込むと共にテープ２３に投機的ＦＭが無効であることを示す情報を書き込むことによって上書きすることをいう。
【００６４】
以下、この場合のコントローラ１６の動作について、詳細に説明する。
まず、ＷｒｉｔｅＦＭコマンドを受け取った場合の動作について説明する。
図１０は、このときのコントローラ１６の動作例を示したフローチャートである。尚、このとき、バッファ１２内にはＤＳ＃Ｎまでの幾つかのデータセットが格納されており、ＤＳ＃Ｎには、図９に示したように途中までデータが格納されているものとする。
【００６５】
コントローラ１６では、まず、コマンド処理部４１が、ホストＩ／Ｆ１１からＷｒｉｔｅＦＭコマンドを受け取り（ステップ４５１）、それがＷｒｉｔｅＦＭ０コマンドかＷｒｉｔｅＦＭ１コマンドかを判定する（ステップ４５２）。
ここで、ＷｒｉｔｅＦＭ０コマンドであると判定した場合、コマンド処理部４１はその旨の情報をバッファ管理部４２に出力し、バッファ管理部４２が、投機的ＦＭを含むＤＳ＃Ｎをバッファ１２に用意する（ステップ４５３）。そして、バッファ管理部４２が、バッファ１２内のデータをチャネル入出力部４３に渡し、チャネル入出力部４３が、このデータをチャネル１３に出力する（ステップ４５４）。これにより、バッファ１２内にあるＤＳ＃Ｎまでのデータセットがチャネル１３及びヘッド１４を介してテープ２３に書き込まれることになる。
【００６６】
また、バッファ管理部４２は、投機的ＦＭをテープ２３に書き込んだ旨をＣＭ入出力部４４に通知し、ＣＭ入出力部４４が、投機的ＦＭ存在情報をカートリッジメモリ２４に保存することを指示する情報をＣＭＩ／Ｆ１９に出力する（ステップ４５５）。
その後、これらの処理の結果は、コマンド処理部４１に返され、コマンド処理部４１は、ＷｒｉｔｅＦＭコマンド（この場合、ＷｒｉｔｅＦＭ０コマンド）の完了をホスト３０に報告する（ステップ４５６）。
【００６７】
一方、ステップ４５２でＷｒｉｔｅＦＭ１コマンドであると判定した場合、コマンド処理部４１はその旨をＣＭ入出力部４４に通知し、ＣＭ入出力部４４が、ＣＭＩ／Ｆ１９を用いて、投機的ＦＭ存在情報がカートリッジメモリ２４に保存されているかどうかを確認することにより、投機的ＦＭがテープ２３上にあるかどうかを判定する（ステップ４５７）。
【００６８】
その結果、投機的ＦＭがテープ２３上にないと判定した場合、ＣＭ入出力部４４は、その旨をバッファ管理部４２に伝える。この場合は、前回のコマンドがＷｒｉｔｅＦＭ０コマンドではない、つまり、ＷｒｉｔｅＦＭ０コマンドに続けてＷｒｉｔｅＦＭ１コマンドが来たわけではないので、バッファ管理部４２は、通常のＦＭの書込みを行う。即ち、まず、ＦＭを含むＤＳ＃Ｎをバッファ１２に用意する（ステップ４５８）。そして、バッファ１２内のデータをチャネル入出力部４３に渡し、チャネル入出力部４３が、このデータをチャネル１３に出力する（ステップ４５９）。これにより、バッファ１２内にあるＤＳ＃Ｎまでのデータセットがチャネル１３及びヘッド１４を介してテープ２３に書き込まれることになる。
その後、これらの処理の結果は、コマンド処理部４１に返され、コマンド処理部４１は、ＷｒｉｔｅＦＭコマンド（この場合、ＷｒｉｔｅＦＭ１コマンド）の完了をホスト３０に報告する（ステップ４５６）。
【００６９】
一方、ステップ４５７で投機的ＦＭがテープ２３上にあると判定した場合は、前回のコマンドがＷｒｉｔｅＦＭ０コマンドである、つまり、ＷｒｉｔｅＦＭ０コマンドに続けてＷｒｉｔｅＦＭ１コマンドが来た場合であるので、ＣＭ入出力部４４は、カートリッジメモリ２４に記憶された投機的ＦＭ存在情報を消去することを指示する情報をＣＭＩ／Ｆ１９に出力する（ステップ４６０）。これにより、カートリッジメモリ２４内の投機的ＦＭ存在情報は消去される。
その後、これらの処理の結果は、コマンド処理部４１に返され、コマンド処理部４１は、ＷｒｉｔｅＦＭコマンド（この場合、ＷｒｉｔｅＦＭ１コマンド）の完了をホスト３０に報告する（ステップ４５６）。
【００７０】
次に、Ｗｒｉｔｅコマンドを受け取った場合の動作について説明する。
図１１は、このときのコントローラ１６の動作例を示したフローチャートである。尚、このとき、テープ２３上にはＤＳ＃Ｎまでが書かれているものとする。
コントローラ１６では、まず、コマンド処理部４１が、ホストＩ／Ｆ１１からＷｒｉｔｅコマンドを受け取り（ステップ４６１）、その旨の情報をバッファ管理部４２及びＣＭ入出力部４４に出力する。すると、ＣＭ入出力部４４が、ＣＭＩ／Ｆ１９を用いて、投機的ＦＭ存在情報がカートリッジメモリ２４に保存されているかどうかを確認することにより、投機的ＦＭがテープ２３上にあるかどうかを判定する（ステップ４６２）。
【００７１】
ここで、投機的ＦＭがテープ２３上にあると判定した場合は、ＷｒｉｔｅＦＭ０コマンドに続くコマンドとしてＷｒｉｔｅＦＭ１コマンドが来ることを予想して投機的ＦＭをテープ２３に書き込んだにも関わらず、続くコマンドとしてＷｒｉｔｅコマンドが来た場合である。この場合、ＣＭ入出力部４４は、カートリッジメモリ２４に記憶された投機的ＦＭ存在情報を消去することを指示する情報をＣＭＩ／Ｆ１９に出力する（ステップ４６３）。これにより、カートリッジメモリ２４内の投機的ＦＭ存在情報は消去される。
【００７２】
また、ＣＭ入出力部４４は、投機的ＦＭ存在情報がカートリッジメモリ２４に保存されていた旨をバッファ管理部４２に通知する。すると、バッファ管理部４２は、テープ２３上の投機的ＦＭを無効化して次のデータを書き込むための処理を行う。即ち、バッファ１２内のデータの格納位置をＤＳ＃Ｎ＋１に設定し、この新たなＤＳ＃Ｎ＋１によりテープ２３上の投機的ＦＭを含むＤＳ＃Ｎが論理的に上書きされるように管理する（ステップ４６４）。例えば、ＤＳ＃Ｎ＋１に付随する情報テーブル（ＤＳＩＴ）の中に、ＤＳ＃Ｎは無効であることを示す情報を持たせておき、ＤＳ＃Ｎ＋１がＤＳ＃Ｎの代わりになることを示しておけばよい。
【００７３】
そして、バッファ管理部４２は、Ｗｒｉｔｅコマンドと共にホスト３０から送られたデータをコマンド処理部４１から受け取り、バッファ１２内の格納位置として設定されたデータセットに格納する（ステップ４６５）。
その後、これらの処理の結果は、コマンド処理部４１に返され、コマンド処理部４１は、Ｗｒｉｔｅコマンドの完了をホスト３０に報告する（ステップ４６６）。
そして、その後の同期コマンドにより、投機的ＦＭは、データにより論理的に上書きされる。これは、ＷｒｉｔｅＦＭ１コマンドを実行し、それを次のデータで論理的に上書きした場合と同じと考えることができる。
【００７４】
一方、ステップ４６２で投機的ＦＭがテープ２３上にないと判定した場合は、ＷｒｉｔｅＦＭ０コマンドに続いて来たＷｒｉｔｅコマンドではなく、通常のＷｒｉｔｅコマンドである。この場合、ＣＭ入出力部４４は、その旨をバッファ管理部４２に通知する。すると、バッファ管理部４２は、Ｗｒｉｔｅコマンドと共にホスト３０から送られたデータをコマンド処理部４１から受け取り、バッファ１２内の現在のデータに続けて格納する（ステップ４６５）。
その後、これらの処理の結果は、コマンド処理部４１に返され、コマンド処理部４１は、Ｗｒｉｔｅコマンドの完了をホスト３０に報告する（ステップ４６６）。
【００７５】
次いで、ＷｒｉｔｅＦＭコマンド、Ｗｒｉｔｅコマンド以外のコマンドを受け取った場合の動作について説明する。尚、この動作においては、カートリッジメモリ２４を読める場合と読めない場合について考慮する。仮に、カートリッジメモリ２４が物理的に壊れていたとしても、テープ２３上に書かれたデータは正しく読み出されることが求められるからである。
【００７６】
図１２は、このときのコントローラ１６の動作例を示したフローチャートである。尚、ここでは、ＤＳ＃Ｎがテープ２３の最後に書かれたデータセットであるとする。
コントローラ１６では、まず、コマンド処理部４１が、ホストＩ／Ｆ１１からＷｒｉｔｅＦＭコマンド、Ｗｒｉｔｅコマンド以外のコマンドを受け取る（ステップ４７１）。尚、このようなコマンドとしては、Ｒｅａｄコマンド、Ｌｏｃａｔｅコマンド、Ｓｐａｃｅコマンド、Ｒｅｗｉｎｄコマンド、Ｕｎｌｏａｄコマンド等がある。
【００７７】
そして、コマンド処理部４１は、コマンドを受け取った旨の情報をバッファ管理部４２に出力し、バッファ管理部４２は、まだ書かれていないデータがバッファ１２内にあるかどうかを判定する（ステップ４７２）。
ここで、まだ書かれていないデータがバッファ１２内にあると判定した場合、バッファ１２内の全てのデータをテープ２３に書き込んで（ステップ４７９）、ステップ４７７へ進む。一方、まだ書かれていないデータがバッファ１２内にないと判定した場合、その旨の情報をＣＭ入出力部４４に出力する。すると、ＣＭ入出力部４４が、カートリッジメモリ２４にアクセス可能かどうかを調べることを指示する情報をＣＭＩ／Ｆ１９に出力する（ステップ４７３）。
【００７８】
その結果、カートリッジメモリ２４にアクセス可能でないと判定すると、ステップ４７７へ進むが、カートリッジメモリ２４にアクセス可能であると判定すると、ＣＭ入出力部４４は、ＣＭＩ／Ｆ１９を用いて、投機的ＦＭ存在情報がカートリッジメモリ２４に保存されているかどうかを確認することにより、投機的ＦＭがテープ２３上にあるかどうかを判定する（ステップ４７４）。ここで、投機的ＦＭがテープ２３上にない場合は、ステップ４７７へ進むが、投機的ＦＭがテープ２３上にある場合、ＣＭ入出力部４４は、カートリッジメモリ２４に記憶された投機的ＦＭ存在情報を消去することを指示する情報をＣＭＩ／Ｆ１９に出力する（ステップ４７５）。これにより、カートリッジメモリ２４内の投機的ＦＭ存在情報は消去される。
【００７９】
また、ＣＭ入出力部４４は、投機的ＦＭ存在情報がカートリッジメモリ２４に保存されていた旨をバッファ管理部４２に通知する。一連の書込み処理が終わった時点で投機的ＦＭはテープ２３上に存在してはいけないので、この通知により、バッファ管理部４２は、テープ２３上の投機的ＦＭを無効化してＥＯＤを書き込むための処理を行う。即ち、バッファ１２内のデータの格納位置をＤＳ＃Ｎ＋１に設定し、この新たなＤＳ＃Ｎ＋１によりテープ２３上の投機的ＦＭを含むＤＳ＃Ｎが論理的に上書きされるように管理すると共に、次のデータセットにＥＯＤを格納する（ステップ４７６）。尚、この場合の論理的に上書きされるような管理の方法としては、ステップ４６４に関して説明したのと同様の方法を用いることができる。
その後、コマンド処理部４１が受け取ったコマンドに応じて、後述するコマンド処理が行われる（ステップ４７７）。そして、コマンド処理が終了すると、コマンド処理部４１は、コマンドの完了をホスト３０に報告する（ステップ４７８）。
【００８０】
次いで、図１２のステップ４７７におけるコマンド処理の動作について説明する。
図１３は、コマンド処理を行うときのコントローラ１６の動作例を示したフローチャートである。
コントローラ１６では、まず、コマンド処理部４１が、処理の対象となるコマンドがターゲットの指定を有するものであるかどうかを判定する（ステップ４８１）。尚、ここで、ターゲットとは、Ｒｅａｄコマンドで指定される読出し対象のレコード又はＦＭ、ＬｏｃａｔｅコマンドやＳｐａｃｅコマンドで指定される位置合わせ対象のレコード又はＦＭである。
【００８１】
その結果、ターゲット指定を有するコマンドでない場合、例えば、Ｕｎｌｏａｄコマンド等の場合は、そのコマンドに応じた処理が行われ（ステップ４９０）、図１２のフローチャートに戻る。
一方、ターゲット指定を有するコマンドである場合、例えば、Ｒｅａｄコマンド、Ｌｏｃａｔｅコマンド、Ｓｐａｃｅコマンド等の場合、コマンド処理部４１は、コマンド及びターゲットをチャネル入出力部４３に出力し、チャネル入出力部４３が、ターゲットを含むデータセット及びその次のデータセットを読んで、読めたかどうかをコマンド処理部４１に返す。そして、この結果に基づいて、コマンド処理部４１は、ターゲットを含むデータセットの次のデータセットが読めたかどうかを判定する（ステップ４８２）。尚、図では、ターゲットを含むデータセットをＤＳ＃Ｎとしている。
【００８２】
ここで、次のデータセットが読めたと判定した場合、Ｒｅａｄコマンドに対しては、チャネル入出力部４３が取得したレコード又はＦＭをコマンド処理部４１がホスト３０に転送する。また、ＬｏｃａｔｅコマンドやＳｐａｃｅコマンドに対しては、指定されたレコード又はＦＭへの位置合わせをバッファ管理部４２が行う（ステップ４８６）。
一方、次のデータセットが読めなかったと判定した場合、ターゲットを含むデータセットがテープ２３上の最後のデータセットであるかどうかを判定する（ステップ４８３）。
【００８３】
ここで、最後のデータセットでないと判定した場合、Ｒｅａｄコマンドに対しては、チャネル入出力部４３が取得したレコード又はＦＭをコマンド処理部４１がホスト３０に転送する。また、ＬｏｃａｔｅコマンドやＳｐａｃｅコマンドに対しては、指定されたレコード又はＦＭへの位置合わせをバッファ管理部４２が行う（ステップ４８６）。
【００８４】
一方、最後のデータセットであると判定した場合、コマンド処理部４１は、その旨の情報をＣＭ入出力部４４に出力する。すると、ＣＭ入出力部４４が、カートリッジメモリ２４にアクセス可能かどうかを調べることを指示する情報をＣＭＩ／Ｆ１９に出力する（ステップ４８４）。
【００８５】
まず、このステップ４８４でカートリッジメモリ２４にアクセス可能であると判定された場合について述べる。この場合、コマンド処理部４１は、ターゲットが投機的ＦＭであるかどうかを判定する（ステップ４８５）。尚、ここでの判定は、具体的には、次のように行うことが可能である。即ち、まず、コマンド処理部４１が、ターゲットがデータセット内の最後のブロック（レコード又はＦＭ）であるかどうかを判定する。そして、ＣＭ入出力部４４が、ＣＭＩ／Ｆ１９を用いて、投機的ＦＭ存在情報がカートリッジメモリ２４に保存されているかどうかを確認することにより、投機的ＦＭがテープ２３上にあるかどうかを判定する。その結果、ターゲットがデータセット内の最後のブロックであり、かつ、投機的ＦＭがテープ２３上にあれば、この投機的ＦＭがターゲットとして指定されたことになる。
【００８６】
電源障害等により投機的ＦＭを書き込んだ後に正常に書き込み処理が終了できなかった場合を除けば、この時点で、投機的ＦＭ存在情報がカートリッジメモリ２４に残っていることはない。従って、論理的上書きの規則に従って、ＤＳ＃Ｎ、ＤＳ＃Ｎ＋１を扱えば、整合性の取れたデータをホスト３０に転送することが可能である。即ち、ターゲットが投機的ＦＭでないと判定した場合、Ｒｅａｄコマンドに対しては、チャネル入出力部４３が取得したレコード又はＦＭをコマンド処理部４１がホスト３０に転送する。また、ＬｏｃａｔｅコマンドやＳｐａｃｅコマンドに対しては、指定されたレコード又はＦＭへの位置合わせをバッファ管理部４２が行う（ステップ４８６）。
【００８７】
一方、例えば、ＷｒｉｔｅＦＭ０コマンドにより投機的ＦＭがテープ２３上に書き込まれた状態で、ドライブの電源障害等により以後の処理が行われなかった場合は、投機的ＦＭ存在情報がカートリッジメモリ２４に残っていると考えられる。その場合には、テープ２３上の最後に書き込まれた投機的ＦＭはなかったものとして扱う。即ち、ターゲットが投機的ＦＭであると判定した場合、コマンド処理部４１は、読出しエラーを報告する準備を行う（ステップ４８９）。尚、この読出しエラーは、図１２のステップ４７８でホスト３０に報告されることになる。
【００８８】
次に、ステップ４８４でカートリッジメモリ２４にアクセス可能でないと判定された場合について述べる。このように、カートリッジメモリ２４が無効な場合としては、カートリッジメモリ２４が物理的に利用できないような場合がある。このような場合でも、テープ２３上のデータは可能な限り、正しい内容でホスト３０に転送することが要求される。
ここでは、次のデータセットを読めない場合、つまり、ターゲットを含むデータセットがテープ２３上の最後のデータセットである場合を考えている。この場合、最後にテープ２３上から読めたＦＭは、情報が不確かである（投機的ＦＭであるかもしれない）ため、ホスト３０に転送しない。即ち、まず、コマンド処理部４１は、ターゲットがＦＭであるかどうかを判定する（ステップ４８８）。そして、ターゲットがＦＭであると判定されれば、読出しエラーを報告する準備を行う（ステップ４８９）。尚、この読出しエラーは、図１２のステップ４７８でホスト３０に報告されることになる。また、ターゲットがＦＭでないと判定されれば、Ｒｅａｄコマンドに対しては、チャネル入出力部４３が取得したレコードをコマンド処理部４１がホスト３０に転送する。また、ＬｏｃａｔｅコマンドやＳｐａｃｅコマンドに対しては、指定されたレコードへの位置合わせをバッファ管理部４２が行う（ステップ４８６）。
【００８９】
尚、次のデータセットが読める場合、つまり、ターゲットを含むデータセットがテープ２３上の最後のデータセットでない場合は、論理上書きの規則に従って、ＤＳ＃Ｎ、ＤＳ＃Ｎ＋１を扱えば、整合性の取れたデータをホスト３０に転送することが可能である。この場合は、カートリッジメモリ２４に投機的ＦＭ存在情報が存在することはない。なぜなら、次のデータセットの書込みが正常に終了していれば、投機的ＦＭは、有効なＦＭであるか、続くデータで物理的に上書きされているかのどちらかのケースしかありえないからである。このような場合は、ステップ４８３の判断が「Ｎｏ」である場合に該当する。
【００９０】
以上により、本実施の形態についての説明を終了する。
尚、本実施の形態では、上述したように、投機的ＦＭを書き込んだ後、次の処理が行われる前に電源が遮断されてしまった場合に、テープ２３の最後に残ったＦＭが投機的ＦＭか通常のＦＭかを見分けるため、投機的ＦＭ存在情報をテープカートリッジ２０内のカートリッジメモリ２４に保存した。しかしながら、このような電源が遮断されるようなケースを想定しなければ、カートリッジメモリ２４以外の記録媒体に保存するようにしてもよい。
【００９１】
このように、本実施の形態では、ＷｒｉｔｅＦＭ０コマンドに応じて、バッファ１２内のデータに加えて投機的ＦＭをテープ２３に書き込み、かつ、投機的ＦＭ存在情報をカートリッジメモリ２４に記録しておき、次にＷｒｉｔｅＦＭ１コマンドが来れば、投機的ＦＭ存在情報をカートリッジメモリ２４から消去して、投機的ＦＭを有効なＦＭとして扱えるようにした。これにより、ＷｒｉｔｅＦＭ０コマンドとＷｒｉｔｅＦＭ１コマンドが連続して送られる場合に、２度のバックヒッチが１度のバックヒッチで済み、かつ、カートリッジメモリ２４へのアクセス（数ミリ秒）だけで処理できるので、パフォーマンスが著しく向上する。
尚、本実施の形態では、ＷｒｉｔｅＦＭ０コマンドとＷｒｉｔｅＦＭ１コマンドが連続して送られる場合について述べたが、これはあくまで一実施例であり、ＷｒｉｔｅＦＭ１コマンドとＷｒｉｔｅＦＭ１コマンドが連続して送られる場合についても本発明は適用可能である。
【００９２】
ここで、本発明は、全てハードウェアで実現してもよいし、全てソフトウェアで実現してもよい。また、ハードウェア及びソフトウェアの両方により実現することも可能である。また、本発明は、コンピュータ、データ処理システム、コンピュータプログラムとして実現することができる。このコンピュータプログラムは、コンピュータにより読取り可能な媒体に記憶され、提供され得る。ここで、媒体としては、電子的、磁気的、光学的、電磁的、赤外線又は半導体システム（装置又は機器）、或いは、伝搬媒体が考えられる。また、コンピュータにより読取り可能な媒体としては、半導体、ソリッドステート記憶装置、磁気テープ、取り外し可能なコンピュータディスケット、ランダムアクセスメモリ（ＲＡＭ）、リードオンリーメモリ（ＲＯＭ）、リジッド磁気ディスク、及び光ディスクが例示される。現時点における光ディスクの例には、コンパクトディスク−リードオンリーメモリ（ＣＤ−ＲＯＭ）、コンパクトディスク−リード／ライト（ＣＤ−Ｒ／Ｗ）及びＤＶＤが含まれる。
【００９３】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態には限定されない。本発明の精神及び範囲から逸脱することなく様々に変更したり代替態様を採用したりすることが可能なことは、当業者に明らかである。
【図面の簡単な説明】
【００９４】
【図１】本発明の実施の形態が適用されるテープドライブの構成を示したブロック図である。
【図２】本発明の実施の形態が解決しようとする課題を説明するための図である。
【図３】本発明の実施の形態におけるコントローラの機能構成例を示したブロック図である。
【図４】本発明の実施の形態におけるコントローラの第１の動作例の概要を示した図である。
【図５】本発明の実施の形態におけるコントローラのＷｒｉｔｅＦＭコマンドを受け取った際の第１の動作例を示したフローチャートである。
【図６】本発明の実施の形態におけるコントローラのＷｒｉｔｅコマンドを受け取った際の第１の動作例を示したフローチャートである。
【図７】本発明の実施の形態におけるコントローラのＷｒｉｔｅＦＭコマンド、Ｗｒｉｔｅコマンド以外のコマンドを受け取った際の第１の動作例を示したフローチャートである。
【図８】本発明の実施の形態におけるコントローラのＷｒｉｔｅＦＭコマンド、Ｗｒｉｔｅコマンド以外のコマンドを受け取った際の第１の動作例を示したフローチャートである。
【図９】本発明の実施の形態におけるコントローラの第２の動作例の概要を示した図である。
【図１０】本発明の実施の形態におけるコントローラのＷｒｉｔｅＦＭコマンドを受け取った際の第２の動作例を示したフローチャートである。
【図１１】本発明の実施の形態におけるコントローラのＷｒｉｔｅコマンドを受け取った際の第２の動作例を示したフローチャートである。
【図１２】本発明の実施の形態におけるコントローラのＷｒｉｔｅＦＭコマンド、Ｗｒｉｔｅコマンド以外のコマンドを受け取った際の第２の動作例を示したフローチャートである。
【図１３】本発明の実施の形態におけるコントローラのＷｒｉｔｅＦＭコマンド、Ｗｒｉｔｅコマンド以外のコマンドを受け取った際の第２の動作例を示したフローチャートである。
【符号の説明】
【００９５】
１０…テープドライブ、１１…ホストＩ／Ｆ、１２…バッファ、１３…チャネル、１４…ヘッド、１５…モータ、１６…コントローラ、１７…ヘッド位置制御システム、１８…モータドライバ、１９…ＣＭＩ／Ｆ
【図１】
0005044822.tif 000002
【図２】
0005044822.tif 000003
【図３】
0005044822.tif 000004
【図４】
0005044822.tif 000005
【図５】
0005044822.tif 000006
【図６】
0005044822.tif 000007
【図７】
0005044822.tif 000008
【図８】
0005044822.tif 000009
【図９】
0005044822.tif 000010
【図１０】
0005044822.tif 000011
【図１１】
0005044822.tif 000012
【図１２】
0005044822.tif 000013
【図１３】
0005044822.tif 000014