(57)【要約】【課題】電子データファイルの内容をロードするための方法およびコンピュータ読取り可能媒体を提供する。【解決手段】この方法によれば、データファイルの破損された部分が識別され、その部分を修復する試みが行われる。破損された部分が修復され得ない場合、その部分のロードはスキップされる。次いで、データファイルの破損されていない、修復された部分は、メモリ内にロードされる。データファイルの部分が修復されまたはスキップされ得ない場合、データファイル内に含まれるユーザデータだけをロードする試みが行われる。【選択図】図２
2006178954.tif 000002
【特許請求の範囲】
【請求項１】
１つまたは複数の部分を含むデータファイルをロードするための方法であって、
第１のモードで前記データファイルの各部分をロードしようと試みることであって、前記第１モードでは前記部分のそれぞれに対して最小限の保全性チェックが実施されることと、
前記第１モードで前記データファイルのある部分がロード不可能かどうか判断することと、
ある部分がロード不可能であると判断することに応えて、第２のモードで前記データファイルの内容をロードしようと試みることであって、前記部分のそれぞれに対してより広範な保全性チェックが実施され、ロード不可能な各部分のロードがスキップされることとを備えることを特徴とする方法。
【請求項２】
前記第２モードで前記データファイルをロードしようと試みる間にロード不可能な部分が修復可能であるかどうか判断し、ロード不可能な部分が修復され得ると判断することに応えて前記ロード不可能な部分を修復し、前記修復された部分をロードすることを特徴とする請求項１に記載の方法。
【請求項３】
ロード不可能な部分が修復され得ないと判断することに応えて前記ロード不可能な部分のロードをスキップすることをさらに備えることを特徴とする請求項２に記載の方法。
【請求項４】
ロード不可能な部分のロードがスキップされ得るかどうか判断することと、
ロード不可能な部分のロードがスキップされ得ないと判断することに応えて第３のモードで前記データファイルをロードしようと試みることであって、前記第３モードではユーザデータに対応する前記データファイルの部分だけがロードされることとをさらに備えることを特徴とする請求項３に記載の方法。
【請求項５】
前記ユーザデータは、ユーザによって入力されたテキストデータを備えることを特徴とする請求項４に記載の方法。
【請求項６】
前記ユーザデータは、ユーザによって入力された数値データを備えることを特徴とする請求項４に記載の方法。
【請求項７】
コンピュータによって実行されるときに、
１つまたは複数の部分を含むデータファイルをロードするための第１のロードモードを提供することであって、前記第１ロードモードでロードするときに前記部分のそれぞれに対して最小限の保全性チェックが実施されることと、
前記データファイルの前記部分をロードするための第２のロードモードを提供することであって、より広範な保全性チェックが前記部分のそれぞれに対して実施され、ロード不可能な各部分のロードがスキップされることと、
前記第１ロードモードでデータファイルのロードを開始することと、
前記第１ロードモードで動作しているときに前記データファイルのある部分がロード不可能であるかどうか判断し、ある部分がロード不可能であると判断することに応えて前記第２ロードモードに切り換えることとを前記コンピュータに行わせるコンピュータ実行可能命令が格納されることを特徴とするコンピュータ読取り可能記録媒体。
【請求項８】
前記第２ロードモードでロード不可能な部分が修復され得るかどうか判断し、ロード不可能な部分が修復され得ると判断することに応えて前記ロード不可能な部分を修復し、前記修復された部分をロードすることを特徴とする請求項７に記載のコンピュータ読取り可能記録媒体。
【請求項９】
前記第２ロードモードで、ロード不可能な部分が修復され得ないと判断することに応えて前記ロード不可能な部分のロードがスキップされることを特徴とする請求項８に記載のコンピュータ読取り可能記録媒体。
【請求項１０】
前記コンピュータによって実行されるときに、
ユーザデータに対応する前記データファイルの一部だけがロードされる第３のモードを提供することと
前記第２ロードモードで動作している間に、ロード不可能な部分のロードがスキップされ得るかどうか判断することと、
ロード不可能な部分のロードがスキップされ得ないと判断することに応えて前記第３ロードモードに切り換えることとを前記コンピュータに行わせるコンピュータ読取り可能命令をさらに備えることを特徴とする請求項９に記載のコンピュータ読取り可能記録媒体。
【請求項１１】
前記ユーザデータは、ユーザによって入力されたテキストデータを備えることを特徴とする請求項１０に記載のコンピュータ読取り可能記録媒体。
【請求項１２】
前記ユーザデータは、ユーザによって入力された数値データを備えることを特徴とする請求項１１に記載のコンピュータ読取り可能記録媒体。
【請求項１３】
コンピュータによって実行されるときに、
第１のロードモードと、第２のロードモードと、第３のロードモードとを提供することと、
１つまたは複数のデータレコードを含むデータファイルを前記第１ロードモードでロードし始めることであって、前記データレコードに対して最小限の保全性チェックが実施されることと、
前記第１ロードモードで前記データファイルをロードしている間に、前記データレコードのうちの１つが欠落しまたは破損しているかどうか判断することと、
前記第１ロードモードで前記データレコードのうちの１つがロード不可能であると判断することに応えて前記第２ロードモードに切り換えることと、
前記第２ロードモードで前記データファイルをその最初からロードしようと試みることであって、前記第２ロードモードでは前記第１ロードモードと比べて追加の保全性チェックが前記データレコードに対して実施され、ロード不可能ないずれのレコードのロードもがスキップされることと、
前記第２ロードモードで前記データファイルをロードしている間に、前記データレコードのうちの１つのロードがスキップされ得ないかどうか判断することと、
前記第２ロードモードでロードしている間に前記データレコードのうちの１つのロードがスキップされ得ないと判断することに応えて前記第３ロードモードに切り換えることであって、前記データファイル内に格納されたユーザデータだけがロードされることとを前記コンピュータに行わせるコンピュータ実行可能命令が格納されることを特徴とするコンピュータ読取り可能記録媒体。
【請求項１４】
レコードが予期せぬデータ値を含む場合は前記レコードがロード不可能であり得ることを特徴とする請求項１３に記載のコンピュータ読取り可能記録媒体。
【請求項１５】
レコードが欠落したデータである場合は前記レコードがさらにロード不可能であり得ることを特徴とする請求項１４に記載のコンピュータ読取り可能記録媒体。
【請求項１６】
レコードが無効の拡張可能マークアップ言語を含む場合は前記レコードがさらにロード不可能であり得ることを特徴とする請求項１５に記載のコンピュータ読取り可能記録媒体。
【請求項１７】
アプリケーションプログラムによるレコードのロードが前記アプリケーションプログラムのクラッシュを引き起こす場合は前記レコードがさらにロード不可能であり得ることを特徴とする請求項１６に記載のコンピュータ読取り可能記録媒体。
【請求項１８】
レコードが破損している場合は前記レコードがさらにロード不可能であり得ることを特徴とする請求項１７に記載のコンピュータ読取り可能記録媒体。
【請求項１９】
レコードが欠落している場合は前記レコードがさらにロード不可能であり得ることを特徴とする請求項１８に記載のコンピュータ読取り可能記録媒体。
【請求項２０】
１つまたは複数のレコードを含むデータファイルをロードするための方法であって、
第１のロードモードと、第２のロードモードと、第３のロードモードとを提供することと、
前記第１ロードモードで前記データファイルをロードしようと試みることであって、前記第１ロードモードでロードする間に前記データレコードに対して最小限の保全性チェックが実施されることと、
前記第１ロードモードで前記データファイルをロードしている間に、前記データレコードのうちの１つがロード不可能かどうか判断することと、
前記第１ロードモードで前記データレコードのうちの１つがロード不可能であると判断することに応えて前記第２ロードモードに切り換えることと、
前記第２ロードモードで前記データファイルをその最初からロードしようと試みることであって、前記第２ロードモードでは前記第１モードと比べて追加の保全性チェックが前記データレコードに対して実施され、ロード不可能ないずれのレコードのロードもがスキップされることと、
前記第２ロードモードで前記データファイルをロードしている間に、前記データレコードのうちの１つのロードがスキップされ得ないかどうか判断することと、
前記第２ロードモードでロードしている間に前記データレコードのうちの１つのロードがスキップされ得ないと判断することに応えて前記第３ロードモードに切り換えることであって、前記データファイル内に格納されたユーザデータだけがロードされることとを備えることを特徴とする方法。
【請求項２１】
レコードが予期せぬデータ値を含み、欠落したデータであり、無効の拡張可能マークアップ言語を含み、前記レコードをロードするときにアプリケーションプログラムのクラッシュを引き起こし、破損したデータであり、または前記レコードが欠落している場合、前記レコードはロード不可能であることを特徴とする請求項２０に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子データファイルの内容をロードするための方法およびコンピュータ読取り可能記録媒体に関する。
【背景技術】
【０００２】
今日の社会においてコンピュータは、多岐に渡る仕事を実施するために、また娯楽のために広く使用されている。たとえば、コンピュータは今日、ゲーム、通信、研究、および事実上際限ない様々な他の用途のために使用されている。ビジネスと個人の両方によって同様にコンピュータが使用される最も一般的な用途の１つは、電子および印刷文書の作成である。スプレッドシート、プレゼンテーション、ワード処理文書、図やデジタル画像などのグラフィック文書、コンピュータ支援の設計文書、および他の多くのタイプの電子文書を含めて、すべての種類の電子文書を作成するためのコンピュータアプリケーションプログラムが存在している。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
電子文書はしばしば、非常に重要な内容を含む。さらに、電子文書の内容は多くの場合において、失われると再作成するのが困難でありまたは不可能である。たとえば、文書を格納するデータファイルが破損されまたは破壊されると容易には再作成され得ない非常に複雑な法律、ビジネス、マーケティングおよび技術文書がしばしば作成される。文書の内容が容易に再作成される場合でも、ユーザがそのデータの小さい部分を失うことさえも非常に苛立たしいことがある。したがって、電子文書内に含まれるデータが、破壊および破損に対して保護されることは非常に重要である。
【０００４】
現代のコンピュータシステムは、データファイルの不注意の破損または損失に対して保護するためのエラーチェックおよび他の機構を含む。残念なことに、こうした機構が整っているとしても、電子文書が格納されたデータファイルが破損されることはかなり一般的である。破損は、データファイルが大容量記憶装置に保存されている間に生じることがあり、あるいは記憶装置またはメモリコントローラの欠陥の結果として生じ得る。データファイルは、ネットワーク伝送時に、または他の多くのタイプのイベントの発生によって破損されることもある。どんなデータ量の損失でもユーザにとっては苛立たしいことがあり、破損された文書を再作成するのに必要な時間および労力はしばしば非常に大きいので、できるだけ多くのデータが破損されたデータファイルから回復されることが重要である。
【０００５】
こうした考慮事項およびその他に関して、本発明の様々な実施形態は作られている。
【課題を解決するための手段】
【０００６】
本発明によれば、上記および他の問題は、電子データファイルの内容をロードするための方法およびコンピュータ読取り可能記録媒体によって解決される。
【０００７】
本発明の様々な実施形態を使用することによって、データファイルのロード時にファイルの破損された部分すなわちレコードが識別され、その部分を修復する試みが行われる。破損された部分が修復され得ない場合、その部分のロードはスキップされる。次いで、データファイルの破損されていない、修復された部分は、メモリ内にロードされる。データファイルの一部が修復されまたはスキップされ得ない場合、データファイル内に含まれるユーザデータだけをロードする試みが行われることもできる。このようにして、データファイル内に含まれるユーザデータは、データファイルの残りの部分に対して深刻な破損が生じた場合でもロードされ得る。
【０００８】
本発明の一態様によれば、１つまたは複数の部分を含むデータファイルをロードするための方法が提供される。この方法によれば、複数のロードモードが提供される。「通常」ロードモードでは、データファイルの各部分を通常のやり方でロードする試みが行われる。通常ロードモードは、ファイルが迅速にロードされ得るように、データファイルの各部分に対して最小限の保全性チェックを行うことを含む。通常モードの間にデータファイルの欠落しまたは破損した部分に遭遇する場合には、データファイルのその部分をロードしようと試みるために「セーフ」ロードモードと呼ばれる第２のモードが使用される。データファイルのある部分は、それをロードしようと試みるアプリケーションプログラム内のエラーまたはそのクラッシュをそれが引き起こす場合、その部分が予期せぬデータ値を含む場合、その部分が欠落しているデータである場合、その部分が無効のレコードまたは無効の拡張可能マークアップ言語（「ＸＭＬ」：ｅｘｔｅｎｓｉｂｌｅ  ｍａｒｋｕｐ  ｌａｎｇｕａｇｅ）を含んでいる場合およびその他の原因のために、破損しており、したがってロード不可能であると見なされ得る。
【０００９】
セーフロードモードでは、データファイルの各部分に対して広範な保全性チェックが実施される。セーフロードモードでは、データファイルの破損された部分を修復する試みが行われることもできる。次いで、修復され得るどの部分もがロードされる。セーフロードモードでデータファイルの欠落しまたは破損した、また修復不可能でもある部分に遭遇する場合、その修復不可能な部分のロードはスキップされる。修復不可能であり、またそのためのロードがスキップされ得ないデータファイルの部分に遭遇する場合には、データファイルのその部分をロードする試みのために、「回復」ロードモードと呼ばれる第３のロードモードが使用される。
【００１０】
回復ロードモードでは、ユーザデータを含むデータファイルの部分だけがロードされる。たとえば、ユーザデータは、ユーザによって入力されたテキストデータまたは数値データを含み得る。一例として、データファイルがスプレッドシートを含んでいる場合、回復ロードモードでは、スプレッドシートのセル内に含まれるデータだけをロードする試みが行われる。回復モードでは、データファイル内に含まれ得る他のタイプのデータ、たとえばピボットテーブル、リストオブジェクト、名前付けされた範囲、自動フィルタ、スタイル、フォーマッティング、およびアプリケーションまたはユーザ設定をロードする試みは行われない。
【００１１】
本発明の他の実施形態によれば、コンピュータ実行可能命令が格納されたコンピュータ読取り可能記録媒体も提供される。コンピュータ実行可能命令は、コンピュータによって実行されるときに、コンピュータに、１つまたは複数の部分を含むデータファイルをロードするための第１のロードモードを提供させる。第１ロードモードでは、データファイルの一部がロードされるときに、それに対して最小限の保全性チェックが実施される。コンピュータ実行可能命令は、第１ロードモードよりさらに広範な保全性チェックがデータファイルの部分に対して実施される、データファイルをロードするための第２のロードモードをもコンピュータに提供させる。第２ロードモードでは、ロード不可能な部分を修復する試みが行われることもできる。さらに、第２ロードモードでは、ロード不可能ないずれの部分のロードもスキップされる。
【００１２】
またコンピュータ実行可能命令は、コンピュータに第１ロードモードでのデータファイルのロードを開始させる。データファイルのある部分が第１ロードモードではロード不可能であると判断される場合、コンピュータは、第２ロードモードに切り換わり、このロードモードでデータファイルをロードしようと試みる。第２ロードモードで、修復され得るロード不可能な部分に遭遇する場合、そのロード不可能な部分は修復されロードされる。ロード不可能な部分が修復され得ない場合、ロード不可能な部分のロードはスキップされる。
【００１３】
本発明の一実施形態によれば、コンピュータ実行可能命令は、コンピュータに、ユーザデータを含むデータファイルの部分だけがロードされる第３のロードモードをも提供させる。第２ロードモードでデータファイルの一部がロード不可能であり、またそのロード不可能な部分が修復されまたはスキップされ得ないと判断される場合、第３ロードモードでデータファイルの内容をロードする試みが行われる。
【００１４】
本発明は、コンピュータプロセス、コンピューティングシステム、あるいはコンピュータプログラム製品やコンピュータ読取り可能記録媒体などの製品として実装され得る。コンピュータプログラム製品は、コンピュータシステムによって読取り可能であり、またコンピュータプロセスを実行するための命令のコンピュータプログラムを符号化するコンピュータ記憶可能記録媒体であり得る。コンピュータプログラム製品は、コンピューティングシステムによって読取り可能であり、またコンピュータプロセスを実行するための命令のコンピュータプログラムを符号化する搬送波上の伝播される信号でもあり得る。
【００１５】
本発明を特徴付けるこれらのおよび他の様々な特徴および利点は、以下の詳細な説明を読み、また関連の図面を精査することから明らかになる。
【発明を実施するための最良の形態】
【００１６】
同じ番号が同様の要素を表している図面を次に参照すると、本発明の様々な態様が示されている。具体的には、図１および対応する議論は、本発明の実施形態が実施され得る適切なコンピューティング環境についての簡潔で一般的な説明を提供するためのものである。本発明についてパーソナルコンピュータ上のオペレーティングシステム上で実行されるプログラムモジュールの一般的な文脈で述べるが、本発明は、他のタイプのコンピュータシステムおよびプログラムモジュールとの組合せでも実施され得ることが当業者には理解されよう。
【００１７】
一般にプログラムモジュールは、特定のタスクを実施し、または特定の抽象データ型を実装するルーチン、プログラム、コンポーネント、データ構造体および他のタイプの構造体を含む。さらに、本発明は、ハンドヘルド装置、マルチプロセッサシステム、マイクロプロセッサベースまたはプログラマブル家電、ミニコンピュータ、メインフレームコンピュータなどを含めて、他のコンピュータシステム構成で実施され得ることが当業者には理解されよう。本発明は、通信ネットワークを介してリンクされたリモート処理装置によってタスクが実施される分散コンピューティング環境内で実施されることもできる。分散コンピューティング環境内では、プログラムモジュールは、ローカルとリモートの両方のメモリ記憶装置内に置かれ得る。
【００１８】
次に図１を参照すると、本発明の様々な実施形態で使用されるコンピュータ２の例示的なコンピュータアーキテクチャが示されている。図１に示すコンピュータアーキテクチャは、中央処理装置（「ＣＰＵ」：ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）５、ランダムアクセスメモリ（「ＲＡＭ」：ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）９および読出し専用メモリ（「ＲＯＭ」：ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）１１を含むシステムメモリ７、ならびにメモリをＣＰＵ５に結合するシステムバス１２を含む従来のデスクトップまたはラップトップコンピュータを図示している。起動時などにコンピュータ内の要素間で情報を転送するのに役立つ基本ルーチンを含む基本入出力システムは、ＲＯＭ１１に格納される。コンピュータ２はさらに、オペレーティングシステム１６、アプリケーションプログラム、および他のプログラムモジュールを格納するための大容量記憶装置１４を含む。この大容量記憶装置について、以下でより詳細に述べる。
【００１９】
大容量記憶装置１４は、バス１２に接続された大容量ストレージコントローラ（図示せず）を介してＣＰＵ５に接続される。大容量記憶装置１４およびその関連のコンピュータ読取り可能記録媒体は、コンピュータ２のための不揮発性記憶域を提供する。本明細書に含まれるコンピュータ読取り記録媒体についての説明はハードディスクやＣＤ−ＲＯＭドライブなどの大容量記憶装置に言及しているが、コンピュータ読取り記録媒体は、コンピュータ２によってアクセスされ得る任意の使用可能な記録媒体であり得ることを当業者には理解されたい。
【００２０】
限定のためではなく、例を挙げると、コンピュータ読取り可能記録媒体は、コンピュータ記憶媒体および通信媒体を含み得る。コンピュータ記憶媒体は、コンピュータ読取り可能命令、データ構造体、プログラムモジュールまたは他のデータなどの情報を格納するための任意の方法または技術で実装された揮発性と不揮発性、取外し可能と取外し不可能の媒体を含む。コンピュータ記憶媒体には、それだけに限らないが、ＲＡＭ、ＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリまたは他のソリッドステートメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（「ＤＶＤ」：ｄｉｇｉｔａｌ  ｖｅｒｓａｔｉｌｅ  ｄｉｓｋ）または他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置または他の磁気記憶装置、あるいは所望の情報を格納するために使用されることができ、またコンピュータ２によってアクセスされ得る他の任意の媒体が含まれる。
【００２１】
本発明の様々な実施形態によれば、コンピュータ２は、インターネットなどのネットワーク１８を介してリモートコンピュータへの論理接続を使用して、ネットワーク化された環境で動作することができる。コンピュータ２は、バス１２に接続されたネットワークインターフェースユニット２０を介してネットワーク１８に接続され得る。ネットワークインターフェースユニット２０は、他のタイプのネットワークおよびリモートコンピュータシステムに接続するためにも使用され得ることを理解されたい。コンピュータ２は、（図１に示されていない）キーボード、マウス、電子スタイラスを含めて、複数の他の装置から入力を受信し処理するための入出力コントローラ２２をも含み得る。同様に、入出力コントローラ２２は、表示画面、プリンタまたは他のタイプの出力装置に出力を提供し得る。
【００２２】
上記で簡潔に述べたように、ワシントン州レッドモンドのＭＩＣＲＯＳＯＦＴ  ＣＯＲＰＯＲＡＴＩＯＮ社からのＷＩＮＤＯＷＳ（登録商標）ＸＰオペレーティングシステムなど、ネットワーク化されたパーソナルコンピュータの動作を制御するのに適したオペレーティングシステム１６を含めて、複数のプログラムモジュールおよびデータファイルがコンピュータ２の大容量記憶装置１４およびＲＡＭ９に格納され得る。大容量記憶装置１４およびＲＡＭ９は、１つまたは複数のプログラムモジュールをも格納し得る。具体的には、大容量記憶装置１４およびＲＡＭ９は、スプレッドシートアプリケーションプログラム１０を格納し得る。当業者には知られているように、スプレッドシートアプリケーションプログラム１０は、電子スプレッドシートを作成し編集するための機能を提供するように動作する。
【００２３】
本発明の一実施形態によれば、スプレッドシートアプリケーションプログラム１０は、ＭＩＣＲＯＳＯＦＴ  ＣＯＲＰＯＲＡＴＩＯＮ社からのＥＸＣＥＬスプレッドシートアプリケーションプログラムを含む。しかし、本発明の様々な態様を実施するために他の製造元からの他のスプレッドシートアプリケーションプログラムが使用され得ることを理解されたい。本明細書で述べる本発明の諸実施形態はスプレッドシートアプリケーションプログラムの文脈で提示されているが、本発明は、データファイルからデータをロードする他の任意のタイプのアプリケーションプログラムで使用され得ることも理解されたい。たとえば、本明細書で述べる本発明の諸実施形態は、文書処理アプリケーションプログラム、プレゼンテーションアプリケーションプログラム、描画またはコンピュータ支援設計アプリケーションプログラム、あるいはデータベースアプリケーションプログラム内で使用され得る。
【００２４】
スプレッドシート文書の作成および編集に関連して、スプレッドシートアプリケーションプログラム１０は、スプレッドシート文書を大容量記憶装置１４内のデータファイル２４に保存するための機能を提供する。データファイル２４は、スプレッドシートのセルの内容、アプリケーション設定、フォーマッティング情報、およびスプレッドシートアプリケーションプログラム１０によって提供される様々な特徴に対応する他のデータを含むユーザデータなど、スプレッドシート文書の様々な側面を表すデータを含む。データファイル２４の構造に関する追加の詳細は、図２に関して以下で提供される。
【００２５】
本発明の実施形態によれば、スプレッドシートアプリケーションプログラム１０は、データファイル２４を大容量記憶装置１４からコンピュータ２のランダムアクセスメモリ９にロードすることによってスプレッドシート文書の内容を復元するための機能を提供する。図２〜３Ｂに関して以下でより詳細に述べるように、データファイル２４をロードするための方法がスプレッドシートアプリケーションプログラム１０によって使用され、この方法は、データファイル２４内の破損の可能性を明らかにし、またデータファイル２４が破損されても、データファイル２４からロードされるデータの量を最大限にしようと試みる。
【００２６】
次に図２に移ると、データファイル２４の構造、およびスプレッドシートアプリケーションプログラム１０によって使用されるロード機構の動作に関する追加の詳細が提供されている。図２に示すように、データファイル２４は、複数の部分２６Ａ〜２６Ｎにさらに分割される。部分２６Ａ〜２６Ｎのそれぞれは、スプレッドシートアプリケーションプログラム１０によってサポートされる１つまたは複数の特徴に関連する情報を格納するために使用される。さらに、それぞれ異なっているが関連している特徴についての情報は、部分２６Ａ〜２６Ｎのうちの単一の部分に格納され得る。たとえば、図２に示すように、特徴Ａ〜Ｃについてのデータは、部分２６Ａに格納される。特徴Ｄについてのデータは、部分２６Ｂに格納される。特徴Ｅ〜Ｇについてのデータは、部分２６Ｃに格納されるなどである。ユーザデータは、部分２６Ａ〜２６Ｎのいずれかに格納され得る。
【００２７】
上記で簡潔に述べ、また図２に示したように、部分２６Ａ〜２６Ｎ内に含まれるデータが破損される可能性がある。破損は、データファイルが大容量記憶装置に保存されている間に生じることがあり、また記憶装置またはコントローラハードウェアの欠陥の結果として生じ得る。データファイルは、ネットワーク伝送時に、または他の多くのタイプのイベントの発生によって破損されることもある。特定の部分のデータが、欠落していると判断されることもある。データファイルの一部は、それをロードしようとするアプリケーションプログラム内のエラーまたはそのクラッシュをその部分が引き起こす場合、その部分が予期せぬデータ値を含む場合、その部分が欠落しているデータである場合、その部分が無効のレコードまたは無効の拡張可能マークアップ言語（「ＸＭＬ」）を含んでいる場合およびその他の原因のために、破損しており、したがってロード不可能と見なされ得る。図２に示す例示的なデータファイル２４では、部分２６Ｂおよび２６Ｄは破損されている。
【００２８】
本明細書で述べるように、データファイル２４の一部は、部分２６Ｂおよび２６Ｄの破損に拘らずスプレッドシートアプリケーションプログラム１０によってロード可能である。図２は、例示的なデータファイル２４を使用したこのロードプロセスをも示している。具体的には、スプレッドシートアプリケーションプログラム１０は、通常のロードモードでデータファイル２４をロードし始める。通常ロードモードでは、データファイルの部分２６Ａ〜２６Ｎに対して最小限の保全性チェックが実施される。通常モードでロードしている間にデータファイル２４の破損部分に遭遇する場合、スプレッドシートアプリケーションプログラム１０は、セーフロードモードに切り換わり、データファイル２４を最初からロードし始める。たとえば、図２に示すように、通常ロードモード時に破損部分２６Ｂに遭遇する場合、ロードモードはセーフロードモードに変更され、ロードは、データファイル２４の最初で再開する。
【００２９】
セーフロードモードでは、通常ロードモードと比べて追加の保全性チェックが、データファイル２４の部分２６Ａ〜２６Ｎに対して実施される。さらに、セーフモードでロードしている間に破損部分に遭遇する場合、破損部分を修復する試みが行われる。破損部分が修復され得る場合、その部分はロードされる。破損部分が修復され得ない場合、破損部分のロードはスキップされる。たとえば、図２に示すように、部分２６Ｂは破損されており、修復され得ない。したがって、部分２６Ｂのロードはスキップされ、部分２６Ｃはロードされる。
【００３０】
部分２６Ｃがロードされた後に、部分２６Ｄをロードする試みが行われる。しかし、図２に示すように、部分２６Ｄは破損している、したがって、部分２６Ｄを修復する試みが行われる。部分２６Ｄがロードされ得ない場合、部分２６Ｄのロードはスキップされ、このプロセスは、残りの部分がロードされ、またはスキップされるまで継続する。本発明の一実施形態によれば、データファイル２４のロードは、ロード不可能な部分に遭遇し、またそれが修復不可能であると判断された後に、データファイル２４の最初に戻り得る。これは、図２に示されている。このようにデータファイル２４の最初に戻ることによって、関連する部分が破損していないかもしれないとしてもスキップされるロード不可能な部分に関するデータファイル２４の他の部分のロードを可能にする。
【００３１】
データファイル２４のロード時にロード不可能で、修復不可能な部分に遭遇する場合、スプレッドシートアプリケーションプログラム１０は、回復ロードモードと称される第３のロードモードに切り換わり得る。回復ロードモードでは、データファイルからユーザデータだけをロードする試みが行われる。具体的には、テキスト文書に関しては、文書のテキストだけをロードする試みが行われる。スプレッドシート文書に関しては、ユーザによって入力されたデータ、数式、および数式によって生成されたデータを含めて、スプレッドシートセルの内容をロードする試みが行われる。このように、データファイルの一部が破損されていても、ユーザデータの一部またはすべてが回復されロードされ得る。このプロセスは、図２で破線によって示されており、部分２６Ｄがロード不可能で、修復不可能であり、またそれ無しにはファイルが全くロードされるべきでないと判断された場合に実施される。このプロセスに関する追加の詳細は、図３Ａ〜３Ｂに関して以下で提供される。
【００３２】
次に図３Ａ〜３Ｂを参照すると、データファイル２４の内容をロードするためにスプレッドシートアプリケーションプログラム１０によって実施されるプロセスを図示するルーチン３００が示されている。本明細書で提示するルーチンについての議論を読むときに、本発明の様々な実施形態の論理操作は、（１）コンピューティングシステム上で実行されるコンピュータ実施行為またはプログラムモジュールのシーケンスとして、（２）コンピューティングシステム内の相互接続されたマシン論理回路または回路モジュールとして実装されることを理解されたい。この実装は、本発明を実施するコンピューティングシステムのパフォーマンス要件に依存する選択の問題である。したがって、図３Ａ〜３Ｂに示されており、また本明細書で述べる本発明の諸実施形態を構成している論理操作は、操作、構造装置、行為またはモジュールと様々に称される。こうした操作、構造装置、行為およびモジュールは、本明細書で示す特許請求の範囲中で列挙される本発明の精神および範囲から逸脱せずに、ソフトウェア、ファームウェア、特定目的のデジタル論理、およびその任意の組合せで実装され得ることが当業者には理解されよう。
【００３３】
ルーチン３００は、その操作において複数の変数を使用することを理解されたい。具体的には、「モード」変数は、現在のロードモードを追跡する。この変数は、「セーフ」、「通常」または「回復」に設定され得る。「スキップカウンタ」変数は、ロード時にスキップされるべき各部分を個々に識別するために使用されるデータ構造体である。「スキップレコード数」変数は、現在のロードの試みでスキップされるべきセクションの現在の数を表す。「現在レコード」変数は、処理されているデータファイル内の現在のセクションを識別する。同じタスクを実施するためにより多くのまたはより少ない変数が使用され得ることを理解されたい。さらに、図３に示すルーチン３００は本発明の１つの可能な実装を表しているにすぎず、他の多くの実装が当業者には明らかであることを理解されたい。
【００３４】
ルーチン３００は、操作３０２、３０４または３０６で開始する。具体的には、本発明の実施形態によれば、データファイルが通常にロードされるか（操作３０４）、セーフロードモードでロードされるか（操作３０２）、それとも回復ロードモードでロードされるか（操作３０６）をユーザが選択することを可能にするユーザインターフェースが提供され得る。このユーザインターフェースは、ユーザがファイルのロードを要求するときにユーザに提示され得る。ユーザインターフェース内のユーザの選択に基づいて、ルーチン３００は、操作３０２、３０４または３０６でその操作を開始する。
【００３５】
ロードがセーフロードモードで開始する場合、ルーチン３００は操作３０２で開始し、モード変数が「セーフ」に設定される。次いで、ルーチン３００は、操作３０８に続く。ロードが通常ロードモードで開始する場合、ルーチン３００は操作３０４で開始し、モード変数が「通常」に設定される。次いで、ルーチン３００は、操作３０４から操作３０８に続く。ロードが回復ロードモードで開始する場合、ルーチンは操作３０６で開始し、モード変数が「回復」に設定される。以下で述べるように、ルーチン３００は、操作３０６から操作３４８に続く。
【００３６】
操作３０８で、スキップカウンタ変数は、レコードがスキップされるべきでないことを示すように初期化される。次いで、ルーチン３００は操作３１０に続き、現在のレコードがデータファイル内の第１レコードに設定される。スキップレコード数の変数も同様に初期化される。第１のパスでは、これは、スキップするレコード数をゼロに等しく設定する。ルーチン３００は、操作３１０から操作３１２に続く。
【００３７】
操作３１２で、現在のモードで現在のレコードをロードする試みが行われる。たとえば、モード変数が「通常」である場合、最小限の保全性チェックが、ロードされるセクションに対して実施される。モード変数が「セーフ」である場合、追加の保全性チェックが実施される。ルーチン３００は操作３１２から操作３１４に続き、現在のレコードがロード不可能（すなわち破損しまたは欠落している）かどうか判断される。現在のレコードがロード可能である場合、ルーチン３００は操作３１６に分岐し、ロードされるさらなるレコードが残っているかどうか判断される。さらなるレコードが存在する場合、ルーチン３００は操作３１６から操作３１８に分岐し、現在レコードの変数が、データファイル内の次のレコードに設定される。次いで、ルーチン３００は操作３１２に続き、次のレコードがロードされる。操作３１６でロードされる追加のレコードが残っていないと判断される場合、ルーチン３００は、操作３２０に分岐し、終了する。このようにして、破損したまたは欠落したレコードが存在しない場合、すべてのレコードが現在のモードでロードされる。
【００３８】
本発明の実施形態では、一部の保全性チェックは、レコードレベルではなく特徴レベルで実施され得ることを理解されたい。こうした特徴レベルの保全性チェックを実施するために、特定の特徴についてのすべてのレコードがロードされる。次いで、その特徴についてのデータが有効かどうか判断される。そのデータが無効である場合、スキップデータ構造体は、スキップされるその特徴についてのレコードで更新され、ファイルが再ロードされる。ファイルレベルの整合性チェックもまた、同様なやり方で行われ得る。
【００３９】
操作３１４で、現在のレコードがロード不可能であると判断される場合、ルーチン３００は操作３２２に続き、現在のモードが通常モードであるかどうか判断される。現在のモードが通常モードである場合、ルーチン３００は操作３２４に分岐し、スキップカウンタ変数内でレコードにフラグが立てられ、スキップされる必要があり得るデータファイルの部分が識別されたことを示す。次いで、ルーチン３００は操作３２６に続き、モード変数が「セーフ」に設定される。このようにして、ロードモードは、データファイルのロード不可能な部分に遭遇すると、通常からセーフに切り換えられる。次いで、ルーチン３００は操作３１０に戻り、データファイルの処理が最初に戻る。
【００４０】
操作３２２で現在のロードモードが通常モードでないと判断されると、ルーチン３００は操作３２８に続き、現在のロードモードがセーフモードかどうか判断される。ルーチン３００のこの部分では通常またはセーフロードモードだけが可能な値であるべきなので、ルーチンは操作３３０に分岐し、現在のロードモードがセーフモードでない場合にはエラーが返される。次いで、ルーチン３００は、操作３３０から操作３２０に続き、終了する。しかし、操作３２８で現在のモードがセーフモードであると判断される場合は、ルーチン３００は、操作３３２に続く。
【００４１】
操作３３２で、現在のレコードを修復する試みが行われる。操作３３４で、現在のレコードが修復可能であったかどうか判断される。レコードが修復可能であった場合、ルーチン３００は操作３３６に分岐し、現在のレコードがロードされる。また操作３３６で、スキップカウンタ変数は、現在のレコードが修復可能であったのでその現在のレコードのロードがスキップされるべきでないことを示すように更新される。ルーチン３００は操作３３６から動作３１６に分岐し、データファイルのレコードの残りが上記と同様に処理される。
【００４２】
操作３３４で、現在のレコードが修復され得ないと判断されると、ルーチン３００は、操作３３８に分岐する。操作３３８で、スキップするレコードの数がゼロに等しいかどうか判断される。これは、ロードが通常モードで開始され、また第１の破損レコードに遭遇し、そのレコードが修復不可能である場合である。この場合、ルーチン３００は操作３４０に分岐し、スキップカウンタ変数が、そのレコードがスキップされるべきことを示すように更新される。次いで、ルーチン３００は操作３１０に戻り、上記と同様にデータファイルの処理が最初に戻る。
【００４３】
操作３３８でスキップレコード数がゼロでないと判断される場合、ルーチン３００は操作３４２に続き、現在のレコードのロードをスキップする試みが行われる。操作３４４で、現在のレコードのロードがスキップされ得るかどうか判断される。現在レコードのロードがスキップされ得る場合、ルーチン３００は操作３４６に分岐し、スキップレコード変数内でレコードにフラグが立てられる。次いで、ルーチンは、上述の操作３１６に続く。
【００４４】
操作３４４で現在のレコードがスキップされ得ないと判断される場合、操作３００は操作３０６に続き、モード変数が「回復」に設定される。次いで、ルーチン３００は操作３４８に続き、回復モードでデータファイルをロードする試みが行われる。上述したように、回復モードでは、ユーザデータだけがロードされる。さらに、ユーザデータも破損している場合、できるだけ多くのユーザデータをロードする試みが行われる。次いでルーチン３００は操作３２０に続き、終了する。
【００４５】
上記内容に基づいて、本発明の様々な実施形態は、データファイルの内容をロードするための方法、システム、装置およびコンピュータ読取り可能媒体を含むことを理解されたい。上記明細、実施例およびデータは、本発明の構成の製造および使用についての完全な説明を提供している。本発明の精神および範囲から逸脱せずに本発明の多くの実施形態が作られ得るので、本発明は、添付の特許請求の範囲に属する。
【図面の簡単な説明】
【００４６】
【図１】本発明の様々な実施形態で使用され、またそれによって提供されるコンピュータシステムを示すコンピュータシステムアーキテクチャ図である。
【図２】本発明の諸実施形態によって提供されるデータファイルの側面、および様々なロードモードを示すブロック図である。
【図３Ａ】本発明の様々な実施形態による、データファイルをロードするための例示的なプロセスを示すフローチャートである。
【図３Ｂ】本発明の様々な実施形態による、データファイルをロードするための例示的なプロセスを示すフローチャートである。
【符号の説明】
【００４７】
５  中央処理装置
７  システムメモリ
９  ランダムアクセスメモリ
１０  スプレッドシートアプリケーションプログラム
１１  読出し専用メモリ
１４  大容量記憶装置
１６  オペレーティングシステム
１８  ネットワーク
２０  ネットワークインターフェースユニット
２２  入出力コントローラ
２４  データファイル
【図１】
2006178954.tif 000003
【図２】
2006178954.tif 000004
【図３Ａ】
2006178954.tif 000005
【図３Ｂ】
2006178954.tif 000006