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