(57)【特許請求の範囲】
【請求項１】
各行の左端が揃えられ、かつ、各行が所定の桁数内となるようにテキストを編集するテキスト編集システムにおいて、
行末桁位置を記憶する行末桁位置記憶手段と、
テキスト内の改行コードを検出する改行コード検出手段と、
テキストの先頭から該改行コード検出手段によって検出された最初の改行コードの直前までの文字コード数、または、該改行コード検出手段によって検出された改行コード間の文字コード数を計数する計数手段と、
テキストに対する文字の挿入により、前記テキストの先頭から該改行コード検出手段によって検出された最初の改行コードの直前までの文字コード数、または、前記改行コード間の文字コード数が前記行末桁位置の値よりｎだけ大きくなるとき、前記最新の改行コードの位置をｎ桁前に移動して改行コードの位置を修正し、該改行コードの位置修正処理の結果、ある行の桁数が前記行末桁位置に一致するようになった時、その行の直後に新たな改行コードを挿入し、前記新たに挿入した改行コードの直前又は直後に目印として強制改行マークを挿入する位置修正手段と、
を有することを特徴とするテキスト編集システム。
【請求項２】
前記改行コード位置修正手段による改行コードの修正処理の途中で、新たな改行コードの修正処理が必要になる場合、現在の改行コードの修正処理を中断し、その後新たな改行コードの修正処理と該中断した改行コードの修正処理を一括して行うことを特徴とする請求項１記載のテキスト編集システム。
【請求項３】
前記修正処理を中断した箇所には未実施マークを付加することを特徴とする請求項２記載のテキスト編集システム。
【請求項４】
前記行末桁位置記憶手段に記憶する行末桁位置は、テキストの最大桁位置であることを特徴とする請求項１記載のテキスト編集システム。
【請求項５】
前記行末桁位置記憶手段に記憶する行末桁位置は、テキストの最多桁位置であることを特徴とする請求項１記載のテキスト編集システム。
【請求項６】
前記行末桁位置記憶手段に記憶する行末桁位置は、テキストの先頭行の桁位置であることを特徴とする請求項１記載のテキスト編集システム。
【請求項７】
テキストの先頭行から検索し、連続した複数行が同じ桁位置である時、該桁位置を前記行末桁位置記憶手段に記憶する行末桁位置とすることを特徴とする請求項１記載のテキスト編集システム。
【請求項８】
前記行末桁位置記憶手段に記憶する行末桁位置は、文字入力された行の直前の行の桁位置であることを特徴とする請求項１記載のテキスト編集システム。
【請求項９】
前記改行コード位置修正手段は、特定トリガーによって一括処理することを特徴とする請求項１記載のテキスト編集システム。
【請求項１０】
前記改行コード位置修正手段は、禁則文字がある行の行頭にくる場合、該禁則文字をその行の前行の最後尾に移動することを特徴とする請求項１記載のテキスト編集システム。
【請求項１１】
行の先頭に、１または複数の所定数の空白コードが固定的に配置されるテキストを編集するテキスト編集システムにおいて、
画面桁数を記憶する画面桁数記憶手段と、
テキスト内の空白コードを検出する空白コード検出手段と、
テキストの先頭から該空白コード検出手段によって検出された最初の空白コードの直前までの文字コード数、または、該空白コード検出手段によって検出された空白コード間の文字コード数を計数する文字コード数計数手段と、
該文字コード数計数手段によって計数された文字コード数が前記画面桁数より大きいとき、前記空白コード検出手段によって検出された空白コードの位置と該空白コードの前に存在する文字コードの位置を入れ換えることにより、前記行の先頭に前記所定数の空白コードが配置されるようにする空白コード位置修正手段と、
を有することを特徴とするテキスト編集システム。
【請求項１２】
前記空白コード位置修正手段は、前記空白コードと文字コードの位置修正処理の結果、新たな行に文字コードが移動する場合、該新たな行の行頭に該文字コードの前に配置される前記所定数の空白コードを生成することを特徴とする請求項１１記載のテキスト編集システム。
【請求項１３】
行の先頭に、１または複数の所定数の空白コードが固定的に配置されるテキストを編集するテキスト編集システムにおいて、
画面桁数を記憶する画面桁数記憶手段と、
テキスト内の空白コードを検出する空白コード検出手段と、
テキストの先頭から該空白コード検出手段によって検出された最初の空白コードの直前までの文字コード数、または、該空白コード検出手段によって検出された空白コード間の文字コード数を計数する文字コード数計数手段と、
該文字コード数計数手段によって計数されたコード数が前記画面桁数より小さいとき、前記空白コード検出手段によって検出された空白コードの位置と、該空白コードの後に存在する文字コードの位置を入れ換えることにより、前記行の先頭に前記所定数の空白コードが配置されるようにする空白コード位置修正手段と、
を有することを特徴とするテキスト編集システム。
【請求項１４】
前記空白コード位置修正手段は、修正処理の結果、空白コードのみからなる行が生じた時、該空白コードを削除することを特徴とする請求項１３記載のテキスト編集システム。
【請求項１５】
前記空白コード位置修正手段は、特定トリガーによって一括処理することを特徴とする請求項１１、又は１３記載のテキスト編集システム。
【請求項１６】
移動又は複写の対象として、行頭空白を含む文字列が指定された場合、該空白のコードを削除して記憶し、該文字列を展開する際にはフォームに合わせて処理することを特徴とする請求項１、１１、又は１３記載のテキスト編集システム。
【請求項１７】
各行の左端が揃えられ、かつ、各行が所定の桁数内となるようにテキストを編集するテキスト編集方法であって、
行末桁位置を記憶する行末桁位置記憶処理と、
テキスト内の改行コードを検出する改行コード検出処理と、
テキストの先頭から該改行コード検出処理によって検出された最初の改行コードの直前までの文字コード数、または、該改行コード検出手段によって検出された改行コード間の文字コード数を計数する計数処理と、
テキストに対する文字の挿入により、前記テキストの先頭から該改行コード検出処理によって検出された最初の改行コードの直前までの文字コード数、または、前記改行コード間の文字コード数が前記行末桁位置の値よりｎだけ大きくなるとき、前記最新の改行コードの位置をｎ桁前に移動して改行コードの位置を修正し、該改行コードの位置修正処理の結果、ある行の桁数が前記行末桁位置に一致するようになった時、その行の直後に新たな改行コードを挿入し、前記新たに挿入した改行コードの直前又は直後に目印として強制改行マークを挿入する改行コード位置修正処理と、
を行うことを特徴とするテキスト編集方法。
【請求項１８】
行の先頭に、１または複数の所定数の空白コードが固定的に配置されるテキストを編集するテキスト編集方法であって、
画面桁数を記憶する画面桁数記憶処理と、
テキスト内の空白コードを検出する空白コード検出処理と、
テキストの先頭から該空白コード検出処理によって検出された最初の空白コードの直前までの文字コード数、または、該空白コード検出処理によって検出された空白コード間の文字コード数を計数する文字コード数計数処理と、
該文字コード数計数処理によって計数された文字コード数が前記画面桁数より大きいとき、前記空白コード検出処理によって検出された空白コードの位置と該空白コードの前に存在する文字コードの位置を入れ換えることにより、前記行の先頭に前記所定数の空白コードが配置されるようにする空白コード位置修正処理と、
を行うことを特徴とするテキスト編集方法。
【請求項１９】
行の先頭に、１または複数の所定数の空白コードが固定的に配置されるテキストを編集するテキスト編集方法であって、
画面桁数を記憶する画面桁数記憶処理と、
テキスト内の空白コードを検出する空白コード検出処理と、
テキストの先頭から該空白コード検出処理によって検出された最初の空白コードの直前までの文字コード数、または、該空白コード検出処理によって検出された空白コード間の文字コード数を計数する文字コード数計数処理と、
該文字コード数計数処理によって計数されたコード数が前記画面桁数より小さいとき、
前記空白コード検出処理によって検出された空白コードの位置と、該空白コードの後に存在する文字コードの位置を入れ換えることにより、前記行の先頭に前記所定数の空白コードが配置されるようにする空白コード位置修正処理と、
を行うことを特徴とするテキスト編集方法。
【請求項２０】
行末桁位置を記憶する行末桁位置記憶機能と、
テキスト内の改行コードを検出する改行コード検出機能と、
テキストの先頭から該改行コード検出機能によって検出された最初の改行コードの直前までの文字コード数、または、該改行コード検出機能によって検出された改行コード間の文字コード数を計数する計数機能と、
テキストに対する文字の挿入により、前記テキストの先頭から該改行コード検出機能によって検出された最初の改行コードの直前までの文字コード数、または、前記改行コード間の文字コード数が前記行末桁位置の値よりｎだけ大きくなるとき、前記最新の改行コードの位置をｎ桁前に移動して改行コードの位置を修正し、該改行コードの位置修正処理の結果、ある行の桁数が前記行末桁位置に一致するようになった時、その行の直後に新たな改行コードを挿入し、前記新たに挿入した改行コードの直前又は直後に目印として強制改行マークを挿入する改行コード位置修正機能と、
から成るテキスト編集方法をコンピュータに実行させるプログラムを格納した前記コンピュータが読み取り可能な記録媒体。
【請求項２１】
画面桁数を記憶する画面桁数記憶機能と、
テキスト内の空白コードを検出する空白コード検出機能と、
テキストの先頭から該空白コード検出機能によって検出された最初の空白コードの直前までの文字コード数、または、該空白コード検出機能によって検出された空白コード間の文字コード数を計数する文字コード数計数機能と、
該文字コード数計数機能によって計数された文字コード数が前記画面桁数より大きいとき、前記空白コード検出機能によって検出された空白コードの位置と該空白コードの前に存在する文字コードの位置を入れ換えることにより、前記行の先頭に前記所定数の空白コードが配置されるようにする空白コード位置修正機能と、
から成るテキスト編集方法をコンピュータに実行させるプログラムを格納した前記コンピュータが読み取り可能な記録媒体。
【請求項２２】
画面桁数を記憶する画面桁数記憶機能と、
テキスト内の空白コードを検出する空白コード検出機能と、
テキストの先頭から該空白コード検出機能によって検出された最初の空白コードの直前までの文字コード数、または、該空白コード検出機能によって検出された空白コード間の文字コード数を計数する文字コード数計数機能と、
該文字コード数計数機能によって計数されたコード数が前記画面桁数より小さいとき、前記空白コード検出機能によって検出された空白コードの位置と、該空白コードの後に存在する文字コードの位置を入れ換えることにより、前記行の先頭に前記所定数の空白コードが配置されるようにする空白コード位置修正機能と、
から成るテキスト編集方法をコンピュータに実行させるプログラムを格納した前記コンピュータが読み取り可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、行末折り返し機能やインデント機能を有するテキスト編集システムに関する。
【０００２】
【従来の技術】
今日、文書作成ツールとしてワードプロセッサや、ワープロソフトを組み込んだパーソナルコンピュータ等が広く使用されている。これらのツールにおいては、文書の作成前に書式に関する設定処理を行い、また文書の作成中にテキスト編集処理を行う。例えば、文書の作成前、文書の行の左右のマージンを設定し、また１ラインの文字数や１頁の行数、使用するフォントの大きさなどを設定する。また、文書の作成中に文字の挿入や削除が行われると、その都度編集処理を行い文書ファイルのデータを書き換えている。
【０００３】
ここで、ワードプロセッサなどのような従来のテキスト編集システムにおいて、行の左右のマージンを実現する為、マージン用の特別なコードを使うか、又は文字コードとは別に行制御用の特別な情報を用いていた。マージン用の特別なコードとは、例えばワードプロセッサやコンピュータの機種毎に異なる特別なコードであり、このコードの挿入によって行末折り返し位置を設定していた。また、行制御用の特別な情報とは、文書ファイルとは別に設けられる文書フォーマット用のファイルに格納される情報であり、このフォーマット用ファイルには、例えば文字の位置や文書のレイアウトに関連する情報、更には行末折り返し等の情報が格納され、これらの情報を参照することにより文書作成がなされていた。
【０００４】
したがって、ワードプロセッサは、特別なコード等に基づき文書編集を行うため、文書の編集が行われて、次行へ文字送りまたは次行から文字を取得する必要がある場合に、文書内の行の桁数や行の先頭部の空白数を計数し、当該計数結果に基づいた編集は行っていなかった。
【０００５】
また、公開特許公報（特開平１０−１６２００４号）には、文字列を表示するウインドウ画面の矩形領域がサイズ変更されたとき、文字列表示の字下げ効果を保ったまま、文字列を整列表示する文字列表示装置が提案されている。
【０００６】
【発明が解決しようとする課題】
上記従来のテキスト編集システムにおいては以下の問題がある。
先ず、マージン用の特別なコード、又は行制御用の特別な情報を使用するため、そのような特別なコードや特別な情報を使用して作成された文書は、機種依存性が高いため、異機種のテキスト編集システムで利用することができない。したがって、文書の互換性に乏しく、極めて汎用性の低い文書しか作成できなかった。  また、文書ファイルとは別にフォーマット設定用のファイルを用意する場合、ファイルが多くなり、記憶容量が大きくなり記憶装置のメモリ容量を圧迫する要因となる。
【０００７】
さらに、上記公開特許公報の例の場合、ウインドウ画面の大きさを変更した際に、空白維持処理を行うものであるが、文字の挿入または削除の際に所定の空白維持処理を行うものではない。
【０００８】
本発明は上記課題の解決を図り、本発明のテキスト編集システムによって作成したテキストは一般のビュワーやエディタで扱うことができ、汎用性のあるテキストを作成でき、かつポータビリティ（移植性）に優れたテキスト編集システムを提供するものである。
【０００９】
【課題を解決するための手段】
上記課題は本発明の第１の態様によれば、各行の左端が揃えられ、かつ、各行が所定の桁数内となるようにテキストを編集するテキスト編集システムにおいて、行末桁位置を記憶する行末桁位置記憶手段と、テキスト内の改行コードを検出する改行コード検出手段と、テキストの先頭から該改行コード検出手段によって検出された最初の改行コードの直前までの文字コード数、または、該改行コード検出手段によって検出された改行コード間の文字コード数を計数する計数手段と、該文字コード数計数手段によって計数された文字コード数と前記行末桁位置記憶手段に記憶された行末桁位置が一致しないとき、前記改行コード検出手段によって検出された最新の改行コードの位置を前記行末桁位置の直後に修正する改行コード位置修正手段とを有するテキスト編集システムを提供することで達成できる。
【００１０】
ここで、行末桁位置記憶手段には、行の行末桁位置を示す情報が記憶されており、例えば行末桁位置として予め設定した値を使用する。また、行末桁位置としてテキスト（文書）における最大桁位置を使用し、又はテキストで最も頻度の多い桁位置を使用し、又はテキストの先頭行の桁位置を使用し、又はテキスト内において連続した複数行が同じ桁位置がある場合に該桁位置を使用する構成としてもよい。また、文字入力された行の直前の行の桁位置を行末桁位置として構成してもよい。
【００１１】
また、改行コード検出手段は、テキスト内に含まれるテキストに使用される汎用性の高いコードである改行コードを検出する手段である。
改行コード位置修正手段は、テキストのある行に対する文字の挿入または削除により、その行の桁数が変化したとき、改行コードの位置を修正するものである。例えば、テキストのある行に対して、Ｎ文字が挿入された場合、その行の桁数はＮ桁増加する。また、例えば、テキストのある行においてＮ文字が削除されたとき、その行の桁数はＮ桁減少する（この場合、該ある行の元の桁数をＭとし、Ｍ＞Ｎとする）。このような場合、改行コード位置修正手段は、その行以降の最終行を除く全ての行がＮ桁となるように、改行コードの位置を修正する。この場合、該最終行Ｎ桁以内となる。
【００１２】
また、本発明の第１の態様は、文書内の桁数を計数する計数手段と、文書内のある行に対して、文字を挿入または削除する編集が行われた場合、当該行の桁数を維持したまま、当該行において、当該挿入または削除する文字数の分、次の行へ文字送りまたは次の行から文字を取得して、行の編集を行う編集手段とから構成することもできる。この場合、計数手段は、後述する第１の実施形態における計数手段に対応し、また、この編集手段は、第１実施形態における改行コード位置修正手段に相当する。なお、この場合の「ある行に対して、文字を挿入または削除する編集が行われた場合」には、ある行に対して、直接ユーザが編集を行う場合のほか、ある行を直接編集した結果、他の行について編集が行われる場合も含まれる。
【００１３】
以上の構成により、本発明の一態様のテキスト編集システムによれば、改行コードを利用しながら、テキスト各行の左端と右端が揃うように、テキストを編集することができる。
【００１４】
一方、上記課題は本発明の第２の態様によれば、行の先頭に、１または複数の所定数の空白コードが固定的に配置されるテキストを編集するテキスト編集システムにおいて、画面桁数を記憶する画面桁数記憶手段と、テキスト内の空白コードを検出する空白コード検出手段と、テキストの先頭から該空白コード検出手段によって検出された最初の空白コードの直前までの文字コード数、または、該空白コード検出手段によって検出された空白コード間の文字コード数を計数する文字コード数計数手段と、該文字コード数計数手段によって計数された文字コード数が前記画面桁数より大きいとき、前記空白コード検出手段によって検出された空白コードの位置と該空白コードの前に存在する文字コードの位置を入れ換えることにより、前記行の先頭に前記所定数の空白コードが配置されるようにする空白コード位置修正手段とを有するテキスト編集システムを提供することで達成できる。
【００１５】
また、本発明の第２の態様は、文書内のある行に対して、文字を挿入または削除する編集が行われた場合、次行の桁数および先頭の空白部の空白数を計数する計数手段と、当該次行の桁数および先頭の空白数を維持したまま、前記ある行において、当該挿入または削除する文字数の分、当該次行へ文字送りまたは当該次行から文字を取得して、当該ある行の編集を行う編集手段とから構成することもできる。この場合、計数手段は、後述する第２の実施形態における文字コード数計数手段に対応し、また、この編集手段は、第２実施形態における空白コード位置修正手段に対応する。なお、この場合の「ある行に対して、文字を挿入または削除する編集が行われた場合」には、ある行に対して、直接ユーザが編集を行う場合のほか、ある行を直接編集した結果、他の行について編集が行われる場合も含まれる。
【００１６】
本発明の第２の態様は、インデント機能に係わるものであり、例えば、第１行目に対して、第２行目以降を、字下げする場合において、ある行に文字の挿入または削除があった場合、画面桁数、空白コード検出手段の検出結果及び計数手段の計数結果を基に、空白コード位置修正手段の位置が変更された空白コードと当該文字コードとの位置を交換することにより、元のテキストと同様な字下げがなされるように、テキストを編集するものである。この場合、行頭の空白コード部分をインデントとみなして処理するため、特殊なコードや字下げのための情報が格納されたファイルは不要であり、画面桁数だけ設定するだけで、インデント機能を実現できる。
【００１７】
【発明の実施の形態】
以下、本発明の実施の形態を図面を参照しながら説明する。
＜第１実施形態＞
図１は本実施形態のテキスト編集システムの構成図である。
【００１８】
同図において、１は行末桁位置の情報を記憶する行末桁位置記憶部であり、例えば予め設定した値が登録される。また、例えばファイル４に書き込まれた文書（テキスト）の最大桁位置の情報を記憶してもよく、又テキスト（文書）内で最も多い桁位置や、テキスト（文書）の先頭行の桁位置、又はテキスト（文書）内の連続した複数行が同じ桁位置である場合における当該桁位置などの情報を登録してもよい。尚、ファイル４に記憶される文書各行の最大桁位置情報や、文書の各頁の先頭行の桁位置、又は文書内の連続した複数行が同じ桁位置である場合の当該桁位置情報は、例えばファイル４に文書（テキスト）を書き込む際得られる情報である。
【００１９】
また、同図において、２は改行コード検出部であり、ファイル４に記憶された文書（テキスト）内の改行コードの位置を検出する。尚、この改行コードは汎用的に使用されている。
【００２０】
さらに、同図において、３は改行コード位置修正部であり、挿入処理や削除処理によって上記改行コードの位置情報と行末桁位置情報が不一致となるとき、上記改行コードの位置を上記行末桁位置に修正し、同時に当該行の文字コードを次行に移動し、又は次行から当該行に文字コードを移動する。
【００２１】
図２は本実施形態のテキスト編集システムの処理（以下、テキスト編集処理と記す）をパーソナルコンピュータ等のコンピュータに実行させるシステムの一構成を示す図である。同システムはＣＰＵ５、外部記憶装置５ａ、表示制御部５ｂ、ディスプレイ５ｃ、入力装置５ｄ、ＲＯＭ６、及びＲＡＭ７等で構成され、ＲＯＭ６内には上述の図１に示す改行コード検出部２、改行コード位置修正部３の機能をソフトウエア処理により実現するプログラムが記憶されている。
【００２２】
外部記憶装置５ａ、表示制御部５ｂ、ＲＯＭ６、ＲＡＭ７は、バス５ｅを介してＣＰＵ５と接続され、入力装置５ｄは不図示の入力制御部及びバス５ｅを介してＣＰＵ５と接続されている。外部記憶装置５ａには、上記ファイル４が格納されている。また、ディスプレイ５ｃは、表示制御部５ｂを介してＣＰＵ５と接続されている。また、入力装置５ｄは、ユーザーがテキスト作成やテキストの編集処理を行うための装置であり、キーボードやマウス等からなる。
【００２３】
ＣＰＵ５はＲＯＭ６に記憶されたプログラムに従って本例のテキスト編集処理を行い、本例の行末折り返し処理を行う。この際、ＲＡＭ７はテキストバッファやワークエリア等として使用され、ディスプレイ５ｃにはテキスト編集処理の際の文書が表示される。
【００２４】
ＣＰＵ５は、後述する各編集処理を実行する際に、外部記憶装置５ａからファイル４を読み出し、該ファイル４に格納されているテキストをＲＡＭ７内に確保されたテキストバッファにロードする。尚、後述する第２実施形態も、図２と同様なシステム構成のコンピュータのソフトウェア処理により実現することができる。
【００２５】
以下、具体的にフローチャートを用いて本実施形態のテキスト編集処理を説明する。尚、本例のテキスト編集処理にはファイル４に記憶されたテキストに対して文字を挿入する処理と文字を削除する処理が含まれ、それぞれ分けて説明する。また、更にそれらの編集処理を高速に行うための処理を含め、《挿入後の編集処理》、《削除後の編集処理》、《高速編集処理》  の３種類の処理を個々に分けて説明する。
《挿入後の編集処理》
先ず、テキストに文字を挿入した後の編集処理について説明する。
【００２６】
図３は該文字挿入後の編集処理を説明するフローチャートである。尚、図３に示す処理を開始する前、ファイル４には例えば１頁分のテキストデータが書き込まれているものとする。また、この書き込み処理の際、前述の行末桁位置記憶部１には当該テキストデータ行末桁位置の情報が記憶されるが、本実施形態では行末桁位置として“５”が設定されるものとする。
【００２７】
また、実際のテキスト情報は文字コードや改行コード等のコードの連続であり、ファイル４のデータ構造は例えば図４に示す構成となる。同図においてａ１、ａ２、ａ３、・・・は文字コード列を示し、ｂ１、ｂ２、ｂ３、・・・は改行コードを示す。また、元のテキストデータを図５に示す「Ａ、Ｂ、Ｃ、Ｄ、Ｅ、↑（改行コード）、Ｆ、Ｇ、Ｈ、Ｉ、Ｊ、↑（改行コード）、Ｋ、Ｌ、↑（改行コード）、Ｍ、Ｎ、Ｏ、Ｐ、Ｑ、↑（改行コード）、Ｒ、Ｓ、Ｔ、↑（改行コード）、・・・」とすれば、ａ１の文字コード列は「Ａ、Ｂ、Ｃ、Ｄ、Ｅ」の各文字コードの連なりであり、ａ２の文字コード列は「Ｆ、Ｇ、Ｈ、Ｉ、Ｊ」の各文字コードの連なりであり、ａ３の文字コード列は「Ｋ、Ｌ」の文字コードの連なりであり、ａ４の文字コード列は「Ｍ、Ｎ、Ｏ、Ｐ、Ｑ」の各文字コードの連なりである。
【００２８】
以下、図３のフローチャートを参照しながら、本実施形態の挿入後の編集処理を説明する。ここで、説明を分かりやすくするために、図４のファイル４に格納されているテキストを具体例として取り上げながら、説明を行う。図６（ａ）はテキストバッファに格納されているテキスト（元のテキスト）の内容を示す図である。なお、図６（ａ）では、テキストバッファの内容を、ディスプレイ５ｃの画面表示イメージに沿うように、文字列を改行コード（↑）毎に、改行しながら図示しているが、実際には、テキストバッファには、図６（ａ）に示す文字のコード（文字コード）及び改行コードが連続して格納されている。すなわち、テキストバッファには、「ＡＢＣＤＥ↑ＦＧＨＩＪ↑ＫＬ↑ＭＮＯＰＱ↑ＲＳＴ↑」のコード列が格納されている。ここで、便宜上、図６（ａ）を、ユーザーが文字列「ＢＣ」間に、文字「Ｘ］を挿入する前のディスプレイ５ｃの表示画面であるものとして説明する（この場合、改行コードは、当然、表示されない）。
【００２９】
前述したように、行末位置は“５”なので、一行には最大５文字までが表示される。図６（ａ）では、第１、２、４行に５文字が表示されている。このような状態において、第１行の「ＡＢＣＤＥ」の文字列において、「Ｂ」と「Ｃ」の間に、「Ｘ」が挿入されると、ＣＰＵ５は、ＲＡＭ７内に確保されたテキストバッファの「Ｂ」と「Ｃ」の文字コード間に、「Ｘ」の文字コードを挿入する。この結果、テキストバッファの内容は、図６（ｂ）に示すようになる。すなわち、テキストバッファの内容は、「ＡＢＸＣＤＥ↑ＦＧＨＩＪ↑ＫＬ↑ＭＮＯＰＱ↑ＲＳＴ↑」のコード列となる。
【００３０】
従来のテキスト編集システムにおいては、この段階のテキストバッファの内容を表示位置指定部に渡すが、本実施形態では、図３のフローチャートに示す処理を実行し、その結果、得られたテキストバッファの内容を表示位置指定部に渡す。
【００３１】
ＣＰＵ５は、まず、行末桁位置記憶部１から行末桁位置Ｐｇを取得する（ステップ（以下Ｓで示す）１）。Ｐｇは行末桁位置を記憶する変数である。また、テキストバッファを検索して、現在、ディスプレイ５ｃの画面上でカーソルが指している。また、文字のテキストバッファ内での位置（テキストバッファの先頭からの位置）を求め、それをテキストバッファ内のカーソル位置を格納する変数Ｐｔに設定する（Ｓ１）。Ｐｔはテキストバッファ内でのコードの位置を示す変数であり、テキストバッファ内でのコードの先頭格納位置は、「０」である。
【００３２】
ここで、カーソルが「Ｃ」を指していたものとする。この場合、Ｐｔの値は、“３”となる。また、テキストバッファ内の先頭コードのカーソル位置は“０”であるとする。
【００３３】
次に、ＣＰＵ５は、Ｐｔの値を１デクリメントし、続いて、Ｃ（Ｐｔ）が改行コードに等しいか、または、Ｐｔ＝−１であるか判断する（Ｓ２）。ここで、Ｃ（Ｐｔ）はテキストバッファ内のＰｔ番目のコードを示す変数である（Ｐｔ＝０、１、２・・・）。また、Ｐｔの値が−１であることは、テキストバッファの先頭のコードまでの検索が終了したことを意味する。
【００３４】
この場合、Ｐｔ＝３でありＣ（Ｐｔ）＝「Ｃ」であるため、判断（Ｓ２）はＮＯとなる。上述のＳ２の判断は、ＹＥＳとなるまで繰り返される。この場合、Ｐｔの値は、ステップＳ２において、３→２→１→０→−１と、順次、デクリメントされ、Ｐｔ＝−１となった時点でステップＳ２の判断はＹＥＳとなる。尚、今回の例の場合には、Ｐｔ＝−１と判断されるが、例えば、２行目以降において、文字が挿入された場合には、ステップＳ２において、Ｃ（Ｐｔ）＝改行コードと判断される。この場合の改行コードは、文字が挿入された行の直前の改行コードである。
【００３５】
ステップＳ２でＹＥＳとなった場合は、続いて、Ｐｔの値を１インクリメントする（Ｓ３）。したがって、Ｐｔの値は“０”に設定される。
次に、行内文字位置ＰＬを“０”にセットする（Ｓ４）。ＰＬは、テキストの先頭のコードが文字コードであった場合には該先頭文字コードを含むテキストの最初の改行コードの直前の文字コードまでの文字コード数、それ以外の場合には、テキスト内の各改行コード間の文字コード数を計数するために使用される変数である。
【００３６】
ステップＳ４に続いて、Ｃ（Ｐｔ）が改行コードに等しいか判断する（Ｓ５）。この場合、最初はＣ（Ｐｔ）＝文字コード「Ａ」なので、ステップＳ５の判断はＮＯとなる。ステップＳ５の判断がＮＯの場合は、Ｐｔ及びＰＬの値を１インクリメントする（Ｓ６）。
【００３７】
現在、取り上げている例の場合には、テキストバッファの内容が「ＡＢＸＣＤＥ↑ＦＧＨ・・・」なので、ステップＳ５の判断が７回繰り返され、７回目にステップＳ５の判断はＹＥＳとなる。この判断がなされるまでに、ステップＳ６の処理は６回繰り返されているので、Ｐｔの値は“７”、ＰＬの値は“６”である。
【００３８】
ステップＳ５でＹＥＳと判断すると、次に、ＰＬ＝Ｐｇであるか判断する（Ｓ７）。この場合、ＰＬ＝６、Ｐｇ＝５なので、ステップＳ７の判断はＮＯとなる。このため、次に、ＰＬ＝Ｐｇ＋１であるか判断する（Ｓ８）。この場合、ＰＬ＝６、Ｐｇ＝５なので、ステップＳ８の判断はＹＥＳとなり、テキストバッファ内の改行コード（Ｃ（Ｐｔ））を１文字（１コード）前に移動する（Ｓ９）。すなわち、テキストバッファ内のＰｔ番目のコード（改行コード）と（Ｐｔ−１）番目のコード（この場合文字コード「Ｅ」）を交換する。この結果、テキストバッファの内容は、「ＡＢＸＣＤＥ↑ＦＧＨＩＪ↑Ｋ・・・」から「ＡＢＸＣＤ↑ＥＦＧＨＩＪ↑Ｋ・・・」に変更される。
【００３９】
ステップＳ９の処理が終了すると、ステップＳ４に戻り、ステップＳ４でＰＬの値を“０”にリセットした後、ステップＳ５の処理に移行する。この時、Ｐｔの値は“７”である。したがって、ステップＳ９におけるテキストバッファ内での最初の改行コードの位置入替えの結果、Ｃ（７）＝文字コード「Ｅ」となっているので、ステップＳ５の最初の判断はＮＯとなり、上述したように、ステップＳ５で、Ｃ（Ｐｔ）＝改行コードと判断されるまで、ステップＳ５、Ｓ６の処理が繰り返される。
【００４０】
この場合、テキストバッファの内容は「ＡＢＸＣＤ↑ＥＦＧＨＩＪ↑Ｋ・・・」となっているので、Ｐｔ＝１３となるまで、ステップＳ５、Ｓ６の処理が繰り返される。
【００４１】
Ｐｔ＝１３となると、ステップＳ５で、Ｃ（Ｐｔ）＝改行コードと判断され、ステップＳ７に移行する。このときまでに、ステップＳ６の処理が６回繰り返されているので、ＰＬ＝６となっている。したがって、ステップＳ６の判断は，前回と同様にＮＯとなり、再び、ステップＳ８、Ｓ９の処理が行われる。
【００４２】
この結果、テキストバッファの内容は、「ＡＢＸＣＤ↑ＥＦＧＨＩ↑ＪＫＬ↑ＭＮＯＰＱ↑ＲＳＴ↑」となる。
ステップＳ９の処理の後、また、ステップＳ４に戻り、ＰＬが“０”にリセットされる。この時点で、Ｐｔ＝１３である。したがって、テキストバッファ内の１３番目の文字コード「Ｊ」から、ステップＳ５の判断が開始される。この時点で、テキストバッファの内容は、「ＡＢＸＣＤ↑ＥＦＧＨＩ↑ＪＫＬ↑ＭＮＯＰＱ↑ＲＳＴ↑」となっているので、Ｐｔ＝１６となった時点で、ステップＳ５の判断はＹＥＳとなり、ステップＳ７に移行する。このときまでに、ステップＳ６の処理は３回繰り返されているので、ＰＬ＝３となっている。したがって、ステップＳ７でＮＯと判断され、ステップＳ８に移行する。
【００４３】
ステップＳ８では、この場合、ＰＬ＝３となっているので、ＮＯと判断され、図３のフローチャートの挿入後処理を終了する。
以上の処理により、図６（ａ）に示す元のテキストは、図６（ｃ）に示すテキストに変更される。図６（ｂ）は，同様の操作を行った場合に従来のテキスト編集システムによって得られるテキストを示している。
【００４４】
これに対し、本実施形態の場合には、テキストバッファの内容を図６（ｃ）に示すように編集するので、表示位置指定部は、テキストバッファの内容のみを表示制御部に出力するだけでよい。これにより、表示制御部は、図６（ｃ）と同様のイメージでテキストを表示する。尚、当然のことながら、改行コード（↑）は表示されず、表示制御部が改行制御するために使用されるだけである。
【００４５】
次に、元のテキスト（テキストデータ）が図７（ａ）に示すように、「ＡＢＣＤＥ↑ＦＧＨＩＪ↑ＫＬＭＮ↑ＯＰＱＲＳ↑ＴＵ↑」である場合において、「ＢＣ」間に「Ｘ」が挿入された場合の挿入後処理を、図３のフローチャートを参照しながら説明する。この場合、上述した図６（ａ）の場合と同様に、テキストバッファの内容は「ＡＢＸＣＤＥ↑ＦＧＨＩＪ↑ＫＬＭＮ↑ＯＰＱＲＳ↑ＴＵ↑」となる。この場合には、「ＡＢＸＣＤＥ↑ＦＧＨＩＪ↑」のコード列までは、前記図６（ａ）の場合と同様であり、ステップＳ４〜Ｓ９の処理が２回繰り返され、テキストバッファの内容は「ＡＢＸＣＤ↑ＥＦＧＨＩＪ↑ＫＬＭＮ↑ＯＰＱＲＳ↑ＴＵ↑」、「ＡＢＸＣＤ↑ＥＦＧＨＩ↑ＪＫＬＭＮ↑ＯＰＱＲＳ↑ＴＵ↑」と、順次、変更される。この時点で、Ｐｔ＝１３であり、ステップＳ９からステップＳ４に戻ることになるが、ステップＳ４でＰＬ＝０とリセットされた後、ステップＳ５、Ｓ６が５回繰り返された後、Ｐｔの値が“１８”となったところで、ステップＳ５において、Ｃ（Ｐｔ）＝改行コードであると判断される。この時、ＰＬの値は“５”である。したがって、ステップＳ５でＹＥＳと判断された後、ステップＳ７で、ＰＬ＝Ｐｇであると判断される。この結果、ステップＳ７がＹＥＳとなり、ステップＳ１０に移行する。ステップＳ１０では、テキストバッファのＣ（Ｐｔ）すなわち、Ｃ（１８）に改行コードが挿入される。
【００４６】
この結果、テキストバッファの内容は、「ＡＢＸＣＤ↑ＥＦＧＨＩ↑ＪＫＬＭＮ↑↑ＯＰＱＲＳ↑ＴＵ↑」となり、図７（ｂ）に模式的に示すように、６行から成るテキストが表示される。このように、文字の挿入の結果、ある行の桁数が、丁度、行末桁位置記憶部１に記憶されている値と等しくなった場合には、その行の直後に、自動的に、改行コードが挿入される。
【００４７】
尚、図３のフローチャートにおいて、ステップＳ１０の処理を、「Ｃ（Ｐｔ）に空白のコード（＿）を挿入する」処理に置き換えてもよい。
このことにより、元のテキストが図８（ａ）に示すように「ＡＢＣＤＥ↑ＦＧＨＩＪ↑ＫＬＭＮ↑ＯＰＱＲＳ↑ＴＵ↑」である場合に、「ＢＣ」間に「Ｘ」が挿入された場合、図８（ｃ）に示すように、テキストは「ＡＢＸＣＤ↑ＥＦＧＨＩ↑ＪＫＬＭＮ＿↑ＯＰＱＲＳ↑ＴＵ↑」と変更される。図８（ｂ）は、上記挿入操作が行われた場合に、図３のフローチャートの実施形態の処理によって得られるテキストを示している。
【００４８】
尚、空白コード以外の他のコード（例えばＥＸＴ）などのコードを使用するようにしてもよい。
ところで、行末桁位置の設定は、ユーザーが設定してもよく、システムが自動的に設定するようにしてもよい。システムで自動設定する場合には、テキストを検索して、例えば、テキスト内における最大桁位置、テキスト内で最も出現頻度の多い桁位置、テキストの先頭行の桁位置、またはテキストの先頭から検索していった場合、複数の行が同一の桁位置である場合における該桁位置等を、行末桁位置記憶部１に行末桁位置として記憶する。
《削除後の編集処理》
次に、削除後の編集処理について説明する。
【００４９】
図９は削除後の編集処理を説明するフローチャートである。尚、本例の処理の説明においても、テキスト編集処理を開始する前、ファイル４には、図１０に示すように、例えば１頁分のテキストデータが書き込まれているものとする。また、前述の行末桁位置記憶部１には上記各種方法に設定された行末桁位置の情報が予め記憶されているものとする。また、図９のフローチャートで使用されている変数Ｐｇ、Ｐｔ、Ｃ（Ｐｔ）、ＰＬは図３のフローチャートで使用されている変数と同じである。
【００５０】
また、実際のテキスト情報は文字コードや改行コードの連続であり、例えば図１０に示すメモリ構成である。前述の図４のファイル４の場合と同様、同図のａ１、ａ２、ａ３、・・・は文字コード列を示し、ｂ１、ｂ２、ｂ３、・・・は改行コードを示す。
【００５１】
図１０に示すファイル４に格納されているテキストがＲＡＭ７上のテキストバッファに読みだされ、その内容がディスプレイ５ｃに表示されている状態で、ユーザーがある行の文字を削除すると、ＣＰＵ５は図９のフローチャートの処理を実行する。
【００５２】
以下のフローチャートの説明においては、テキストバッファに格納されている元のテキストが図１１（ａ）であるものとして説明する。図１１には、図６と同様にディスプレイ５ｃの画面表示イメージの形式でテキストバッファの内容を示している。すなわち、図１１（ａ）は、テキストバッファに「ＡＢＣＤＥ↑ＦＧＨＩＪ↑ＫＬ↑ＭＮＯＰＱ↑ＲＳＴ↑」のコード列が格納されており、表示制御部５ｂにより、ディスプレイ５ｃの画面の第１行〜第５行に、それぞれ、「ＡＢＣＤＥ」、「ＦＧＨＩＪ」、「ＫＬ」、「ＭＮＯＰＱ」、「ＲＳＴ」が表示されている状態を示している（改行コード（↑）は表示されない）。
【００５３】
このような表示状態において、ユーザーが、ディスプレイ５ｃの画面上で、カーソルを第１行の第１行の「Ｄ」に移動させ、「Ｃ］を削除する操作を行ったものとする。この結果、テキストバッファの内容は、図１１（ｂ）に示すように「ＡＢＤＥ↑ＦＧＨＩＪ↑ＫＬ↑ＭＮＯＰＱ↑ＲＳＴ↑」に変更される。従来のテキスト編集システムでは、この時点で処理が終了するが、本実施形態の場合は、続いて、ＣＰＵ５により、図９のフローチャートの処理が実行される。
【００５４】
ＣＰＵ５は、まず、行末桁位置記憶部１から行末桁位置Ｐｇを取得すると共に、現在のカーソル位置を入力制御部から取得し、それを、テキスト内カーソル位置を格納する変数Ｐｔに設定する（ＳＴ１）。この場合、Ｐｇ、Ｐｔには、それぞれ、５、３が設定される。
【００５５】
次に、Ｐｔの値を１デクリメントし、続いて、Ｃ（Ｐｔ）＝改行コードであるか、または、Ｐｔ＝−１であるか判断する（ＳＴ２）。このステップＳＴ２の処理は、前述した図３のフローチャートのステップＳ２の処理と同様であり、この場合、ステップＳＴ２の処理が４回繰り返され、Ｐｔ＝−１となった時点で、ステップＳＴ２がＹＥＳと判断され、ステップＳＴ３に移行する。ステップＳＴ２〜ＳＴ６の処理は、図３のフローチャートのステップＳ２〜Ｓ６と同様である。
【００５６】
したがって、この場合、ステップＳＴ３でＰｔが０に設定され、ステップＳＴ４でＰＬが０に設定される。この結果、Ｃ（Ｐｔ）＝「Ａ」の文字コードとなり、ステップＳＴ５でＣ（Ｐｔ）が改行コードに等しいと判断されるまで、ステップＳＴ５、ＳＴ６の処理が繰り返される。
【００５７】
この場合、ステップＳＴ５、ＳＴ６の処理が繰り返されることにより、Ｐｔの値が、１→２→３→４と、順次、インクリメントされ、Ｐｔ＝４となった時点で、ステップＳＴ５で、Ｃ（Ｐｔ）＝改行コードと判断され、ステップＳＴ７に移行する。この時、ＰＬの値は４となっている。
【００５８】
ステップＳＴ７では、ＰＬ＝Ｐｇ−１であるか判断する。この判断は、文字が削除された行の文字数が行末桁位置より１小さいか判断する処理である。この場合、ＰＬ＝４となっているため、ステップＳＴ７でＹＥＳと判断され、次に、ステップＳＴ８で、Ｃ（Ｐｔ＋１）＝改行コードであるか判断する。ステップＳＴ８の判断は、次のステップＳＴ９の処理により、改行コードが２個連続する状態になったことを判断する処理である。この場合は、Ｐｔ＋１＝５でありＣ（Ｐｔ＋１）＝「Ｆ」の文字コードであるため、ステップＳＴ８の判断はＮＯとなり、ステップＳＴ９に移行する。
【００５９】
ステップＳＴ９では、改行コードであるＣ（Ｐｔ）と該改行コードの次のコードＣ（Ｐｔ＋１）を交換する。このステップＳＴ９処理は、テキストバッファ内において、文字が削除された行の桁数を行末桁位置に等しくするための処理である。この場合、改行コードとその次の文字コード「Ｆ」とが位置を交換される。この結果、テキストバッファの内容は、「ＡＢＤＥＦ↑ＧＨＩＪ↑ＫＬ↑ＭＮＯＰＱ↑ＲＳＴ↑」に変更される。
【００６０】
次に、ステップＳＴ１０に移行し、Ｐｔの値を２インクリメントした後、ステップＳＴ４に戻る。この場合、ステップＳＴ１０において、Ｐｔの値は“６”に設定される。したがって、ステップＳＴ４でＰＬが“０”にリセットされた後、現在のテキストバッファ内の２行目の文字コード列「ＧＨＩＪ」について、上記と同様にステップＳＴ５〜ＳＴ１０の処理が行われ、ステップＳＴ９により、Ｃ（１０）の改行コードとＣ（１１）の「Ｋ」の文字コードが交換され、テキストバッファの内容は、「ＡＢＤＥＦ↑ＧＨＩＪＫ↑Ｌ↑ＭＮＯＰＱ↑ＲＳＴ↑」に変更される。この時、Ｐｔの値は１０であり、次のステップＳＴ１０で、Ｐｔの値は１２に設定される。そして、ステップＳＴ４に戻り、現在のテキストバッファの３行目の文字コード列「Ｌ」（Ｐｔ＝１２）に対する処理に移行する。この行の文字数は１なので、ステップＳＴ６の処理は１回のみ行われ、Ｐｔ＝１３、ＰＬ＝１となった時点で、ステップＳＴ５でＣ（Ｐｔ）＝改行コードであると判断され、ステップＳＴ７に移行する。このため、ステップＳＴ７で、ＰＬ＝Ｐｇ−１が成立しないと判断され（ＳＴ７、ＮＯ）、処理を終了する。
【００６１】
以上の処理により、テキストバッファの内容は、最終的に、「ＡＢＤＥＦ↑ＧＨＩＪＫ↑Ｌ↑ＭＮＯＰＱ↑ＲＳＴ↑」となる。この結果、図１１（ｃ）に示すように、同図（ａ）に示す元のテキストと同様に、第１行と第２行の行末桁位置（右端）を、改行コードによって揃えることができる。従来の編集システムでは、図１１（ｂ）に示すように、単に、テキストバッファ内から削除された文字のコード（この場合、第１行の「Ｃ」の文字コード）を削除するのみなので、ある行を削除すると、その行の右端がずれてしまっていた。これに対し、本実施形態の場合では、ある行で文字が削除されても、その行の改行コードの位置が元の位置に固定されるように自動的に編集するので、改行コードを用いて、行末桁位置記憶部１に記憶されている行末桁位置に右端を設定できる。
【００６２】
次に、図１２（ａ）に示す元データ「ＡＢＣＤＥ↑ＦＧＨＩＪ↑Ｋ↑ＬＭＮＯＰ↑ＱＰＲ↑」に対して、第１行目の「Ｃ」を削除する操作が行われた場合に、図９のフローチャートの処理が実行された時の動作を説明する。この場合、「Ｃ」が削除されることによって、テキストバッファの内容は、図１２（ｂ）に示すように、「ＡＢＤＥ↑ＦＧＨＩＪ↑Ｋ↑ＬＭＮＯＰ↑ＱＰＲ↑」となる。
【００６３】
この後、図９のフローチャートの処理が実行されることになるが、まず、第１行目の文字コード列に対して上述のステップＳＴ９の処理（改行コードずらし１）が行われ、テキストバッファの内容は、図１２（ｃ）に示すように、「ＡＢＤＥＦ↑ＧＨＩＪ↑Ｋ↑ＬＭＮＯＰ↑ＱＰＲ↑」となる。続いて、第２行目の文字コードに対して、上述のステップＳＴ９の処理（改行コードずらし２）が行われ、テキストバッファの内容は、図１２（ｄ）に示すように、「ＡＢＤＥＦ↑ＧＨＩＪＫ↑↑ＬＭＮＯＰ↑ＱＰＲ↑」となる。このとき、Ｐｔの値は、１０である。
【００６４】
したがって、次のステップＳＴ１０で、Ｐｔの値は１２に設定され、ステップＳＴ４を経て、ステップＳＴ５において、Ｃ（Ｐｔ）＝改行コードであると判断され、ステップＳＴ７に移行する。この場合、ＰＬ＝“０”であるため、ステップＳＴ７の判断がＮＯとなり、テキストバッファの内容は、図１１（ｄ）のままで、処理を終了する。
【００６５】
このように、テキストバッファが図１１（ｄ）の状態にあるときに、続いて、テキストバッファ内の第１行目の「Ｄ」を削除する操作が行われたとする。この結果、テキストバッファの内容は図１２（ｅ）に示すように、「ＡＢＥＦ↑ＧＨＩＪＫ↑↑ＬＭＮＯＰ↑ＱＰＲ↑」となり、再度、図９のフローチャートの処理が実行される。この場合、まず、第１行目の文字コード列に対して上述のステップＳＴ９の処理（改行コードずらし１）が行われ、テキストバッファの内容は、図１２（ｆ）に示すように、「ＡＢＥＦＧ↑ＨＩＪＫ↑↑ＬＭＮＯＰ↑ＱＰＲ↑」となる。このとき、Ｐｔの値は４である。このため、次のステップＳＴ１０でＰｔの値は６に設定され、ステップＳＴ４を経て、ステップＳＴ５、６の処理が、ステップＳＴ５で、Ｃ（Ｐｔ）＝改行コードであると判断されるまで繰り返し行われる。ステップＳＴ５で、ＹＥＳの判断がなされたとき、Ｐｔ＝１０、ＰＬ＝４となっているので、次にステップＳＴ７に移行したとき、ステップＳＴ７の判断はＹＥＳとなる。続いて、ステップＳＴ８に移行するが、Ｃ（１１）＝改行コードなので、ステップＳＴ８もＹＥＳと判断される。この結果、ステップＳＴ１１に移行し、ステップＳＴ１１でＣ（１１）の改行コードが削除され、処理を終了する。
【００６６】
この結果、テキストバッファの内容は、図１１（ｇ）に示すように、「ＡＢＥＦＧ↑ＨＩＪＫ↑ＬＭＮＯＰ↑ＱＲ↑」となる。このように、改行ずらしを行おうとするとき、改行コードが前の行に繰り上げられるような場合には、その改行コードは自動的に削除される。
【００６７】
尚、行末桁位置の設定は、上述した挿入後の編集処理と同様に各種設定方法が考えられる。また、図１２（ｄ）に示す例のように、改行ずらしの結果、改行コードが２個連続するようになった場合、後方の改行コードを削除するようにすることも可能である。これは、ＣＰＵ５が図１３のフローチャートの処理を実行することによって可能となる。
【００６８】
図１３のフローチャートは、図９のフローチャートのステップＳＴ１０をステップＳＴ１３〜ＳＴ１５に置き換えると共に、図９のフローチャートからステップＳＴ１１を削除したものである。このフローチャートの処理の説明を、図１４を参照しながら説明する。尚、図１４（ａ）〜（ｅ）は、図１２（ａ）〜（ｇ）と同様である。
【００６９】
ステップＳＴ１３は、ステップＳＴ９の処理の結果、Ｃ（Ｐｔ＋１）とＣ（Ｐｔ＋２）が共に改行コードとなったかを判断する処理であり、Ｃ（Ｐｔ＋２）が改行コードであるか判断する。
【００７０】
図１４（ｄ）の例では、「Ｋ」の文字コードに続く２つの改行コードがＣ（Ｐｔ＋１）とＣ（Ｐｔ＋２）に該当する。したがって、この場合ステップＳＴ１３の判断はＹＥＳとなる。
【００７１】
ステップＳＴ１３でＹＥＳと判断されると、次に、Ｃ（Ｐｔ＋２）の改行コードを削除し（ステップＳＴ１４）、処理を終了する。この結果、図１４（ｅ）に示すように、テキストバッファの内容は、最終的に、「ＡＢＤＥＦ↑ＧＨＩＪＫ↑ＬＭＮＯＰ↑ＱＰＲ↑」となる。
【００７２】
一方、ステップＳＴ１３の判断がＮＯの場合には、Ｐｔの値を２インクリメントして（ステップＳＴ１５）に戻る。このステップＳＴ９、ＳＴ１３，ＳＴ１５の一連の処理は、図９のフローチャートのステップＳＴ９、１０の処理と同様である。
【００７３】
また、ステップＳＴ８でＣ（Ｐｔ＋１）が改行コードであると判断された場合には（ＳＴ８，ＹＥＳ）、処理を終了する。この処理は、例えば、ユーザーの作成した元のテキストが、例えば、図１５（ａ）に示すように「ＡＢＤＥＦ↑ＧＨＩＪＫ↑↑ＬＭＮＯ↑ＱＰＲ↑」であり、連続する改行コードを含んでいる場合に、ユーザーが入力した改行コードを削除しないようにするための処理である。
【００７４】
すなわち、図１５（ａ）に示すテキスト「ＡＢＤＥＦ↑ＧＨＩＪＫ↑↑ＬＭＮＯ↑ＱＰＲ↑」から「Ｄ」を削除した場合、テキストバッファの内容は、図１５（ｂ）に示すように、「ＡＢＥＦ↑ＧＨＩＪＫ↑↑ＬＭＮＯ↑ＱＰＲ↑」となり、ＣＰＵ５は、図１３のフローチャートの処理を実行する。そして、ステップＳＴ９の処理により、「Ｇ」と「↑」とが交換され（改行ずらし１）、テキストバッファの内容は、図１５（ｃ）に示すように、「ＡＢＥＦＧ↑ＨＩＪＫ↑↑ＬＭＮＯ↑ＱＰＲ↑」となる。
【００７５】
次に、ステップＳＴ５で、「Ｋ」の文字コードの次の改行コードがＣ（Ｐｔ）であると判断される。このとき、Ｐｔ＝１０、ＰＬ＝４である。このため、次に、ステップＳＴ７に移行し、ステップＳＴ７でＰＬ＝Ｐｇ−１と判断され、ステップＳＴ８に移行する。ステップＳＴ８においては、Ｐｔ＋１＝１１であるため、Ｃ（Ｐｔ＋１）、すなわち、テキストバッファ内の１１番目のコードが改行コードであると判断され（ＳＴ８、ＹＥＳ）、処理を終了する。
【００７６】
このように、図１３のフローチャートにおいては、ユーザーが意図的に入力した連続する改行コードは、削除されずに、保存される。
尚、本例においても、行末桁位置情報Ｐｇの値を“５”に設定したが上述の値に限るものではなく、行末桁位置情報Ｐｇは予め設定した値でもよく、又はファイル４にテキストデータを読み込む際、最大桁位置を行末桁位置情報Ｐｇとしてもよく、又最多桁位置を行末桁位置情報Ｐｇとしてもよい。
《高速編集処理》
次に、高速編集処理について説明する。
【００７７】
本例は挿入処理又は削除処理があった後、上記編集処理が行われている最中に更に挿入処理や削除処理があった時、一時的に上記編集処理を中断し、処理が未実施の行を特定のマーク等により記録して、再び最初から編集処理を再開し、該未処理の行以降については、まとめて編集処理を行うことにより処理の高速化を図るものである。
【００７８】
図１６はこの処理を説明するフローチャートである。また、図１７はこの処理の具体例を説明する図である。以下、図１７を参照しながら、図１６のフローチャートの処理を説明する。また、以下の図１６のフローチャートの説明では、図１７（ａ）に示すように、元のテキスト（テキストデータ）が「ＡＢＣＤＦ↑ＦＧＨＩＪ↑ＫＬＭＮＯ↑ＰＱＲ↑」であるものとして説明を行う。この元のテキスに対し、「ＢＣ」の間に「Ｘ」が挿入されると、テキストバッファの内容は、図１７（ｂ）に示すように、「ＡＢＸＣＤＦ↑ＦＧＨＩＪ↑ＫＬＭＮＯ↑ＰＱＲ↑」となり、ＣＰＵ５は、図１６のフローチャートの処理を実行する。
【００７９】
図１６と上述した図３のフローチャートとの主な相違点は、ステップＳＴＰ１における同時処理数の変数Ｎへの設定、ステップＳＴＰ５における未実施コードの存在の有無の判断、及びステップＳＴＰ１４における挿入キーが操作されたときの、未実施コードの挿入処理等である。
【００８０】
以下、図１６のフローチャートの処理を具体的に説明する。
先ず行末桁位置Ｐｇの情報を得、またテキストバッファ内の現カーソル位置をＰｔに設定する（ＳＴＰ１）。また、同時処理回数Ｎを“１”に設定する（ＳＴＰ１）。図１７（ａ）の例の場合には、Ｐｇに５が、Ｐｔに３が設定される。
【００８１】
そして、Ｃ（Ｐｔ）＝改行コードまたはＰｔ＝−１でなければ（ＳＴＰ２がＮＯ）、ステップＳＴＰ２の処理をＣ（Ｐｔ）＝改行コードまたはＰｔ＝−１となるまで、繰り返す。この処理は、文字が挿入された行の先頭を検索するための処理である。図１７の例では、ステップＳＴＰ２の処理が３回繰り返され、Ｐｔ＝−１と判断される（ＳＴＰ２、ＹＥＳ）。次に、Ｐｔの値を１インクリメントする（ＳＴＰ３）。この結果、Ｐｔは０となり、Ｐｔはテキストバッファ内の先頭の文字コード「Ａ」を指すことになる。
【００８２】
その後、行内文字位置ＰＬの値を“０”にセットする（ＳＴＰ４）。
次に、本例においては、Ｃ（Ｐｔ）＝未実施コードであるか、すなわち、テキストバッファ内のＰｔ番目のコードが未実施コードであるか判断する（ＳＴＰ５）。この未実施コードは、前に行われた挿入処理によって本編集処理が行われている途中、挿入キーが操作され、新たなコードが挿入された場合にテキストバッファ内に挿入されるコードである。この未実施コードの挿入処理については後述する。
【００８３】
ここで、Ｃ（Ｐｔ）が未実施コードでなければ（ＳＴＰ５がＮＯ）、前述の挿入後処理、又は削除後処理と同様の処理となる。すなわち、改行コードの検出処理を行い（ＳＴＰ７）、改行コードが検出されるまで、現カーソル位置Ｐｔの値を順次＋１し、同時に行内文字位置ＰＬの値も順次＋１する（ＳＴＰ８）。その後、Ｃ（Ｐｔ）が改行コードであると判断すると（ＳＴＰ７がＹＥＳ）、行内文字位置ＰＬと行末桁位置Ｐｇの値を比較し、両値が一致しているか判断する（ＳＴＰ９）。
【００８４】
ここで、両値が一致していれば（ＳＴＰ９がＹＥＳ）、改行ずらしの結果、現在処理している行の桁数は行末桁位置Ｐｇに等しくなったものの、次の行に、文字が移動していないと判断して、Ｃ（Ｐｔ）に改行コードを挿入して処理を終了する（ＳＴＰ１０）。一方、一致していなければ（ＳＴＰ９がＮＯ）、行内文字位置ＰＬの値が行末桁位置ＰｇにＮを加算した値に一致しているか判断し（ＳＴＰ１１）、一致していなければ、改行ずらしは生じたが、現在処理している行の桁数は行末桁位置Ｐｇ未満のままであり、次の行に文字が移動していないと判断し、処理を終了する（ＳＴＰ１１がＮＯ）。
【００８５】
ある行に文字が挿入されると、その行の次の行以降に、文字を移動しながら改行コードの位置を変更させる改行ずらしの処理が実施されるが、改行ずらしの処理の終了条件は、文字が前の行から移動しても桁数が５桁以下の行が検出されることである。テキストバッファに未実施コードが挿入されていない状態においては、上述した図３のフローチャートと同様の処理により、改行ずらしの処理が、順次、文字が挿入された行から実施されていくので、改行ずらしにより行の桁数が増加したとしても、最大桁数は６桁である。このため、改行ずらしにより６桁となった行は、ステップＳＴＰ１１においてＰＬ＝Ｐｇ＋１と判断され（ＳＴＰ１１，ＹＥＳ），ステップＳＴＰ１２に移行する。
【００８６】
ステップＳＴＰ１２においては、テキストバッファ内においてＣ（Ｐｔ）の改行コードをＮ文字前に移動する。すなわち、Ｃ（Ｐｔ）とＣ（Ｐｔ−Ｎ）を交換する改行ずらし処理を行う。この場合、Ｎ＝１なので、Ｃ（Ｐｔ）とＣ（Ｐｔ−１）を交換する。続いて、Ｐｔの値を、Ｐｔ−Ｎ＋１に変更する。この場合、Ｎ＝１なので、Ｐｔの値は変化せず、Ｐｔは改行コードと交換され、次行の先頭に移動された文字コードの先頭を指す。
【００８７】
図１７の例では、このような改行ずらし処理が、同図（ｃ）、（ｄ）に示すように、２回実施される（改行ずらし１、改行ずらし２）。この結果、テキストバッファの内容は「ＡＢＸＣＤ↑ＥＦＧＨＩ↑ＪＫＬＭＮＯ↑ＰＱＲ」となる。
【００８８】
次に、新たに挿入キーが押されたか判断し（ＳＴＰ１３）、新たな挿入キーの押下がない場合には（ＳＴＰ１３がＮＯ）、ステップＳＴＰ４に戻り、前述と同様に、行内文字位置ＰＬを“０”にリセットし、同じ処理を繰り返す。一方、この間新たな挿入キーが押された場合には（ＳＴＰ１３がＹＥＳ）、Ｃ（Ｐｔ）の次の位置、即ちＣ（Ｐｔ＋１）の位置に未実施コード（◇）を挿入し（ＳＴＰ１４）、処理を終了する。
【００８９】
図１７の例では、ステップＳＴＰ１１で改行ずらし２の処理が行われた後、ステップＳＴＰ１２で挿入キーの押下操作が検出され、ステップＳＴＰ１４でテキストバッファのＣ（Ｐｔ＋１）の位置に、未実施コード（◇）が挿入され、同図（ｅ）に示すように、テキストバッファの内容は「ＡＢＸＣＤ↑ＥＦＧＨＩ↑◇ＪＫＬＭＮＯ↑ＰＱＲ↑」となる。この結果、テキストバッファには文字コード「Ｘ」の挿入処理に基づくテキスト編集が完了しない前、新たな文字コード「Ｙ」の挿入処理があったことが記録される。
【００９０】
続いて、上記挿入キーの操作により挿入された文字のコードが、テキストバッファの当該位置に挿入され、その後、再び、図１６のフローチャートの処理が、ＣＰＵ５により実行される。図１７の例では、テキストの第１行目の「ＸＣ」間に、「Ｙ」が挿入され、テキストバッファの内容が、同図（ｅ）に示すように、「ＡＢＸＹＣＤ↑ＥＦＧＨＩ↑◇ＪＫＬＭＮＯ↑ＰＱＲ↑」となった後、図１６のフローチャートの処理が、再び、開始される。
【００９１】
この結果、再び、テキストの第１行目から、上記と同様な改行ずらしの処理が行われる。図１７の例では、同図（ｆ）、（ｇ）に示すように、改行ずらし１、改行ずらし２が行われる。そして、テキストの第３行の「Ｉ◇ＪＫＬＭＮＯ↑」に移行したとき、Ｐｔの値が１３になった時点で、ステップＳＴＰ５で、Ｃ（Ｐｔ）が未実施コードであると判断される（ＳＴＰ５、ＹＥＳ）。そして、ステップＳＴＰ６に移行し、ステップＳＴＰ６において、テキストバッファから未実施コードＣ（１１）が削除され、Ｎの値が１インクリメントされる。この結果、テキストバッファの内容は、図１７（ｈ）に示すように、「ＡＢＸＹＣ↑ＤＥＦＧＨ↑ＩＪＫＬＭＮＯ↑ＰＱＲ↑」となる。すなわち、テキストバッファ内のＰｔ＝１４以降のコードの位置が１つ繰り上げられる。また、Ｎの値は２になる。
【００９２】
ステップＳＴＰ６の処理の後、再び、ステップＳＴＰ５の処理が実施される。図１７の例では、挿入文字は「Ｙ」のみなので、次のステップＳＴＰ５では、Ｃ（Ｐｔ）＝「Ｊ」の文字コードなので、ステップＳＴＰ５の判断はＮＯとなり、ステップＳＴＰ７に移行する。ステップＳＴＰ７では、Ｃ（Ｐｔ）が改行コードに等しいかが判断され、改行コードに等しくない場合は（ＳＴＰ７，Ｎ０）、ステップＳＴＰ５に戻る。
【００９３】
このようにして、２つの改行コードに挟まれたある行において、該行内の未実施コードの数に等しい回数だけ、ステップＳＴＰ６の処理が実施され、その未実施コードの個数に１加えた数がＮに設定されると共に、該未実施コードがテキストバッファから削除される。尚、以下の処理は前述の例と同じであり、最終的に同図（ｊ）に示す編集結果となる。
【００９４】
以上のように処理することにより、前の挿入や削除後のテキスト編集処理が完了する前に新たな挿入や削除等の処理が発生した場合、該新たな挿入や削除等の処理に伴うテキスト編集処理と前の挿入や削除等に伴うテキスト編集処理をまとめて一括して行うことができ、高速なテキスト編集処理を行うことができる。
【００９５】
尚、改行コード位置修正部３が行う修正処理は、特定のトリガーによって一括処理する構成であってもよい。すなわち、テキストに対し、一連の挿入や削除処理が終了した後、または一括行端変更キーなどの特定のトリガーキーが操作されることによってテキスト編集処理を一括して行う構成することにより、より効率よく高速にテキスト編集処理を行うことができる。
【００９６】
さらに、以上の第１実施形態の各例において、移動や複写などの対象として行頭空白を含む文字列が指定された時、該行頭空白を削除して格納し、該文字列を展開先のフォームに合わせて展開処理する構成としてもよい。
【００９７】
また、本例のテキスト編集処理の結果、例えば句読点などの禁則文字が行頭に移動する場合、該禁則文字を前行の最後尾に移動する。また、逆に特定桁位置に禁則文字があり、その直後に改行があるときは該禁則文字を行末とみなすような構成としてもよい。
＜第２実施形態＞
次に、本発明の第２実施形態について説明する。
【００９８】
本実施形態はインデント機能を有するテキスト編集システムに係わるものであり、本実施形態の基本構成を図１８に示す。
尚、インデント機能とは、文の開始位置と終了位置を変更する機能のことであり、字下げとも呼ばれる。
【００９９】
同図において、８は画面の桁数Ｌｇを記憶する画面桁数記憶部であり、ディスプレイの画面サイズ等に応じて、予め設定された所定の値が登録される。また、９はテキスト内の空白コードを検出する空白コード検出部であり、ファイル１１に書き込まれた文書（テキスト）を参照し、各行の空白コードを検出する。さらに、１０は空白コード位置修正部であり、上記空白コード検出部９によって検出された空白コードの位置情報と、画面桁数Ｌｇの情報から行頭に所定個の空白コードが配置されるように空白コードの位置を修正する。例えば、ある行の行頭に文字コードが位置し、且つ、その後に所定個の空白コードが連続している場合、該文字コードを該所定個の空白コードの後に移動させ、該所定個の空白コードが、その行の行頭から配置されるように編集する。また、行末に空白コードが位置し、次行の行頭に文字コードが位置する場合、文字コードと空白コードを入れ替え、空白コードの位置を行頭に移動する。
【０１００】
以下、フローチャートを用いて本実施形態のテキスト編集処理を具体的に説明する。尚、本実施形態のテキスト編集処理においても《挿入後の編集処理》と《削除後の編集処理》に分けて説明する。
《挿入後の編集処理》
先ず、挿入後の編集処理について説明する。
【０１０１】
図１９は本実施形態の挿入後の編集処理を説明するフローチャートである。尚、図１９に示す処理を開始する前、図１８に示すファイル１１には、例えば１頁分のテキストデータが書き込まれているものとする。また、実際のテキスト情報は文字コードや改行コードが連続するコード列であり、例えば図２０に示すデータ形式でファイル１１に格納されている。同図のａ１、ａ２、ａ３、・・・は文字コード列を示し、ｂ１、ｂ２、ｂ３、・・・は改行コードを示し、ｃ１、ｃ２、ｃ３、・・・は空白コード列を示す。尚、図２０において空白コード列ｃ１、ｃ２、ｃ３、・・・は、共に２個の空白コードで構成され、それぞれ、空白コードＣ１１とＣ１２、Ｃ２１とＣ２２、Ｃ３１とＣ３２、・・・で構成されている。
【０１０２】
図２０は、以後の説明で使用するファイル１１内のテキストデータ（元のテキスト）を示す図である。この元のテキストは、「１．ＡＢＣＤＥＦＧＨ    ＩＪＫＬＭＮＯＰ    ＱＲＳＴ↑」から成っており、本実施形態ではディスプレイ５ｃの画面の桁数が１０となっているため、ディスプレイ５ｃの画面に表示される際には、図２１に示すように、
１．ＡＢＣＤＥＦＧＨ
ＩＪＫＬＭＮＯＰ
ＱＲＳＴ↑
の形式で表示される。尚、改行コード（↑）は、実際には、表示されない。
【０１０３】
以下、図２２の元のテキストを具体例として取り上げ、図２２を参照しながら、図１９のフローチャートの処理を説明する。図２２（ａ）に示す元のテキストがディスプレイ５ｃに画面表示されている状態で、カーソルが１行目の「Ｃ」に移動され、「ＢＣ」間に「Ｘ」を挿入する操作が行われると、テキストバッファの内容は「１．ＡＢＸＣＤＥＦＧＨ    ＩＪＫＬＭＮＯＰ    ＱＲＳＴ↑」に書き換えられる。そして、ＣＰＵ５より、図１９のフローチャートの処理が実行される。
【０１０４】
図１９に示すフローチャートにおいて、先ず画面桁数Ｐｇを得る（Ｗ１）。ここで、画面桁数Ｐｇの値は、上述の画面桁数記憶部８に記憶されており、画面桁数記憶部８から画面桁数Ｐｇを得る。本例では最初の処理（Ｗ１）によって画面桁数Ｐｇとして“１０”が読み出されるものとする。また、上述の処理（Ｗ１）において、同時にテキストバッファに書き込まれた文書（テキスト）内における現在カーソルが指している文字コードの位置がＰｔに設定される（Ｗ１）。
【０１０５】
この例の場合、Ｐｔに「Ｃ」の文字コードテキストバッファ内の位置「３」が設定される。次にＰｔの値を−１し、Ｃ（Ｐｔ）が改行コードであるか、またはＰｔの値が−１であるか判断する（Ｗ２）。この処理は前述の第１実施形態例で説明した処理と基本的に同じであり、この例の場合、Ｐｔの値は３から順次「２」→「１」→「０」→「−１」と移行し、Ｐｔの値が−１であると判断される（Ｗ２がＹＥＳ）。尚、テキストバッファの２行目以降で、文字コードが挿入された場合には、改行コードが検出される。
【０１０６】
次に、Ｐｔを１インクリメントし、続いて、Ｃ（Ｐｔ）＝改行コードであるか判断する（Ｗ３）。このステップＷ３の処理は、元のテキストの編集処理の終了を判断する処理であり、図２０の改行コードｂ１を検出処理に該当する。このステップＷ３の処理によって改行コードを検出すると（Ｗ３がＹＥＳ）、処理を終了する。
【０１０７】
一方、ステップＷ３でＮＯと判断すると、次に、ＰｔはＰｇの倍数であるか判断する（Ｗ４）。このステップＷ４の処理は、次の行の先頭のコードを検出する処理である。ステップＷ４でＮＯと判断すると、ステップＷ３に戻る。この例の場合、Ｐｔは順次インクリメントされ、対応するコードＣ（Ｐｔ）が「１」→「．」→「Ａ」→「Ｂ」→・・・と変化する。
【０１０８】
その後、Ｐｔが画面桁数Ｐｇの倍数であると判断すると（Ｗ４がＹＥＳ）、Ｃ（Ｐｔ）が空白コードであるか判断する（Ｗ５）。すなわち、図２２の例の場合Ｐｔの値は１３となっており、Ｃ（Ｐｔ）＝文字コード「Ｈ」となっている。したがって、ステップＷ４の判断はＮＯとなり、ステップＷ６に移行する。
【０１０９】
図２２に示すように文字コード「Ｂ」、「Ｃ」間に「Ｘ」を挿入すると、図２２（ｂ）に示すように、元のテキストの１行目の最後の文字コード「Ｈ」が、２行目の先頭に移動する。テキストバッファの先頭の文字コードのＰｔは０であるため、Ｐｔの値がＰｇの倍数であるということは、Ｐｔがテキストの各行の先頭のコードを指すポインタ値となっていることを意味する。このため、この例の場合、最初のステップＷ５においてＣ（Ｐｔ）＝文字コード「Ｈ」となっており、Ｃ（Ｐｔ）は空白コードでないと判断される（Ｗ５，ＮＯ）。
【０１１０】
ステップＷ６において、Ｐｔを＋１し、次のコードＣ（Ｐｔ）が改行コードであるか判断する（Ｗ６）。尚、このとき改行コードとなる場合（Ｗ６がＹＥＳ）については後述する。
【０１１１】
上述の判断（Ｗ６）において、次のコードＣ（Ｐｔ）が改行コードでなければ（Ｗ６がＮＯ）、インデント数Ｍを“１”に設定し、文字情報Ｃ（Ｐｔ）が空白コードであるか判断する（Ｗ７）。すなわち、図２２（ｂ）に示すように文字コード「Ｈ」の後に空白コードが存在するか判断する。ステップＷ７で、Ｃ（Ｐｔ）が空白コードであると判断すれば（Ｗ７、ＹＥＳ）、ステップＷ８に移行し、ステップＷ８でＰｔの値を１インクリメントし、続いて、Ｃ（Ｐｔ）＝空白コードであるか判断する（Ｗ９）。そして、ステップＷ９で、Ｃ（Ｐｔ）が空白コードであると判断すれば（Ｗ９、ＹＥＳ）、インデント数を示す変数Ｍの値を１インクリメントし（Ｗ１０），ステップＷ８に戻る。
【０１１２】
ステップＷ７〜Ｗ９の処理は、元のテキストのインデント数（文字下げ桁数）を求める処理であり、図２２の例では、インデント数は２となっている。このため、図２２の例では、ステップＷ８〜Ｗ１０の処理が２回繰り返され、Ｐｔの値が１３となった時点で、ステップＷ９の判断がＮＯとなり、ステップＷ１１に移行する。
【０１１３】
ステップＷ１１の処理は、Ｃ（Ｐｔ−Ｍ−１）の文字コードとＣ（Ｐｔ−１）の空白コードを交換する処理である。図２２の例の場合、この時インデント数Ｍが“２”であり、文字コード「Ｈ」とその後の２番目の空白コードを交換する。
【０１１４】
この結果、図２２の例では、テキストバッファの内容は、「１．ＡＢＸＣＤＥＦＧ    ＨＩＪＫＬＭＮＯＰ    ＱＲＳＴ↑」に書き換えられる。
ステップＷ１１の処理が終了すると、再び、ステップＷ３に戻り、今度は、テキストバッファ内の「ＩＪＫＬＭＮＯＰ    Ｑ」のコード列に対して、上述と同様な処理が行われる。この結果、２回目のステップＷ１１の処理において、
文字コード「Ｐ」とその後の２番目の空白コードとが交換される。この結果、テキストバッファの内容は、「１．ＡＢＸＣＤＥＦＧ    ＨＩＪＫＬＭＮＯ    ＰＱＲＳＴ↑」となる。このとき、Ｐｔの値は２３となっている。
【０１１５】
上記ステップＷ１１の後、また、ステップＷ３に戻り、テキストバッファ内の「ＱＲＳＴ↑」のコード列に対して、ステップＷ３、Ｗ４の処理が繰り返され、Ｐｔの値が３７となった時点で、ステップＷ３でＣ（Ｐｔ）が改行コードに等しいと判断され、処理を終了する。
【０１１６】
尚、図２２（ｃ）は本例のテキスト編集処理を終了した状態を示す図であり、同図（ａ）に示す元のテキストデータに「Ｘ」が挿入された場合に、本例のテキスト編集処理を実施することによって得られた編集結果を示すものである。また、同図（ｂ）は従来のテキスト編集処理の例を示す。従来の場合、文字コード「Ｘ」の挿入によって次行の行頭に文字コード「Ｈ」や「Ｐ」が配置されることになるが、本例によれば、挿入処理後に、該文字コード「Ｈ」，「Ｐ」を当該空白コードとの交換処理（Ｗ１１）を実施するので、元のテキストと同様に、空白コードの位置を固定させることができる。したがって、本例のテキスト編集システムを使用することにより、操作性よくインデントのある文書を作成することができる。
【０１１７】
図２３は、上記本実施形態の空白コードの位置修正処理の結果、新しい行ができる場合、該新たな行にインデント数Ｍと同じ空白コードを挿入することによりインデント機能を実現する処理の例を示す。この処理は、上述の図１９のフローチャートのステップＷ１２の処理によって実現されるものである。図２３（ａ）に示すように、元のテキストバッファの内容が、「１．ＡＢＣＤＥＦＧＨ    ＩＪＫＬＭＮＯＰ    ＱＲＳＴＵＶＷＸ↑」であった場合、文字コード列「ＢＣ」間に「Ｘ」を挿入すると、テキストバッファの内容は、「１．ＡＢＣＸＤＥＦＧＨ    ＩＪＫＬＭＮＯＰ    ＱＲＳＴＵＶＷＸ↑」に変更される。この場合、テキストバッファ内の最後の文字コード「Ｘ」は、Ｐｔ＝３０となる。この結果、ＣＰＵ５による図１９のフローチャートの処理の実行により、テキストバッファの内容が「１．ＡＢＣＸＤＥＦＧ    ＨＩＪＫＬＭＮＯ    ＰＱＲＳＴＵＶＷＸ↑」に変更された後、ステップＷ３でＰｔの値が３０に設定され、Ｃ（Ｐｔ）が改行コードに等しくないと判断された後（Ｗ３、ＮＯ），ステップＷ４でＰｔはＰｇの倍数であると判断され（Ｗ４、ＹＥＳ），さらに、続いて、ステップＷ６でＰｔの値が３１に設定され、Ｃ（Ｐｔ）が改行コードであると判断される（Ｗ６，ＹＥＳ）。これにより、ステップＷ１２に移行し、ステップＷ１２において、Ｃ（Ｐｔ−１）の文字コードの前にＭ個の空白コードが挿入され、処理を終了する。
【０１１８】
該ステップＷ１２の処理において、Ｐｔ−１＝３０であるので、Ｃ（Ｐｔ−１）は文字コード「Ｘ」である。この結果、図２３（ｂ）に示すように、４行目には文字コード「Ｘ」の前に、２個の空白コードが設定される。
【０１１９】
このように元のテキストに空白コードがない場合でも、文字の挿入により、新たな行が生成される場合には、該新たな行の行頭に必要な数の空白コードを自動生成し、２行目以降の行頭を一致させるテキスト編集処理を実現することができる。
【０１２０】
尚、上述の実施形態では画面桁数Ｌｇを“１０”として説明したが、必ずしも“１０”に限る必要はない。また、行頭の空白コードの数も２個に限らず、１個又は３個以上であってもよい。
《削除後の編集処理》
次に、削除後の編集処理について説明する。
【０１２１】
図２４は削除後の編集処理を説明するフローチャートである。尚、本例の処理の説明においても、テキスト編集処理を開始する前、ファイル１１には、例えば１頁分のテキストデータ（元のテキスト）が書き込まれているものとする。また、実際のテキスト情報は文字コードや改行コードの連続であり、ファイル１１には例えば図２５に示すデータ形式でテキストが格納されている。尚、同図に示すａ１、ａ２、・・・や、ｂ１、ｂ２、・・・、ｃ１、ｃ２、・・・は前述の図２０に示す同一記号と同じく、文字コード列や空白コード列を示す。
【０１２２】
以下、図２６を参照しながら、図２４のフローチャートの処理を説明する。ファイル１１のテキスト（元のテキスト）がテキストバッファにロードされ、テキストバッファの内容が、図２６（ａ）に示すように、「１．ＡＢＣＤＥＦＧＨ  ＩＪＫＬＭＮＯＰ    Ｑ」であるときに、「Ｃ」が削除されたものとする。そして、テキストバッファの内容が、図２６（ｂ）に示すように、元のテキストが「１．ＡＢＤＥＦＧＨ    ＩＪＫＬＭＮＯＰ    Ｑ」となった時点で、ＣＰＵ５が図２４のフローチャートの処理を実行したものとする。
【０１２３】
図２４のフローチャートと図１９のフローチャートを比較・参照すれば容易に知れるように、図２４のフローチャートと図１９のフローチャートには共通のステップが多いが、異なるステップは、ステップＶ４、Ｖ１０〜Ｖ１２である。
【０１２４】
文字削除の場合には、文字が繰り上がるため、図２６（ｂ）に示すように、文字削除処理後において、各行の最後が空白コードとなり、２行目以降において行の先頭部分の空白コードが１個減少する。このため、図２６（ｃ），（ｄ）に示すように、行の最後の桁の空白コードを、次行の先頭の文字コードと交換する処理が必要となる。
【０１２５】
ステップＶ４はＰｔが（Ｐｇの倍数−１）に等しいか判断する処理であるが、これは、各行の最後の桁を検出する処理である。ステップＶ４がＹＥＳであれば、Ｃ（Ｐｔ）＝空白コードであるか、すなわち、各行の最後の桁のコードが空白コードであるか判断する（Ｖ５）。そして、ステップＶ５の判断がＹＥＳであれば、変数Ｍに１を設定する。変数Ｍはインデント数を計数するために使用される変数である（Ｖ６）。  ステップＶ６に続いて、Ｐｔの値を１インクリメントし（Ｖ７）、次に、Ｃ（Ｐｔ）が空白コードであるか判断する（Ｖ８）。そして、Ｃ（Ｐｔ）が空白コードであれば（Ｖ８、ＹＥＳ）、Ｍの値を１インクリメントし（Ｖ９）、再び、ステップＶ７に戻る。ステップＶ７〜Ｖ９のループ処理は、上述した図１９のフローチャートのステップＷ８〜Ｗ１０のループ処理と同様に、インデント数を計数して、その計数値を変数Ｍに設定する処理である。本例の場合は、文字削除により桁上がりした各行間のインデント部分の空白コードの個数を計数する。
【０１２６】
ステップＶ８で、Ｃ（Ｐｔ）が空白コードでないと判断すると（Ｖ８、ＮＯ）、Ｃ（Ｐｔ）の文字コードをＣ（Ｐｔ−Ｍ）の空白コードと交換する（Ｖ１０）。このステップＶ１０の処理は、図２６（ｃ），（ｄ）の文字ずらし１、２に該当する処理であり、当該行の先頭の文字コードを、前の行の最後の空白コードと交換する処理である。図２６（ｃ），（ｄ）の場合は、Ｐｔの値は、それぞれ、１１、２１であり、それぞれ、２行目の文字コード「Ｉ」と３行目の文字コード「Ｑ」が、前の行の最終桁の空白コードと交換される。
【０１２７】
ステップＶ１０の処理が終了すると、Ｃ（Ｐｔ＋１）が改行コードであるか判断する（Ｖ１１）。このステップＶ１１の処理は、元のテキストの最後のコードである改行コードが、行の先頭に位置するように移動したかを検出する処理である。すなわち、図２６（ｄ）に示すように、文字ずらし２処理の結果、テキストの最後の改行コードが行頭に位置するようになった判断する処理である。このような場合、テキストの最終行がインデントと改行コードのみとなるため、インデント部分の空白コードは不要となる。
【０１２８】
このため、ステップＶ１１で、Ｃ（Ｐｔ＋１）が改行コードであると判断すると（Ｖ１１、ＹＥＳ）、Ｃ（Ｐｔ＋１）の前のＭ個の空白コードを削除する（Ｖ１２）。この結果、図２６の例では、図２６（ｄ）に示すテキストバッファにおいて、２行目の行末と３行目の行頭の２つの空白コードが削除される。このため、図２６（ｄ）の場合は、文字コード「Ｑ」が２行目に繰り上げられた結果、３行目の２桁目に位置していた改行コード（↑）が、３行目の行頭に位置するようになる。
【０１２９】
ステップＶ１１の処理が終了すると、ステップＶ３に戻る。ステップＶ３の処理は、テキストの最後のコードである改行コードを検出する処理である。図２６の例では、ステップＶ１２において、テキストバッファの内容が図２５（ｄ）に変更された時点で、Ｐｔの値が１９となっているため、ステップＶ３において、Ｐｔの値は１インクリメントされて、２０となる。このため、Ｃ（Ｐｔ）＝改行コードであると判断され（Ｖ３がＹＥＳ）処理を終了する。
【０１３０】
この結果、テキストバッファの内容は、最終的に図２６（ｅ）に示すように、「１．ＡＢＤＥＦＧＨＩ    ＪＫＬＭＮＯＰＱ↑」となる。
また、本例においても画面桁数Ｌｇを“１０”として説明したが、必ずしも“１０”に限る必要はなく、又行頭の空白コードの数も２個に限らず、１個又は３個以上であってもよい。
【０１３１】
さらに、以上の第２実施形態の各例において、移動や複写などの対象として行頭空白を含む文字列が指定された時、該行頭空白コードを削除して格納し、該文字列を展開する際には展開先のフォームに合わせて処理する構成としてもよい。
【０１３２】
また、上述した第２実施形態を、上述した第１実施形態と組み合わせて実施することも可能である。
例えば、上述した第２実施形態の各例では、画面の桁数を基準にして、行端を揃えているようにしているが、元のテキストの行端が改行コードによって揃えられている場合には、画面の桁数の代わりに、行末桁位置記憶部１に記憶されている桁数を利用して、行端を揃えるようにしてもよい。
【０１３３】
また、空白コードの代わりに、タブコードを使用して行頭を揃えるようにしてもよい。また、さらには、元のテキストに、特定のコードで始まる行が挿入される場合などに、該挿入行の該特定コードの種類に応じて、インデントする際の空白数を変更するようにしてもよい。該特定コードは、例えば、箇条書きの項の始まりを示すコード、数字を示すコードとセパレータを示すコードとから成るコード列、中黒（・）を示すコード等である。
【０１３４】
また、テキストのある範囲において、特定の桁位置を少なくとも１つ指定して、その特定桁位置に合わせて、左端の空白数を一括して調整するようにしてもよい。
【０１３５】
一方、図２７はフロッピーディスクやＣＤ−ＲＯＭ等の記録媒体１５に本実施形態のテキスト編集システムのプログラムを記憶し、記録媒体１５をコンピュータ２０のドライブ２１に挿入することにより本実施形態の処理を実現するシステムである。また、インターネットやＬＡＮ、ＷＡＮ等のネットワークを介してプログラムを、プログラム提供者３０からコンピュータ２０にダウンロードして本実施形態の処理を実現する構成としてもよい。
【０１３６】
【発明の効果】
以上説明したように、本発明のテキスト編集システムによれば、改行コードの位置により、テキストの行末桁位置を設定し、挿入や削除が行われた場合でも、改行コードの位置を固定して、常に上記行末桁位置に右端を設定でき、汎用性の優れたテキストを編集することができる。
【０１３７】
したがって、例えばパソコン通信や電子メール等が中心となる社会において、重要な要素である情報のポータビリティーに優れたテキストを提供することができる。
【０１３８】
また、行頭に空白コードが存在する場合には、挿入や削除が行われた後行うテキスト編集処理において、当該行の行頭に元のテキストと同数の空白コードが配置されるようにテキストを自動編集し、柔軟性のあるインデント機能を実現するものである。このように構成することにより、自動的に所定数の空白コードが各行の前に固定的に配置され、テキストにおける挿入や削除等の処理を操作性よく行うことができる。
【図面の簡単な説明】
【図１】第１実施形態におけるテキスト編集システムの構成図である。
【図２】第１実施形態のテキスト編集システムをコンピュータに行わせるシステム構成図である。
【図３】第１実施形態における挿入後の編集処理を説明するフローチャートである。
【図４】ファイルのデータ構成図である。
【図５】元のテキストデータを説明する図である。
【図６】（ａ）は元のテキストデータを示し、（ｂ）は従来の編集システムで得られる結果を示し、（ｃ）は本実施形態のシステムのテキスト編集結果を示す図である。
【図７】挿入処理後の編集過程で、第３行目の文字数が丁度５文字となった場合、その直後に改行コードを新たに生成する処理を説明する図である。
【図８】図７と同様な例の場合に、当該改行コードの前に空白コードを挿入する例を説明する図である。
【図９】第１実施形態における削除処理後のテキスト編集処理の第１の例を説明するフローチャートである。
【図１０】ファイルのデータ構成図である。
【図１１】（ａ）は元のテキストデータを示し、（ｂ）は従来の編集システムで得られる結果を示し、（ｃ）は本実施形態のシステムのテキスト編集結果を示す図である。
【図１２】連続する削除処理を説明する図である。
【図１３】第１実施形態における削除処理後のテキスト編集処理の第２の例を説明するフローチャートである。
【図１４】図１３のフローチャートの処理の第１の具体例を示す図である。
【図１５】図１３のフローチャートの処理の第２の具体例を示す図である。
【図１６】挿入処理後の高速化処理を説明するフローチャートである。
【図１７】挿入処理後の高速化処理の具体例を示す図である。
【図１８】第２実施形態のテキスト編集システムの構成図である。
【図１９】第２実施形態における挿入処理後の編集処理を説明するフローチャートである。
【図２０】ファイルのデータ構成図である。
【図２１】元のテキストデータを説明する図である。
【図２２】（ａ）は元のテキストデータを示し、（ｂ）は従来の編集結果を示し、（ｃ）は本例のテキスト編集結果を示す図である。
【図２３】挿入処理の結果、第４行目の行頭に１文字「Ｘ」が位置する場合の処理例である。
【図２４】第２実施形態における削除処理後の編集処理を説明するフローチャートである。
【図２５】ファイルのデータ構成図である。
【図２６】空白コードの削除処理を説明する図である。
【図２７】本発明のテキスト編集システムを記録媒体に記録したプログラムによって実現するシステム構成図である。
【符号の説明】
１  行末桁位置記憶部
２  改行コード位置検出部
３  改行コード位置修正部
４  ファイル
５  ＣＰＵ
５ａ  外部記憶装置
５ｂ  表示制御部
５ｃ  ディスプレイ
６  ＲＯＭ
７  ＲＡＭ
８  空白コード検出部
９  改行コード検出手段
１０  空白コード位置修正手段
１１  ファイル
【図１】
0003886661.tif 000002
【図２】
0003886661.tif 000003
【図３】
0003886661.tif 000004
【図４】
0003886661.tif 000005
【図５】
0003886661.tif 000006
【図６】
0003886661.tif 000007
【図７】
0003886661.tif 000008
【図８】
0003886661.tif 000009
【図９】
0003886661.tif 000010
【図１０】
0003886661.tif 000011
【図１１】
0003886661.tif 000012
【図１２】
0003886661.tif 000013
【図１３】
0003886661.tif 000014
【図１４】
0003886661.tif 000015
【図１５】
0003886661.tif 000016
【図１６】
0003886661.tif 000017
【図１７】
0003886661.tif 000018
【図１８】
0003886661.tif 000019
【図１９】
0003886661.tif 000020
【図２０】
0003886661.tif 000021
【図２１】
0003886661.tif 000022
【図２２】
0003886661.tif 000023
【図２３】
0003886661.tif 000024
【図２４】
0003886661.tif 000025
【図２５】
0003886661.tif 000026
【図２６】
0003886661.tif 000027
【図２７】
0003886661.tif 000028