(57)【要約】【課題】特許明細書などの符号付文書において、要素名に対応する符号を素早く入力できるプログラムを提供する。【解決手段】ワープロ等の文書編集中に適宜の操作が行われた場合に、少なくとも以下の（１）〜（５）の手順を行う。（１）文書の編集位置に入力されている文字列から要素名（選択図では、「車輪」）を抽出する。（２）抽出された要素名（「車輪」）を、文書から検索する。（３）検索された位置を含む文字列を文書から取り出して解析し、前記（１）で抽出された要素名（「車輪」）に対応する符号（「６」，「７」）を取得する。（４）符号が複数得られた場合は、その符号を、並べて選択可能に画面に表示する（選択図は、表示された状態）。（５）ユーザに選択された符号を、文書の編集位置に自動入力する。【選択図】        図１１
2005025265.tif 000002
【特許請求の範囲】
【請求項１】
文書編集中においてユーザのトリガ操作がされたときに、少なくとも以下の（ａ）〜（ｄ）の手順を行うことを特徴とする、文字列の入力のためのプログラム。
（ａ）  文書の編集位置に入力されている文字列から要素名を抽出する。
（ｂ）  （ａ）で抽出された要素名を、文書から検索する。
（ｃ）  （ｂ）で検索された位置を含む文字列を文書から取り出して解析し、（ａ）で抽出された要素名に対応する符号を取得する。
（ｄ）  （ｃ）で得られた符号に基づき、文書の編集位置に要素名と符号が入力されている状態となるように、文書に入力されている文字列を変更する。
【請求項２】
請求項１のプログラムにおいて、
前記（ｂ）において要素名が文書から複数検索されたときには、それぞれの検索位置において、前記（ａ）で抽出された要素名に対応する符号を取得するようにし、
取得された符号同士で不一致がある場合には、互いに不一致である符号を並べて画面に表示してユーザに選択させ、選択された符号に基づき前記（ｄ）の処理を行うことを特徴とする、文字列の入力のためのプログラム。
【請求項３】
文書編集中においてユーザのトリガ操作がされたときに、少なくとも以下の（ａ）〜（ｄ）の手順を行うことを特徴とする、文字列の入力のためのプログラム。
（ａ）  文書の編集位置に入力されている文字列から要素名の一部を抽出する。
（ｂ）  （ａ）で抽出された要素名の一部を、文書から検索する。
（ｃ）  （ｂ）で検索された位置を含む文字列を文書から取り出して解析し、（ａ）で抽出された要素名の一部を含む要素名と、当該要素名に対応する符号を取得する。
（ｄ）  （ｃ）で得られた要素名と符号に基づき、文書の編集位置に完全な要素名と符号が入力されている状態となるように、文書に入力されている文字列を変更する。
【請求項４】
請求項３のプログラムにおいて、
前記（ｂ）において要素名の一部が文書から複数検索されたときには、それぞれの検索位置において、前記（ａ）で抽出された要素名の一部を含む要素名と、当該要素名に対応する符号を取得するようにし、
取得された要素名と符号の組同士で不一致がある場合には、互いに不一致である要素名と符号を並べて画面に表示してユーザに選択させ、選択された要素名と符号に基づき前記（ｄ）の処理を行うことを特徴とする、文字列の入力のためのプログラム。
【請求項５】
文書編集中においてユーザのトリガ操作がされたときに、少なくとも以下の（ａ）〜（ｄ）の手順を行うことを特徴とする、文字列の入力のためのプログラム。
（ａ）  文書の編集位置に入力されている文字列から符号を抽出する。
（ｂ）  （ａ）で抽出された符号を、文書から検索する。
（ｃ）  （ｂ）で検索された位置より前側の文字列を文書から取り出して解析し、（ａ）で抽出された符号に対応する要素名を取得する。
（ｄ）  （ｃ）で得られた要素名に基づき、文書の編集位置に要素名と符号が入力されている状態となるように、文書に入力されている文字列を変更する。
【請求項６】
請求項５のプログラムにおいて、
前記（ｂ）において符号が文書から複数検索されたときには、それぞれの検索位置において、前記（ａ）で抽出された符号に対応する要素名を取得するようにし、
取得された要素名同士で不一致がある場合には、互いに不一致である要素名を並べて画面に表示してユーザに選択させ、選択された要素名に基づき前記（ｄ）の処理を行うことを特徴とする、文字列の入力のためのプログラム。
【請求項７】
文書編集中においてユーザのトリガ操作がされたときに、予め指定された語が文書の編集位置にあったときは、当該編集位置から文書先頭側に向かって符号を検索しながら要素名と符号の組を取得し、取得された当該組が前記語の後に続けて入力されている状態となるように、文書に入力されている文字列を変更することを特徴とする、文字列の入力のためのプログラム。
【請求項８】
文書編集中においてユーザのトリガ操作がされたときに、予め指定された語が文書の編集位置にあったときは、当該編集位置から文書先頭側に向かって符号を検索しながら要素名と符号の組を複数取得し、取得された当該組を並べて選択可能に画面に表示し、ユーザによって選択された組が前記語の後に続けて入力されている状態となるように、文書に入力されている文字列を変更することを特徴とする、文字列の入力のためのプログラム。
【請求項９】
請求項７または請求項８に記載のプログラムにおいて、
予め指定された語として、「この」「該」「前記」「上記」のうち少なくとも何れか一つを含むことを特徴とする、
文字列の入力のためのプログラム。
【請求項１０】
請求項１から請求項９までの何れか一項に記載のプログラムであって、
前記トリガ操作は、キーボードのキーを押す操作であることを特徴とする、
文字列入力のためのプログラム。
【請求項１１】
請求項１０に記載のプログラムであって、前記トリガ操作で押されるキーは、キーボードのホームポジションに指を置いたときに人差し指が位置する段のキーの何れかを少なくとも含むことを特徴とする、
文字列入力のためのプログラム。
【請求項１２】
請求項１から請求項９までの何れか一項に記載のプログラムであって、
文書に入力されている文字列を変更する処理が終わった後、文書の編集位置は、要素名と符号の組の直後に自動的に移動されていることを特徴とする、
文字列入力のためのプログラム。
【請求項１３】
請求項２、請求項４、請求項６、または請求項８に記載のプログラムであって、前記選択は、キーボードのキー入力によって行うことが可能とされていることを特徴とする、文字列入力のためのプログラム。
【請求項１４】
請求項２、請求項４、請求項６、または請求項８に記載のプログラムであって、少なくとも前記選択の際に、前記編集位置における要素名、要素名の一部、符号、あるいは予め指定された語の部分を、通常と異なる視覚的態様で表示することを特徴とする、文字列入力のためのプログラム。
【請求項１５】
請求項２、請求項４、請求項６、または請求項８に記載のプログラムであって、
画面に並べて選択可能に表示される文字列は、その検索位置が前記編集位置に近いものが上に来るように、並べて表示されることを特徴とする、文字列入力のためのプログラム。
【請求項１６】
与えられた文字列から要素名または要素名の一部に相当する文字列を抽出するプログラムであって、与えられた文字列の末尾側から先頭側に向かって、一文字にも二文字以上にもマッチ可能な第一のパターンにマッチするか否かを判定してゆき、初めてマッチした位置を要素名と要素名でない部分との境界であるとして文字列を抽出することを特徴とする、
文字列抽出のためのプログラム。
【請求項１７】
請求項１６に記載の文字列抽出のためのプログラムであって、
前記第一のパターンが正規表現で表されていることを特徴とする、
文字列抽出のためのプログラム。
【請求項１８】
請求項１６又は請求項１７に記載の文字列抽出のためのプログラムであって、
前記第一のパターンは、「常時」にはマッチし、「時」にはマッチしないパターンであることを特徴とする、
文字列抽出のためのプログラム。
【請求項１９】
請求項１６から請求項１８までの何れか一項に記載の文字列抽出のためのプログラムであって、
与えられた文字列のうち、第二のパターンにマッチする部分は、前記第一のパターンにマッチするか否かの判定を行わないことを特徴とする、
文字列抽出のためのプログラム。
【請求項２０】
請求項１９に記載の文字列抽出のためのプログラムであって、
前記第二のパターンが正規表現で表されていることを特徴とする、
文字列抽出のためのプログラム。
【請求項２１】
請求項１９又は請求項２０に記載の文字列抽出のためのプログラムであって、
前記第一のパターンは「の」に少なくともマッチするパターンであり、
前記第二のパターンは「第１の」に少なくともマッチするパターンであることを特徴とする、
文字列抽出のためのプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、文書を入力する際の入力の利便性を向上するプログラムに関する。
【０００２】
【従来の技術】
特許出願（特に機械系の特許出願）の願書に添付する明細書において、〔発明の実施の形態〕の欄で発明の構成を説明する際には、「この機体フレーム２は、」等というように、要素名（部品名，部材名，装置名）の直後に参照符号（以下「符号」という）を記載することが殆どである。一方、特許出願の願書に添付する図面においては、そこに描かれた部材（ここでは、機体フレーム）に、対応する符号２を引出し線とともに付すことになっている。
【０００３】
この符号は、複雑な発明についての明細書等では１００種類以上に達することもあり、発明者や弁理士、特許事務所の所員等の明細書の書き手としては、要素名と符号との対応関係を頭の中で正確に構築しきれない場合がある。
【０００４】
この結果、「第一歯車１５と第二歯車１５とは、・・・」といったように、別々の部品に同一の符号をつける誤りを犯したりする。また、「この車両はハンドルコラム１６を備え、当該ハンドルコラム１７上にステアリングハンドル１８を備えている。」といったように、同一の部品に異なる符号を付ける誤りを犯したりする。
【０００５】
以上のような誤りを未然に防ぐために、明細書の書き手の中には、「要素名（部品名）−符号対応表」なるものを作って対応する者がいる。これは、明細書を書き進めて新しい符号を使うことになれば随時、別紙に、『１…乗用車両、２…機体フレーム、３…エンジン、・・・』といったように、使用した符号と要素名とを一対一で対応付けて書き込むようにするというものである。明細書を書く際に上記対応表を適宜参照すれば、上述のような誤りは未然に防ぐことができるし、上記誤りを犯したとしてもミスを発見できる確率を高めることができる。
【０００６】
上記「要素名（部品名）−符号対応表」の作り方は、明細書の書き手によって様々である。
例えば、適宜の用紙に手書きで書き込む方法もある。あるいは、近時はパソコン上で動作するワードプロセッサアプリケーションに複数の文書を同時に開くことが可能なものが増えてきていることから、明細書としての文書と別に対応表用文書を開いて、対応表を文書として作成する等の方法を採用する者もいる。
【０００７】
特許文献１は、符号を付加した多数の単語を使用する文書から、その単語を含む文字列を、これに付加した符号とともに抽出する装置を開示する。
この文献１に開示される装置は、当該装置の抽出結果をチェックすることで、上述のような誤りを事後的に簡便かつ自動的に発見できる点で優れている。
【０００８】
特許文献２は、文書中の特定語句に対し自動的に符号を付ける文書処理方法や文書処理装置を開示する。
この文献２に開示される技術は、能率よく、かつミスなく文書を作成できる点で優れている。
【０００９】
【特許文献１】
特開平９−２５９１４８号公報
【特許文献２】
特開平１０−２３２８６７号公報
【００１０】
【発明が解決しようとする課題】
しかし、上記特許文献１の構成は、あくまでも明細書がひととおり完成してから上記抽出作業を行わせて事後的チェックを行うことを主眼に開発されたものであり、明細書の作成途中で何度も全ての符号について検索・抽出を行わせるのは、パソコンのＣＰＵの負荷が大きく抽出作業に時間も掛かり、また抽出結果のチェックに明細書の書き手の時間がとられるデメリットがあり、現実的ではない。
【００１１】
言い換えれば、上記特許文献１の構成は、明細書を作成している途中で簡便に符号付けミスを発見できるような目的には、必ずしも適合的ではなかった。
【００１２】
また、上記特許文献２の構成は、最初に符号抜きの状態の明細書を作成しておいてから一度に符号を付けるというものであり、どの要素名にどの符号を対応して付けるかについては、明細書の書き手の自由度が小さかった。
従って、例えば、明細書の第一実施形態の部分では１００番台の符号を付し、第二実施形態の部分では２００番台の符号を付す、というようなことは、この文献２の構成では難しかったのである。
【００１３】
また、出願原稿の書き方として、図面に最初に符号を決定して付けてしまい、それから明細書を書き進めるようなスタイルをとることもあるが、上記文献２の構成では、図面に付したとおりに明細書に自動的に符号を付するのはほぼ不可能であった。加えて、「二つの装置のうち一方の装置１と他方の装置２」というように、「装置」という同一の要素名に違う符号を意図的に割り当てることは上記構成では不可能であって、明細書の書き方の自由度がそれだけ阻害されていると言わざるを得なかった。
【００１４】
更には、この文献２の構成では、一旦符号を付した原稿に加除訂正を行い、新たに符号を振り直すのが困難であった。例えば実施形態追加型の国内優先権を主張するような場合、元の出願の原稿を流用してそれに新たな実施形態を書き加えて出願原稿とすることがあるが、新たに書き加えた部分について元の出願の符号と重複しないように符号を付すことは、困難かつ煩雑であった。
【００１５】
加えて上記文献２の構成では、符号を付すべき名称に“＠”や“￥”等の特別な識別記号を追加した状態の明細書を作成する必要があり、これは明細書原稿の作成作業を煩雑にするものであって、誤字脱字の増大原因にもなっていた。
【００１６】
【課題を解決するための手段】
本発明の解決しようとする課題は以上の如くであり、次にこの課題を解決するための手段を説明する。
【００１７】
即ち、請求項１においては、文書編集中においてユーザのトリガ操作がされたときに、少なくとも以下の（ａ）〜（ｄ）の手順を行う（（ａ）文書の編集位置に入力されている文字列から要素名を抽出する。（ｂ）（ａ）で抽出された要素名を、文書から検索する。（ｃ）（ｂ）で検索された位置を含む文字列を文書から取り出して解析し、（ａ）で抽出された要素名に対応する符号を取得する。（ｄ）（ｃ）で得られた符号に基づき、文書の編集位置に要素名と符号が入力されている状態となるように、文書に入力されている文字列を変更する。）ものである。
【００１８】
なお、本明細書において「要素名」とは、文書において符号を伴って使われるべき名称をいう。
【００１９】
請求項２においては、前記（ｂ）において要素名が文書から複数検索されたときには、それぞれの検索位置において、前記（ａ）で抽出された要素名に対応する符号を取得するようにし、取得された符号同士で不一致がある場合には、互いに不一致である符号を並べて画面に表示してユーザに選択させ、選択された符号に基づき前記（ｄ）の処理を行うものである。
【００２０】
請求項３においては、文書編集中においてユーザのトリガ操作がされたときに、少なくとも以下の（ａ）〜（ｄ）の手順を行う（（ａ）文書の編集位置に入力されている文字列から要素名の一部を抽出する。（ｂ）（ａ）で抽出された要素名の一部を、文書から検索する。（ｃ）（ｂ）で検索された位置を含む文字列を文書から取り出して解析し、（ａ）で抽出された要素名の一部を含む要素名と、当該要素名に対応する符号を取得する。（ｄ）（ｃ）で得られた要素名と符号に基づき、文書の編集位置に完全な要素名と符号が入力されている状態となるように、文書に入力されている文字列を変更する。）ものである。
【００２１】
請求項４においては、前記（ｂ）において要素名の一部が文書から複数検索されたときには、それぞれの検索位置において、前記（ａ）で抽出された要素名の一部を含む要素名と、当該要素名に対応する符号を取得するようにし、取得された要素名と符号の組同士で不一致がある場合には、互いに不一致である要素名と符号を並べて画面に表示してユーザに選択させ、選択された要素名と符号に基づき前記（ｄ）の処理を行うものである。
【００２２】
請求項５においては、文書編集中においてユーザのトリガ操作がされたときに、少なくとも以下の（ａ）〜（ｄ）の手順を行う（（ａ）文書の編集位置に入力されている文字列から符号を抽出する。（ｂ）（ａ）で抽出された符号を、文書から検索する。（ｃ）（ｂ）で検索された位置より前側の文字列を文書から取り出して解析し、（ａ）で抽出された符号に対応する要素名を取得する。（ｄ）（ｃ）で得られた要素名に基づき、文書の編集位置に要素名と符号が入力されている状態となるように、文書に入力されている文字列を変更する。）ものである。
【００２３】
請求項６においては、前記（ｂ）において符号が文書から複数検索されたときには、それぞれの検索位置において、前記（ａ）で抽出された符号に対応する要素名を取得するようにし、取得された要素名同士で不一致がある場合には、互いに不一致である要素名を並べて画面に表示してユーザに選択させ、選択された要素名に基づき前記（ｄ）の処理を行うものである。
【００２４】
請求項７においては、文書編集中においてユーザのトリガ操作がされたときに、予め指定された語が文書の編集位置にあったときは、当該編集位置から文書先頭側に向かって符号を検索しながら要素名と符号の組を取得し、取得された当該組が前記語の後に続けて入力されている状態となるように、文書に入力されている文字列を変更するものである。
【００２５】
請求項８においては、文書編集中においてユーザのトリガ操作がされたときに、予め指定された語が文書の編集位置にあったときは、当該編集位置から文書先頭側に向かって符号を検索しながら要素名と符号の組を複数取得し、取得された当該組を並べて選択可能に画面に表示し、ユーザによって選択された組が前記語の後に続けて入力されている状態となるように、文書に入力されている文字列を変更するものである。
【００２６】
請求項９においては、予め指定された語として、「この」「該」「前記」「上記」のうち少なくとも何れか一つを含むものである。
【００２７】
請求項１０においては、前記トリガ操作は、キーボードのキーを押す操作であるものである。
【００２８】
請求項１１においては、前記トリガ操作で押されるキーは、キーボードのホームポジションに指を置いたときに人差し指が位置する段のキーの何れかを少なくとも含むものである。
【００２９】
請求項１２においては、文書に入力されている文字列を変更する処理が終わった後、文書の編集位置は、要素名と符号の組の直後に自動的に移動されているものである。
【００３０】
請求項１３においては、前記選択は、キーボードのキー入力によって行うことが可能とされているものである。
【００３１】
請求項１４においては、少なくとも前記選択の際に、前記編集位置における要素名、要素名の一部、符号、あるいは予め指定された語の部分を、通常と異なる視覚的態様で表示するものである。
【００３２】
請求項１５においては、画面に並べて選択可能に表示される文字列は、その検索位置が前記編集位置に近いものが上に来るように、並べて表示されるものである。
【００３３】
請求項１６においては、与えられた文字列から要素名または要素名の一部に相当する文字列を抽出するプログラムであって、与えられた文字列の末尾側から先頭側に向かって、一文字にも二文字以上にもマッチ可能な第一のパターンにマッチするか否かを判定してゆき、初めてマッチした位置を要素名と要素名でない部分との境界であるとして文字列を抽出するものである。
【００３４】
請求項１７においては、前記第一のパターンが正規表現で表されているものである。
【００３５】
請求項１８においては、前記第一のパターンは、「常時」にはマッチし、「時」にはマッチしないパターンであるものである。
【００３６】
請求項１９においては、与えられた文字列のうち、第二のパターンにマッチする部分は、前記第一のパターンにマッチするか否かの判定を行わないものである。
【００３７】
請求項２０においては、前記第二のパターンが正規表現で表されているものである。
【００３８】
請求項２１においては、前記第一のパターンは「の」に少なくともマッチするパターンであり、前記第二のパターンは「第１の」に少なくともマッチするパターンであるものである。
【００３９】
【発明の実施の形態】
次に、発明の実施の形態を図面を参照して説明する。
【００４０】
本実施形態のプログラムは、例えば図１に示すようなパーソナルコンピュータで実行される。このパーソナルコンピュータ１は、パソコン本体２と、ディスプレイ３と、キーボード４と、マウス５と、プリンタ６と、を含んで構成される。
【００４１】
図２のブロック図に示すように、パソコン本体２は、ＣＰＵ２１、メインメモリ２２、ハードディスクドライブ２３、フレキシブルディスクドライブ２４等を備えている。ハードディスクドライブ２３の記憶領域には、ワードプロセッサアプリケーション（以下、「ワープロ」）のプログラムや本実施形態の第１〜第４のプログラム等が記憶されており、これらのプログラムは必要に応じて前記メインメモリ２２に読み込まれて、当該プログラムに書いてある手順がＣＰＵ２１によって実行される。
【００４２】
ワープロのプログラムは、ハードディスクドライブ２３やフレキシブルディスクドライブ２４等にファイルとして記憶されている文書データを編集対象文書として読み込み、その内容をディスプレイ３の画面に表示する。ワープロのユーザは、ディスプレイ３に表示されている文書の内容を見ながら、新しい文字列を当該文書に追加したり、文書の一部の文字列を削除したり、文書をプリンタ６で印刷したり、修正後の文書をハードディスクドライブ２３に再記憶させたりすることができる。
【００４３】
ディスプレイ３の表示画面の一例が、図３に示される。ワープロのプログラムは通常、文書の内容とともに、文書の編集位置を示すカーソル（キャレットともいう）ｃを、ディスプレイ３に併せて表示する。このカーソルの形態は、アンダースコア（下線）であったり、矩形であったり様々であるが、本実施形態では、カーソルｃは、適当な時間間隔をおいて点滅する縦棒状の図形である。
【００４４】
カーソルｃの位置は、ユーザがキーボード４のカーソル移動キー（↑↓←→）を押したり、あるいは、マウス５を操作してディスプレイ３に表示された文書の適当の位置にマウスカーソル（図示せず）を合わせてクリックすることにより、変更することができる。
【００４５】
そして、ユーザがキーボード４の適当な文字キーを入力すると、押された文字キーに対応する文字が、カーソルｃが表示されている位置に挿入される形で入力される。また、キーボード４の削除キーを押すと、カーソルｃの位置の文字が消去される。このようにして、文書の内容を編集することができる。
【００４６】
本実施形態の第１〜第４のプログラムは、以上のような機能を有するワープロのプログラムにおいて、その機能を拡張する追加プログラムモジュールとして提供される。このようなプログラムモジュールは、アドイン或いはプラグインと呼ばれることがある。
【００４７】
しかしながらこれに限るものではなく、ワープロのプログラムの不可分な一部としての形態で提供されても良いし、文書の内容を保存したファイル（文書ファイル）にマクロプログラムとして埋め込まれたり、文書の雛形のファイル（テンプレートファイル）にマクロプログラムとして埋め込まれたりする形態で提供されても良い。
【００４８】
本実施形態の第１〜第４のプログラムは、例えばフレキシブルディスクやＣＤ−ＲＯＭ等の適宜の記録媒体に記録され、あるいはインターネットを介してサーバーコンピュータからダウンロードされて、図１に示すパソコン本体２にインストールされて使用される。このインストール作業によって、本実施形態のプログラムが、パソコン本体２のハードディスクドライブ２３にコピーされ記憶される。
【００４９】
プログラム言語は、例えばベーシックやＣ言語等、任意の言語で記述することができる。
【００５０】
〔◆第１のプログラム；要素名（の一部）→要素名＋符号〕
次に、本実施形態の第１のプログラムを説明する。
ワープロによる文書編集中に、上記図３の状態からユーザが、キーボード４から「この機体フレーム」という文字を打ち込んだとする。この場合は図４に示すように、文書に「この機体フレーム」の文字が追加され、カーソルｃは「ム」のすぐ後ろに移動する。
【００５１】
この状態でユーザは、特定の要素名（部材名、部品名）としての上記「機体フレーム」に対応する符号を入力したい場合に、キーボード４の特定のキーを押す（トリガ操作）。このトリガ操作は本実施形態では、［Ｃｔｒｌ］キーを押しながら［Ｊ］キーを押す操作（以下、［Ｃｔｒｌ］＋［Ｊ］と表記）としているが、これに限るものでもない。
【００５２】
ワープロのプログラム側では、上記［Ｃｔｒｌ］＋［Ｊ］のトリガ操作がなされた場合には、前記拡張プログラムモジュールの第１のプログラムを実行する旨、予め設定されている。従って、このようなトリガ操作が行われた場合、ワープロのプログラムは拡張プログラムモジュールの内容をハードディスクドライブ２３からメインメモリ２２に読み込み、プログラムを実行する。
【００５３】
次に、第１のプログラムのメインフローを、図５のフローチャートを参照しながら説明する。
【００５４】
トリガ操作が行われて本プログラムが実行されると、先ずステップＳ１で、文書の編集位置（カーソルｃの位置）から適当な長さの文字列が取り出され、これが要素名抽出サブルーチンに渡される。この結果、要素名（又は要素名の一部）が抽出され、当該抽出結果が文字列変数ｐ１に記憶される（Ｓ１）。
【００５５】
上述の要素名抽出サブルーチンは、要素名（又はその一部）を含む文字列を引数として受け取り、これから要素名（又はその一部）のみの文字列を抜き出して、戻り値として返すサブルーチンである。この要素名抽出サブルーチンの詳細は後述する。
【００５６】
次に、変数ｐ１の内容が空文字列か否かを判定する（Ｓ２）。空文字列であれば、編集位置に要素名も要素名の一部も入力されていなかった場合であるので、何も入力せず、終了する。
【００５７】
ステップＳ２の判定で変数ｐ１が空文字列でなかった場合は、文字列変数ｗを初期化する（Ｓ３）。この変数ｗは、文書から抽出された中で、条件に合う要素名と符号の組を重複なく記憶させておくためのものである。
【００５８】
次に、上記ステップＳ１で得られた変数ｐ１の内容（即ち、抽出された要素名）を、文書から検索する（Ｓ４）。変数ｐ１が見つかると、その検索位置を含む範囲の文字列を文書から取り出して、文字列変数ｙにコピーする（Ｓ５）。この変数ｙの内容を後のステップＳ６〜Ｓ１１で解析して、ステップＳ１で得られた要素名に対応する符号を得ることになる。
【００５９】
次に、文字列変数ｙの中から符号を検索する（Ｓ６）。本実施形態では、符号の検索のために、正規表現（Ｒｅｇｕｌａｒ  Ｅｘｐｒｅｓｓｉｏｎ）のパターンを用いている。例えば、図６に示す正規表現のパターンを用いることができる。
【００６０】
この図６のパターンは、数字、アルファベット、ギリシャ文字の符号（ダッシュが付加される場合も含む）にマッチし、例えば、「１」や、「ａ２」や、「α’」等にマッチする。
【００６１】
正規表現のパターンによる検索を行わせるには、例えば、図６の正規表現パターンを非決定性オートマトンのデータ構造へ翻訳し、この非決定性オートマトンを文書内容のテキストに対して動作させることで可能である。本実施形態のプログラムは、ワープロのプログラムが前記正規表現を使った検索・置換機能を備えていることを前提に、その検索機能を呼び出すことで、ステップＳ６の検索を実現させている。勿論、この第１のプログラムが記述されている拡張プログラムモジュール自体に正規表現の検索・置換機能を独自に持たせたり、正規表現の機能を実現する拡張プログラムモジュールをワープロのプログラムに組み込むようにすれば、正規表現をサポートしないワープロでも上記判定を行わせることが可能である。
【００６２】
符号が検索されると、検索された符号を文字列変数ｐ３に記憶する（Ｓ７）。また、検索されたその符号の位置より前側の文字列を文字列変数ｙから取り出し、この取り出した文字列を前記要素名抽出サブルーチンに渡して要素名を抽出し、それを文字列変数ｐ２に記憶する（Ｓ８）。
【００６３】
次に、変数ｐ２が変数ｐ１と全く一致しているか、少なくとも変数ｐ２の先頭側に変数ｐ１が一致しているか、が判定される（Ｓ９）。一致していない場合はステップＳ６に戻り、次の符号の検索を行う。
【００６４】
一致している場合は、前記ステップＳ７で記憶された符号の内容が、前記ステップＳ１で抽出された要素名（要素名の一部）に対応したものであることになる。
従って、この場合は、次に変数ｗの内容を調べ、変数ｐ２の内容と変数ｐ３の内容の組が既に変数ｗに存在していないか、を判定する（Ｓ１０）。存在していない場合には、変数ｗに、変数ｐ２の内容と変数ｐ３の内容の組を追加して記憶し（Ｓ１１）、ステップＳ６に戻って次の符号の検索を行う。存在していた場合は、何もせずステップＳ６に戻り、次の符号の検索を行う。
【００６５】
ステップＳ６において文字列変数ｙから検索される全ての符号について、ステップＳ７〜Ｓ１１の一連の処理が行われる。変数ｙの内容から全ての符号が検索され、ステップＳ６において符号がもう見つからなくなると、ステップＳ４に戻って、再び文書から変数ｐ１を検索する。
【００６６】
前記ステップＳ５〜Ｓ１１の一連の処理は、文書の内容から変数ｐ１が検索される毎に行われる。全ての変数ｐ１の内容が検索され、ステップＳ４において文書からｐ１の内容がもう見つからなくなると、以下に説明するステップＳ１２以降の処理を行う。
【００６７】
ステップＳ１２では、今までの処理において変数ｗに記憶された要素名と符号の組の数が判定される。
【００６８】
０組であれば、文書中から適合する要素名と符号の組を見つけられなかったことになるので、何もせず終了する。
１組であれば、その変数ｗに記憶されている要素名と符号の組が編集位置に入力されている状態となるように、文書に入力されている文字列をプログラム側で自動的に変更する（Ｓ１３）。
２組以上であれば、その変数ｗに記憶されている要素名と符号の組を、並べて画面に表示し、ユーザの選択待ちの状態になる（Ｓ１４）。要素名と符号の組がユーザによって選択されると、その選択された要素名と符号の組が編集位置に入力されている状態となるように、文書に入力されている文字列をプログラム側で自動的に変更する（Ｓ１５）。
【００６９】
以上がメインルーチンであり、次に、要素名抽出サブルーチンについて説明する。
【００７０】
このサブルーチンは、引数として文字列を受け取って、その末尾側から抽出した要素名（又はその一部）の文字列を戻り値として返すサブルーチンである。要素名を抽出できなかった場合は、空文字列を戻り値として返す。
【００７１】
要素名抽出サブルーチンのフローは図７に示され、このサブルーチンは、呼び出されると先ず、引数として渡された文字列を文字列変数ｑにコピーして記憶させる（Ｓ１０１）。
【００７２】
次に、この文字列変数ｑについて、正規表現による所定のパターン（第一のパターン）にマッチするかどうかを判定する（Ｓ１０２）。この所定のパターンとは、要素名（部品名）を通常は構成しない文字あるいは文字列を列挙したものであって、例えば図８のように表される。このパターンは、「の」「は」「い」「る」「ら」「や」「つ」「み」等の平仮名や、「、」「。」「＝」等の記号、「該」「略」「各」「上記」等の接頭語、「結局」「若干」「常時」「勿論」等の副詞、「平成」「特許文献」「実施例」等の要素名を構成しないことが予め判っている名詞、に少なくともマッチする。このパターンは上述のとおり、一文字（「の」、「。」）にも、二文字以上（「結局」、「実施例」）にも、マッチ可能である。
【００７３】
文字列変数ｑが上記正規表現のパターンとマッチするかを調べるには、例えば、当該正規表現を非決定性オートマトンのデータ構造へ翻訳し、この非決定性オートマトンを文字列変数ｑの内容に対して動作させることで可能である。
【００７４】
前記パターンの末尾にはドル記号（＄）が付いているが、これは、正規表現において、［文字列の末尾にマッチする］という意味の特殊文字（メタ文字）である。即ち、文字列変数ｑの末尾に前記「の」「は」「。」「上記」「結局」等が現れるときに、前記パターンがマッチすることになる。また、上記パターンの「￥ｎ」「￥ｒ」は改行文字を意味する。
【００７５】
上記サブルーチンでは、上記パターンにマッチするまで、変数ｑの末尾側を一文字ずつ削除しながらループし（Ｓ１０２〜Ｓ１０３）、上記処理を反復する。即ち、このステップＳ１０２〜Ｓ１０３の処理で、引数として与えられた文字列の末尾側から先頭側に向かって、前記第一のパターンにマッチするか否かを判定してゆくことになる。
【００７６】
上記パターンにマッチした場合は、上記ループを抜けるとともに、マッチしたときの変数ｑの文字数分だけ、当初に引数として渡された文字列の先頭側を削除し、残った文字列（即ち、マッチした位置から末尾側の文字列）を、前記サブルーチンは戻り値として返す（Ｓ１０４）。即ち、第一のパターンに初めてマッチした位置が、要素名と要素名でない部分との境界であるとして、当該境界より末尾側の文字列を戻り値として返すのである。この戻り値が抽出結果になる。
【００７７】
次に、図４の例でプログラムが実行された場合、上記第１のプログラムが実際にどのように動作するのか、より詳細に説明する。
【００７８】
図４の状態で［Ｃｔｒｌ］＋［Ｊ］のトリガ操作がされた場合、本プログラムは図５のフローのステップＳ１で、文書の編集位置に入力されている文字列を取り出す。具体的には、文書におけるカーソルｃの現在位置の前側（文書先頭側）から適当な長さの文字列を取り出し、適当な文字列変数（ここでは、文字列変数ｘ）に記憶する。図４の状態から［Ｃｔｒｌ］＋［Ｊ］が押された場合、カーソルｃの位置の前側８文字、「この機体フレーム」という文字列が取り出され、この内容が文字列変数ｘに記憶される。
【００７９】
文書からどれだけの長さの文字列を取り出すかは、抽出できる要素名の最大文字数に影響する。本実施形態では説明を簡素化するために８文字としているが、「アクチュエータユニットアッセンブリ」（１７文字）のような長い要素名が使われる場合があることを考慮して、もっと長い文字数を取り出して変数ｘに記憶させるようにしてもよい。実用上は、３０文字もあれば十分である。
【００８０】
次に、取り出されて変数ｘに記憶された文字列「この機体フレーム」から、符号を付けるべき名称（要素名）を抽出することになる。これは、前記要素名抽出サブルーチンに文字列変数ｘの内容（「この機体フレーム」）を引数として渡し、当該サブルーチンを実行することで実現される。
【００８１】
サブルーチンでは図７のフローのステップＳ１０１で、引数として渡された「この機体フレーム」が、文字列変数ｑにコピーされる。次にステップＳ１０２で、この変数ｑが上述の正規表現のパターン（第一のパターン、図８）にマッチするか否かが判定される。今回はマッチしないので、文字列変数ｑの内容は、その末尾側が１文字削除される結果、「この機体フレー」になる（Ｓ１０３）。
【００８２】
ステップＳ１０２〜Ｓ１０３のループが繰り返され、文字列変数ｑの内容が「この機体フレー」→「この機体フレ」→「この機体フ」→「この機体」→「この機」→「この」と変化しながら、それぞれ第一のパターンにマッチするか判定される。これは、引数として与えられた「この機体フレーム」の末尾側から先頭側に向かって、第一のパターンにマッチするか否かを判定していくことと同等である。
【００８３】
そして、文字列変数ｑの内容が「この」となったときに、その内容に「の」が末尾に現れる形となって、上記第一のパターンに初めてマッチする。ここで、初めてマッチしたときにおける文字列変数ｑの長さ（「この」＝２文字）は、実質的に、第一のパターンにマッチした位置を意味することになる。そして、この位置、即ち、「の」と「機」の間の位置が、要素名と要素名でない部分との境界であることが判る。
【００８４】
マッチしたことが判定されれば、ループを抜けるとともに、文字列変数ｑの長さ分だけ、渡された文字列「この機体フレーム」の先頭側を削除する。今回は、変数ｑの内容は「この」＝２文字であるから、２文字分だけ、「この機体フレーム」の先頭側が削除される。結局、前述した境界の位置より末尾側の文字列が残ることになる。こうして残った末尾側の「機体フレーム」が、要素名（又はその一部）であるとして、戻り値として返される（Ｓ１０４）。
【００８５】
以上のように、本実施形態のプログラムは、「この機体フレーム」という文字列変数ｘの内容を前記サブルーチンに引数として渡して当該サブルーチンを実行することで、「機体フレーム」を戻り値として得る。この結果、文書の編集位置から「機体フレーム」という要素名を抽出することができ、この抽出結果であるところの「機体フレーム」が文字列変数ｐ１に記憶される。以上がステップＳ１の処理である。
【００８６】
図５に戻って説明する。ステップＳ２では変数ｐ１の内容が空文字列であるか否かが判定されるが、今回は変数ｐ１の内容は「機体フレーム」であって空文字列でないので、そのままステップＳ３に進む。
【００８７】
なお、変数ｐ１の内容が空文字列となるのは、例えば、「この」と入力したのみでトリガ動作を行った場合である。即ち、「この」を上記要素名抽出サブルーチンに渡しても、当該文字列からは要素名もその一部も抽出することができないので、前記サブルーチンは空文字列を戻り値として返す。この場合は、要素名もその一部も抽出できなかったのであるから、何も入力されず終了することになる。
【００８８】
ステップＳ３では、文字列変数ｗが、適宜の区切り文字（本実施形態では、“＠”）で初期化される（即ち、ｗ  ←「＠」）。区切り文字は“＠”に限らずどのような文字でも良く、２文字以上の文字の組合せであっても良いが、要素名としても符号としても通常使われないような文字（文字の組合せ）とすることが必要である。
【００８９】
次にステップＳ４で、編集対象文書から、上記抽出された要素名「機体フレーム」を検索する。検索範囲は、現在の編集対象文書の文書データから、カーソルｃの位置にある「機体フレーム」を除いた範囲である。
【００９０】
なお、文書の一部のみを検索範囲に設定することも可能である。例えば、カーソルｃより先頭側の文書データからのみ検索し、カーソルｃより末尾側の文書データは検索しないといったようにである。また、文書データそのものから検索を行うのではなく、文書データのコピーを適宜の文字列変数に記憶させ、この文字列変数の内容から検索を行っても差し支えない。
【００９１】
上記例では「機体フレーム」が１行目と２行目の２箇所に記述されているので（図４参照）、ステップＳ４の処理では最初に、１行目の「機体フレーム」が先ず検索される。
【００９２】
次に本プログラムは、検索された「機体フレーム」の位置（図４の第１行目の「機体フレーム」の位置）より、前側と後側の文字を含めて適当な長さの文字列を取り出し、適宜の文字列変数（ここでは、文字列変数ｙ）に記憶する（Ｓ５）。前側・後側の文字を取り出す長さは、適宜定めれば良い。上記例では、例えば、検索された位置の「機体フレーム」に、その前後各９字ずつを含めて、「この乗用車両１は、機体フレーム２にエンジン３を支」というように文書から取り出され、この内容が文字列変数ｙに記憶される。以下のステップＳ６〜Ｓ１１で示すように、この文字列変数ｙの内容を解析することで、「機体フレーム」に対応する符号を得ることになる。
【００９３】
ステップＳ６では、上記文字列変数ｙから符号を検索する。上記変数ｙの内容は「この乗用車両１は、機体フレーム２にエンジン３を支」であるので、符号は最初に「１」が検索される。検索された場合、当該符号の内容を変数ｐ３に記憶させるとともに（Ｓ７）、文字列変数ｙで当該符号が検索された位置より前側から文字列を取り出し、これを文字列変数ｚに記憶する。
【００９４】
具体的には、文字列変数ｚの内容は、「この乗用車両」になる。この文字列変数ｚを前記要素名抽出サブルーチンに引数として渡して当該サブルーチンを実行すると、「乗用車両」が戻り値として得られる。この戻り値は文字列変数ｐ２に記憶される（Ｓ８）。
【００９５】
次に、得られた文字列変数ｐ２の内容（第二文字列）と、前記文字列変数ｐ１の内容と、が比較される（Ｓ９）。ｐ２の内容は「乗用車両」であり、ｐ１の内容は「機体フレーム」であり、両者は一致していない。即ち、ｐ３の内容「１」は、「機体フレーム」に対応する符号ではなかったことになる。従って、ステップＳ６に戻る。
【００９６】
ステップＳ６で、変数ｙの内容（「この乗用車両１は、機体フレーム２にエンジン３を支」）から次の符号を検索すると、次の符号は「２」であって、これがステップＳ７において変数ｐ３に記憶される。また、符号「２」の前側から取り出される文字列（文字列変数ｚの内容）は、「この乗用車両は、機体フレーム」になる。この文字列変数ｚの内容を前記要素名抽出サブルーチンに引数として当該サブルーチンを実行すると、「機体フレーム」が戻り値として得られる。これが変数ｐ２に記憶される。
【００９７】
ステップＳ９で変数ｐ２と変数ｐ１とが比較されるが、変数ｐ２の内容は「機体フレーム」であり、これは、変数ｐ１の内容と完全に一致している（ｐ２＝ｐ１）。これは、ｐ３の内容「２」が、「機体フレーム」に対応する符号ということになる。従って、ステップＳ１０で、変数ｗの内容が調べられる。変数ｗの内容は「＠」であり、「機体フレーム２」（変数ｐ２と変数ｐ３の組）が記憶されていない。従って、変数ｗの末尾側に、「機体フレーム２」と、前記区切り文字「＠」が追加される。変数ｗの内容は、ステップＳ１１の処理の結果、「＠機体フレーム２＠」になる。そうして、ステップＳ６に戻る。
【００９８】
ステップＳ６にて変数ｙの内容（「この乗用車両１は、機体フレーム２にエンジン３を支」）から次の符号を検索すると、次の符号は「３」であって、これが変数ｐ３に記憶される（Ｓ７）。また、文字列変数ｚの内容は「この乗用車両は、機体フレーム２にエンジン」であって、これから要素名「エンジン」が抽出されて変数ｐ２に記憶される（Ｓ８）。しかし、これは「機体フレーム」と一致しないので（Ｓ９）、ｐ３の内容「３」は「機体フレーム」に対応する符号ではないことになるから、ステップＳ６に戻る。
【００９９】
変数ｙの内容から３箇所の符号全てが検索されたので、ステップＳ６において、もう符号は検索できない。従って、ステップＳ４に戻る。
【０１００】
ステップＳ４において、「機体フレーム」は、次に、文書の２行目から検索される。変数ｙの内容は、「持するとともに、該機体フレーム２に前車軸４および後」となる（Ｓ５）。
【０１０１】
ステップＳ６に進み、変数ｙの内容から符号を検索すると、先ず「２」が検索され、これが変数ｐ３に記憶される（Ｓ７）。また、文字列変数ｚの内容は「持するとともに、該機体フレーム」であって、これから要素名「機体フレーム」が抽出されて変数ｐ２に記憶される（Ｓ８）。変数ｐ１と変数ｐ２はいずれも「機体フレーム」で一致しているので（Ｓ９）、ｐ３の内容「２」は「機体フレーム」に対応する符号であることになり、ステップＳ１０に進む。変数ｗの内容は「＠機体フレーム２＠」であり、変数ｐ２と変数ｐ３の組が変数ｗに既に追加され存在している。従って、変数ｗの内容には変更を加えず、ステップＳ６に戻る。
【０１０２】
ステップＳ６で変数ｙの内容から次の符号を検索すると、次の符号は「４」であって、これが変数ｐ３に記憶される（Ｓ７）。また、文字列変数ｚの内容は「持するとともに、該機体フレーム２に前車軸」であって、これから要素名「前車軸」が抽出されて変数ｐ２に記憶される（Ｓ８）。しかし、これは「機体フレーム」と一致しないので（Ｓ９）、ｐ３に記憶されている符号「４」は「機体フレーム」に対応する符号でないことになり、ステップＳ６に戻る。
【０１０３】
ステップＳ６ではもう符号が検索できずステップＳ４に戻り、また、ステップＳ４でも「機体フレーム」は既に２箇所検索したので、もうこれ以上は見つからない。従って、ステップＳ１２に進む。
【０１０４】
ステップＳ１２では、変数ｗの記憶内容が調べられるが、当該内容は「＠機体フレーム２＠」である。即ち、要素名と符号の組が、１つ記憶されている。従って、この要素名と符号が、カーソルｃの位置に入力された状態となるように、プログラム側で自動入力する（Ｓ１３）。
【０１０５】
今回は「機体フレーム」は文書から１行目と２行目の２箇所検索され、その２箇所の検索位置の何れについても、「機体フレーム」に対応する符号として「２」が取得されている。即ち、それぞれの検索位置において取得された符号が何れも「２」であり、不一致がない。本プログラムでは、１行目の「機体フレーム」の検索位置で符号「２」が取得されたときには変数ｗに記憶されるが、更に２行目の「機体フレーム」の検索位置で符号「２」が取得されたときは、改めて同じ内容を変数ｗに重複記憶させないようにする（ステップＳ１０の判断）。従って、変数ｗの内容は「＠機体フレーム２＠」と一組だけ記憶される形となり、ステップＳ１４〜Ｓ１５のようにユーザの選択操作を待たず、「機体フレーム２」が編集位置に入力された状態となるようにプログラム側で自動入力することになる。
【０１０６】
ステップＳ１３での自動入力の態様としては、図９（ａ）のように符号の部分「２」だけを挿入する形で入力しても良いし、図９（ｂ）のように、抽出された文字列（変数ｓ１の内容であるところの「機体フレーム」）を編集位置から削除し、改めて要素名と符号「機体フレーム２」を入力しても良い。
【０１０７】
以上により、ユーザは、要素名「機体フレーム」を打ち込んで［Ｃｔｒｌ］＋［Ｊ］のトリガ操作を行うのみで、当該要素名に対応する符号「２」を自動的に入力させることができる。即ち、従来は、「機体フレーム」という要素名に符号「２」が対応することを頭で記憶しておき、或いは文書の前の部分で逐一確認して、当該符号「２」をキーボード４から打ち込んでいたが、そういう手間は本実施形態では省けることになる。この結果、キータッチ回数は減り、文書の入力所要時間は減り、特許明細書の書き手の頭脳負担は著しく緩和される。
【０１０８】
なお、Ｓ１４〜Ｓ１５の処理が行われるのは、例えば図１０の状態から［Ｃｔｒｌ］＋［Ｊ］のトリガ操作を入力した場合である。図１０の文書内容は図３の文書内容と殆ど同じであるが、符号「６」と符号「７」の要素名として、何れも「車輪」が用いられている点で、図３と異なる。
【０１０９】
図１０のように「この車輪」とキーボード４から入力してトリガ操作（［Ｃｔｒｌ］＋［Ｊ］）を行った場合、カーソルｃの位置から「車輪」が要素名として抽出され（Ｓ１）、この「車輪」は文書から５行目・６行目・１０行目の計３箇所検索される（Ｓ４）。フローの詳細な流れは説明しないが、５行目の「車輪」の検索位置からは符号「６」が、６行目の「車輪」の検索位置からは符号「７」が、１０行目の「車輪」の検索位置からは符号「７」が、それぞれ取得される（Ｓ７）。
【０１１０】
５行目の「車輪」の検索位置から符号「６」が取得されたときは、文字列変数ｗの内容に「車輪６」が追加され（Ｓ１１）、その結果、「＠車輪６＠」になる。次に６行目の「車輪」の検索位置から符号「７」が取得されたときは、「車輪７」は「車輪６」とは一致せず、文字列変数ｗの内容に「車輪７」が存在していないことになる（Ｓ１０）。従って、文字列変数ｗの内容に「車輪７」が追加され（Ｓ１１）、「＠車輪６＠車輪７＠」になる。さらに、１０行目の「車輪」の検索位置で符号「７」が取得されたときは、ステップＳ１０の判定の結果、文字列変数ｗの内容（「＠車輪６＠車輪７＠」）に既に「車輪７」が存在しているので、文字列ｗの内容に変更は加えられない。
【０１１１】
このように、「車輪」の検索位置が複数存在し、その検索位置のそれぞれで取得された符号が「６」と「７」で互いに不一致があるので、文字列変数ｗの内容は、「＠車輪６＠車輪７＠」と、要素名と符号の組が２組記憶されることになる。この結果、検索終了後のステップＳ１２の判定の結果、ステップＳ１４〜Ｓ１５の処理に移る。
【０１１２】
ステップＳ１４の処理では、上記２組の文字列「車輪６」「車輪７」を、入力候補として、図１１のように画面に表示する。表示する位置は、画面のカーソルｃの位置の近傍とすると、ユーザの視線の移動距離が小さくて済むので望ましい。
【０１１３】
図１１では「車輪６」「車輪７」というように、取得された符号を要素名とともに表示している。しかしながらこの表示態様に限定されず、「６」「７」のように、符号のみを表示しても良い。画面に表示する形式は、本実施形態では所謂ポップアップメニュー形式であるが、これに限定せず、例えばダイアログを表示させるようにしても良い。表示する位置も、カーソルｃの位置の近傍に限らず、例えば、ワードプロセッサアプリケーションで文書を表示する領域の隅に表示するようにしても良い。
【０１１４】
このとき、前記ｐ１の記憶内容である「車輪」の部分を、視覚的に他と異なる態様で表示することが望ましい。「車両」に対応する符号が入力候補として表示されていることを、ユーザが素早く判別できるからである。
本実施形態では「車輪」の部分を図１１のように白黒反転状に表示しているが、これに限らず、書体（フォント）を変えたり、太字にしたり下線を付したり、赤や青等の色を付したりして良い。要は、通常とは異なる視覚的態様で表示できれば十分である。
【０１１５】
図１１に示すように、本実施形態で表示される入力候補には、各組ごとに、「（Ｊ）」「（Ｋ）」等のアクセスキーの表示が付されている。また、「Ｊ」「Ｋ」の部分には、下線が付されている。これは、上記の候補が表示された状態において、キーボード４から［Ｊ］キーを入力すれば「車輪６」を、［Ｋ］キーを入力すれば「車輪７」を、それぞれ選択できることを示している。
【０１１６】
ユーザは図１１の状態から、［Ｊ］［Ｋ］の何れかのキーを押して選択する。例えば［Ｋ］キーを入力することで、文書の編集位置に「車輪７」が入力されている状態となるように、文書に入力されている文字列を変更する（Ｓ１５）。例えば、予め入力されている「車輪」に続けて、残りの「７」をプログラム側で自動入力させるようにすれば良い。
【０１１７】
なお、上記第１のプログラムは、「機体フレーム」というように完全な要素名を入力しないでも、符号名を入力することができる。即ち、「機」「機体」「機体フ」のように要素名の先頭側一部のみを入力して［Ｃｔｒｌ］＋［Ｊ］のトリガ操作を行った場合でも、「機体フレーム２」と、要素名の残りと符号を自動的に入力することができる。
【０１１８】
以下、これを説明する。例えば、上記図３の状態からユーザが、キーボード４から「この機体フ」という文字を打ち込んだとする。この場合は図１２に示すように、ディスプレイ３上に「この機体フ」の文字が追加され、カーソルｃは「フ」のすぐ後ろに移動する。なお、「機体フ」は、要素名「機体フレーム」との関係では、要素名の先頭側一部の文字列である。
【０１１９】
この状態で［Ｃｔｒｌ］＋［Ｊ］のトリガが行われた場合、図５のフローにおけるステップＳ１で、「この機体フ」を要素名抽出サブルーチン（図７にフローを示す前述したサブルーチンである）に引数として渡し、これから抽出された要素名の一部として「機体フ」（戻り値）を得て、変数ｐ１に記憶する。
【０１２０】
後は前述した場合と同様に、編集対象文書から変数ｐ１（要素名の一部であるところの「機体フ」）を検索して（Ｓ４）、得られた検索位置を含む文書範囲から文字列を取り出して変数ｙにコピーする（Ｓ５）。この結果、変数ｙは「この乗用車両１は、機体フレーム２にエンジン」となる。後述のステップＳ６〜Ｓ１１で、この変数ｙを解析して、「機体フ」を一部に含む完全な要素名と、この要素名に対応する符号を取得することになる。
【０１２１】
ステップＳ６で変数ｙの内容（「この乗用車両１は、機体フレーム２にエンジン」）から符号を検索すると、符号「１」が検索されて変数ｐ３に記憶され（Ｓ７）、このときの要素名は「乗用車両」と抽出されて変数ｐ２に記憶されるが（Ｓ８）、ステップＳ９の判定の結果、「乗用車両」は「機体フ」と一致していないので、ステップＳ６に戻る。
【０１２２】
ステップＳ６で変数ｙの内容（「この乗用車両１は、機体フレーム２にエンジン」）から次の符号を検索すると、符号「２」が検索されて変数ｐ３に記憶され（Ｓ７）、このときの要素名は「機体フレーム」と抽出されて変数ｐ２に記憶される（Ｓ８）。ステップＳ９において、変数ｐ２の内容「機体フレーム」の先頭側に、変数ｐ１の内容「機体フ」が一致することが検出される。また、変数ｗの内容は「＠」である（Ｓ１０）。従って、変数ｗに変数ｐ２の内容と変数ｐ３の内容の組が追加され、「＠機体フレーム２＠」となる（Ｓ１１）。
【０１２３】
以上のような検索処理の反復が全て終了した後は、ステップＳ１２で変数ｗの内容が調べられるが、変数ｗの内容は「＠機体フレーム２＠」であり、要素名と符号が１組だけ記憶されているので、その内容が編集位置に入力される（Ｓ１３）。入力の態様としては、図１３（ａ）のように、残りの部分（即ち、「レーム２」）を挿入する形で入力しても良いし、図１３（ｂ）のように、「機体フ」の部分を編集位置から削除して、改めて「機体フレーム２」を入力しても良い。
【０１２４】
以上の機能により、ユーザ側としては、「機体フ」のように要素名の先頭側一部のみを入力して［Ｃｔｒｌ］＋［Ｊ］のトリガ操作を行うだけで、要素名の残りと符号（「レーム２」）を自動的に入力することができる。従って、符号の入力の手間・時間のほか、要素名の入力の手間・時間の一部さえも省くことができる。また、要素名の全体をハッキリ正確に記憶していなくても、要素名の先頭側の１文字〜数文字だけを正確に記憶しておけば、それを入力して前記トリガ操作を行うだけで正確な要素名と符号を入力できるので、明細書の書き手の頭脳負担はより一層低減される。
【０１２５】
次に、図３の状態から「この操向」と入力してトリガ操作（［Ｃｔｒｌ］＋［Ｊ］）を行った場合、即ち、図１４の状態でトリガ操作を行った場合の、前記第１のプログラムの動作について説明する。
【０１２６】
この場合、ステップＳ１で、「この操向」を要素名抽出サブルーチンに引数として渡して実行すると、戻り値「操向」が得られる。当該戻り値「操向」（要素名の一部）が、変数ｐ１に記憶される。
【０１２７】
後は前述した場合と同様に、編集対象文書から変数ｐ１（「操向」）を検索して（Ｓ４）、得られた検索位置を含む範囲から文字列を取り出して変数ｙにコピーする（Ｓ５）。「操向」は最初に文書の６行目から検索され、変数ｙの内容は、「前車軸４の両端には操向輪７を固定している」となる。
【０１２８】
ステップＳ６で変数ｙの内容（「前車軸４の両端には操向輪７を固定している」）から符号を検索すると、符号「４」が検索されて変数ｐ３に記憶され（Ｓ７）、このときの要素名は「前車軸」と抽出されて変数ｐ２に記憶されるが（Ｓ８）、ステップＳ９の判定の結果、「前車軸」は「操向」と一致していないので、ステップＳ６に戻る。
【０１２９】
ステップＳ６で改めて変数ｙの内容（「前車軸４の両端には操向輪７を固定している」）から次の符号を検索すると、符号「７」が検索されて変数ｐ３に記憶され（Ｓ７）、このときの要素名は「操向輪」と抽出されて変数ｐ２に記憶される（Ｓ８）。ステップＳ９において、変数ｐ２の内容「操向輪」の先頭側に、変数ｐ１の内容「操向」が一致することが検出される。また、変数ｗの内容は「＠」である（Ｓ１０）。従って、変数ｗには変数ｐ２の内容と変数ｐ３の内容の組が追加され、「＠操向輪７＠」となる（Ｓ１１）。
【０１３０】
符号の検索は全て終わったのでステップＳ６からステップＳ４に戻り、次の「操向」は１０行目から検索される。変数ｙの内容は、「運転座席には、前記操向輪７の向きを変更さ」となる（Ｓ５）。ステップＳ６では変数ｙの内容から符号「７」が先ず検索されて変数ｐ３に記憶され（Ｓ７）、このときの要素名は「操向輪」と抽出されて変数ｐ２に記憶される（Ｓ８）。また、ステップＳ９において、変数ｐ２の内容「操向輪」の先頭側に、変数ｐ１の内容「操向」が一致することが検出される。しかしステップＳ１０において、変数ｗの内容は「＠操向輪７＠」であり、変数ｐ２の内容と変数ｐ３の内容の組は既に記憶されているので、何もせずステップＳ６に戻る。
【０１３１】
符号は変数ｙの内容中に前記「７」の１箇所のみしか現れなかったので、ステップＳ６からステップＳ４に戻り、次の「操向」は１１行目から検索される。変数ｙの内容は、「を変更させるための操向ハンドル８が備えら」となる（Ｓ５）。ステップＳ６では符号「８」が検索されて変数ｐ３に記憶され（Ｓ７）、このときの要素名は「操向ハンドル」と抽出されて変数ｐ２に記憶される（Ｓ８）。また、ステップＳ９において、変数ｐ２の内容「操向ハンドル」の先頭側に、変数ｐ１の内容「操向」が一致することが検出される。更には、ステップＳ１０において、変数ｗの内容は「＠操向輪７＠」であり、変数ｐ２の内容と変数ｐ３の内容の組（「操向ハンドル８」）は未だ記憶されていない。従って、変数ｗには変数ｐ２の内容と変数ｐ３の内容の組が追加され、「＠操向輪７＠操向ハンドル８＠」となる（Ｓ１１）。
【０１３２】
以上で全ての「操向」の検索位置についての処理が終わり、ステップＳ１２に進む。ステップＳ１２では変数ｗの内容が調べられるが、ここで記憶されているのは、「操向輪７」と「操向ハンドル８」の２組である。即ち、取得された要素名と符号の組が、「操向輪７」と「操向ハンドル８」であり、互いに不一致である。
【０１３３】
この場合はステップＳ１４の処理に移り、上記２組の文字列を、入力候補として、図１５のように画面に表示する。
【０１３４】
このとき、前記ｐ１の記憶内容である「操向」の部分を、視覚的に他と異なる態様で表示することが望ましい。「操向」に先頭側で一致する要素名が入力候補として表示されていることを、ユーザが素早く判別できるからである。
本実施形態では「操向」の部分を図１５のように白黒反転状に表示しているが、これに限らず、書体を変えたり、下線を付したり、赤や青等の色を付したりして良い。要は、通常とは異なる視覚的態様で表示できれば十分である。
【０１３５】
図１５に示すように、本実施形態で表示される入力候補には、各組ごとに、「（Ｊ）」「（Ｋ）」等のアクセスキーの表示が付されている。また、「Ｊ」「Ｋ」の部分には、下線が付されている。これは、上記の候補が表示された状態において、キーボード４から［Ｊ］キーを入力すれば「操向輪７」を、［Ｋ］キーを入力すれば「操向ハンドル８」を、それぞれ選択できることを示している。
【０１３６】
ユーザは図１５の状態から、［Ｊ］［Ｋ］の何れかのキーを押して選択する。例えば［Ｊ］キーを入力することで、文書の編集位置に「操向輪７」が入力されている状態となるように、文書に入力されている文字列を変更する（Ｓ１５）。例えば、予め入力されている「操向」に続けて、残りの「輪７」をプログラム側で自動入力させるようにすれば良い。
【０１３７】
以上に示すように、要素名の先頭側一部のみ（「操向」）を入力して［Ｃｔｒｌ］＋［Ｊ］のトリガ操作を行うだけで、要素名の残りと符号を自動的に入力することができる。また、要素名の一部に対応する要素名と符号の組が文書中から複数見つかった場合には（「操向輪７」と「操向ハンドル８」）、それを自動入力の選択肢として画面に並べて表示してユーザに選択させるようにしているので、ユーザ側としては、簡単な操作で、的確な要素名と符号を素早く入力することが可能になる。
【０１３８】
また、本実施形態では、キーボード４のキーを押すだけで入力候補の選択が可能であるので、ユーザにとって選択の作業が容易である。
【０１３９】
図１４に示すように、上記例においては、編集位置（カーソルｃの位置）は１４行目であり、「操向輪７」は６行目と１０行目に、「操向ハンドル８」は１１行目に現れる。この結果、図１５に示すように、入力候補では、検索された位置が文書先頭に近い「操向輪７」が上側に表示され、それより文書末尾側で検索された「操向ハンドル８」は下側に表示されることになる。
【０１４０】
しかしながら、これに限らず、文書編集位置（カーソルｃの位置）に近い位置で検索されたものが上に来るように、入力候補の表示順が設定されても良い。つまり、カーソルｃの位置に近い位置で検索された「操向ハンドル８」を上側に、より遠い位置で検索された「操向輪７」を下側に、それぞれ表示しても良い。これは例えば、「操向」の検索時に検索された位置を記憶しておき、入力候補の表示時に検索位置をキーに並べ替え処理を行ったり、あるいは、図５に示すフローチャートのステップＳ５で、文字列変数ｐ１の内容をカーソルｃの位置から文書先頭側に向かって検索するようにしたりすることで実現される。この場合、ユーザが直近に入力した要素名と符号の組ほど上側に表示されることになるので、ユーザの入力候補の選択作業が容易に且つ素早く行えるという利点がある。
【０１４１】
なお、前述の要素名抽出サブルーチンで用いられる図８のパターンは、一文字にも二文字以上にもマッチ可能であるので、要素名の柔軟かつ的確な抽出が可能とされている。
【０１４２】
具体例を挙げると、前記図８のパターン（第一のパターン）は、二文字の「常時」にはマッチするが、一文字の「時」にはマッチしないようになっている。このメリットを、「本実施形態の腕時計１の内部において、ピニオン２は常時ラック３に噛み合っている。」という文から要素名を取り出す場合の例を引いて説明する。
【０１４３】
前記第一のパターンが仮に「時」にマッチするとすると、上記の文から取り出した「ピニオン２は常時ラック」という文字列からは要素名を「ラック」と適切に抽出できるが、「本実施形態の腕時計」という文字列からは、「時」にマッチしてしまうので、要素名は「腕時計」と抽出できず、「計」と不適切に抽出されてしまう。
【０１４４】
この点、本実施形態では、上記の文から「ピニオン２は常時ラック」という文字列を取り出して要素名抽出サブルーチンに渡した場合、「常時」がマッチするので、要素名を「ラック」と適切に抽出することができる。一方、「本実施形態の腕時計」という文字列を取り出して要素名抽出サブルーチンに渡した場合、「時」はマッチしないので、要素名を「腕時計」と適切に抽出することができる。
【０１４５】
このように、本実施形態の要素名抽出サブルーチンは、一文字にも二文字以上にもマッチ可能なパターンを用いてパターンマッチングを行うので、要素名の抽出を柔軟に行わせるようにパターンを設定できる。
【０１４６】
更に、前記第一のパターンは図８のように正規表現を用いて表現されているので、複雑なマッチング条件を容易かつ適切に設定できるメリットがある。例えば図８に示すパターンのマッチング条件を仮に正規表現を使わずにプログラムで実現しようとすると、膨大かつ複雑なプログラムコードとなってしまうが、本実施形態ではそのようなことをせずに済むのである。
【０１４７】
〔要素名抽出サブルーチンの別例〕
次に、要素名抽出サブルーチンの別例について、図１６を参照しながら説明する。
このサブルーチンも図５の要素名抽出サブルーチンと同様、引数として文字列を受け取って、その末尾側から抽出した要素名（又はその一部）の文字列を戻り値として返すものである。
【０１４８】
別例のフローは図１６に示され、このサブルーチンは、呼び出されると先ず、引数として渡された文字列を文字列変数ｑにコピーして記憶させる（Ｓ１１１）。
【０１４９】
次に、この文字列変数ｑの内容について、正規表現による所定のパターン（第二のパターン）に一致する部分が、“｛”“｝”で囲まれるように置換する（Ｓ１１２）。
この第二パターンは、例えば、「第１」「第１の」にマッチするほか、「Ｏリング」「やすり」「つまみ」「ばね」「すくい面」「ねじ」にマッチし、例えば図１７のように表される。
【０１５０】
次に、ステップＳ１１３〜１１６の部分で、ループ処理が行われる。このループでは先ず、前記文字列変数ｑについて、その末尾が“｝”であるか否かを判定する（Ｓ１１３）。末尾が“｝”である場合は、次に現れる“｛”まで、変数ｑの末尾側を削除し（Ｓ１１４）、再びステップＳ１１３に戻る。即ち、“｛”“｝”で囲まれている部分（第二のパターンにマッチした部分）については、前記第一のパターンにマッチするか否かの判定処理（Ｓ１１５）を行わないのである。
【０１５１】
文字列変数ｑの末尾が“｝”でなかった場合、変数ｑが所定のパターンにマッチするかどうかを判定する（Ｓ１１５）。このパターンは、図７のサブルーチンのステップＳ１０２で使われるパターン（図８に示す第一のパターン）と、全く同一のパターンが用いられる。
【０１５２】
ステップＳ１１５で前記パターンにマッチしなかった場合は、変数ｑの末尾側を１文字削除し（Ｓ１１６）、再びステップＳ１１３に戻る。
【０１５３】
ステップＳ１１５で上記パターンにマッチした場合は、上記ループを抜けるとともに、ステップＳ１１７で、変数ｑの内容から、“｛”“｝”を削除する。
【０１５４】
そして、削除された後の変数ｑの文字数分だけ、当初に引数として渡された文字列の先頭側を削除し、残った文字列を戻り値として返す（Ｓ１１８）。
以上が変形例の要素名抽出サブルーチンの処理である。
【０１５５】
この変形例のサブルーチンの具体的な動作について、例を挙げて説明する。ここでは、引数として「第２のつまみは、この第１のつまみ」という内容が渡され、当該サブルーチンが実行されたとする。
【０１５６】
ステップＳ１１１において、文字列変数ｑには、上記渡された内容「第２のつまみは、この第１のつまみ」がそのままコピーされる。そしてステップＳ１１２の置換の結果、文字列変数ｑの内容は、「｛第２の｝｛つまみ｝は、この｛第１の｝｛つまみ｝」となる。
【０１５７】
次いでステップＳ１１３の判定で変数ｑの末尾が“｝”となっているのが検出されるので、ステップＳ１１４で、“｛”が現れるまで、変数ｑの末尾側が削除される。ここでは、「｛つまみ｝」の部分が削除され、文字列変数ｑの内容は、「｛第２の｝｛つまみ｝は、この｛第１の｝」となる。
【０１５８】
再びステップＳ１１３の判定に戻るが、ここでも変数ｑの末尾が“｝”となっているのが検出されるので、ステップＳ１１４で、“｛”が現れるまで、変数ｑの末尾側が削除される。ここでは、「｛第１の｝」の部分が削除され、文字列変数ｑの内容は、「｛第２の｝｛つまみ｝は、この」となる。
【０１５９】
更にステップＳ１１３の判定に戻るが、変数ｑの末尾は“｝”以外である。従ってステップＳ１１５で、上記正規表現のパターン（第一のパターン）にマッチするか否か、判定が行われる。変数ｑの末尾には「の」が現れているので、第一のパターンにマッチする。この結果、ループを抜け、ステップＳ１１７の処理に移る。
【０１６０】
ステップＳ１１７で、文字列変数ｑの内容から“｛”“｝”の文字を削除する。この結果、文字列変数ｑの内容は「第２のつまみは、この」となる。
【０１６１】
次いでステップＳ１１８で文字列変数ｑの文字数が調べられるが、変数ｑの内容は「第２のつまみは、この」であって１０文字である。従って、当該サブルーチンに引数として渡された内容「第２のつまみは、この第１のつまみ」から先頭側１０文字を削除し、残った「第１のつまみ」という文字列を、戻り値として返す。
【０１６２】
なお、図７に示した要素名抽出サブルーチンでは、「第２のつまみは、この第１のつまみ」という文字列を渡して実行したとしても、文字列変数ｑの末尾が「み」となって前記第一のパターンにマッチしてしまうので、空文字列を返してしまう。また、例えば「この第１の装置」という文字列を図７の要素名抽出サブルーチンに渡して実行した場合、「の」が前記第一のパターンにマッチしてしまう結果、「装置」という要素名が返るのみで、「第１の装置」というように的確に抽出できない。
【０１６３】
この点、別例に係る要素名抽出サブルーチン（図１６）であれば、上記文字列から、「第１のつまみ」と適切な要素名を抽出することができる。即ち、ひらがなの要素名（「つまみ」「すくい」「ねじ」）や、「第○の」を伴う要素名等を、的確かつ柔軟に抽出することができるのである。
【０１６４】
更に、前記第二のパターンは第一のパターンと同様、図１７のように正規表現を用いて表現されているので、複雑なマッチング条件を容易かつ適切に設定できるメリットがある。
【０１６５】
図１６のサブルーチンでは、ステップＳ１１２で、第二のパターンに一致する部分が“｛”“｝”の文字で囲まれるように置換している。しかし、明細書中に“｛”“｝”の文字を使用する場合もあり、この場合は、他の文字（あるいは文字の組合せ）を使用すると良い。例えば、“｛”“｝”の代わりに“＆￥＃”“＾＿＠”を使うことが考えられる。
【０１６６】
〔◆第２のプログラム；符号→要素名＋符号〕
次に、符号を入力してトリガ操作をしたときに要素名を自動入力する機能について説明する。この機能は、そのフローを図１８に示す第２のプログラムによって実現される。
【０１６７】
図１８に沿って説明する。トリガ操作が行われて第２のプログラムが実行されると、まずステップＳ２０１で、文書の編集位置（カーソルｃの位置）から適当な長さの文字列が取り出され、これが符号抽出サブルーチンに渡される。この結果、符号が抽出され、当該抽出結果が変数ｐ１に記憶される（Ｓ２０１）。
【０１６８】
上述の符号抽出サブルーチンは、符号を含む文字列を引数として受け取り、これから符号のみを抜き出して、戻り値として返すサブルーチンである。この符号抽出サブルーチンの詳細は後述する。
【０１６９】
次に、得られた変数ｐ１が空文字列か否かを判定する（Ｓ２０２）。ｐ１が空文字列であれば、編集位置に符号が入力されていなかった場合であるので、何も入力せず、終了する。
【０１７０】
ステップＳ２０２の判定で変数ｐ１が空文字列でなかった場合は、変数ｗを初期化する（Ｓ２０３）。この変数ｗは、文書から抽出された、条件に合う要素名と符号の組を記憶させておくためのものである。
【０１７１】
次に、上記ステップＳ２０１で得られた変数ｐ１の内容を、文書から検索する（Ｓ２０４）。変数ｐ１が見つかると、その検索された位置より前側の適宜長さの文字列を取り出して、前述した要素名抽出サブルーチンに引数として渡して、当該サブルーチンを実行する。こうして得られた抽出結果を、変数ｐ２に記憶する（Ｓ２０５）。
【０１７２】
次に変数ｐ２の内容が空文字列か否かが判定される（Ｓ２０６）。空文字列である場合は、ステップＳ２０４に戻り、次のｐ１の検索を行う。
【０１７３】
空文字列でない場合は、変数ｐ２の内容が変数ｗに含まれているか否かが判定される（Ｓ２０７）。含まれていない場合は、ｐ２の内容を変数ｗに追加して記憶する（Ｓ２０８）。含まれている場合は、ステップＳ２０４に戻り、次のｐ１の検索を行う。
【０１７４】
前記ステップＳ２０４〜Ｓ２０８の一連の処理は、文書の内容から変数ｐ１が検索される毎に行われる。全てのｐ１が検索され、ステップＳ２０４において文書からｐ１の内容がもう見つからなくなると、以下に説明するステップＳ２０９以降の処理を行う。
【０１７５】
ステップＳ２０９では、今までの処理において変数ｗに記憶された要素名の数が判定される。
【０１７６】
０組であれば、文書から適合する要素名を見つけられなかったことになるので、何もせず終了する。
１組であれば、編集位置の符号をいったんプログラム側で自動的に削除した上で、変数ｗに記憶されている要素名を、符号（ｐ１の内容）とともに、編集位置に自動的に入力する（Ｓ２１０）。この結果、変数ｗに記憶されている要素名と符号の組が文書の編集位置に入力されている状態となる。
２組以上であれば、その変数ｗに記憶されている要素名を並べて画面に表示し、ユーザの選択待ちの状態になる（Ｓ２１１）。要素名がユーザによって選択されると、編集位置の符号をいったん削除した上で、その選択された要素名を、符号（ｐ１の内容）とともに、編集位置に入力する（Ｓ２１２）。この結果、ユーザが選択した要素名が、文書の編集位置に入力されている状態となる。
以上がメインルーチンである。
【０１７７】
次に、符号抽出サブルーチンについて説明する。このサブルーチンは、引数として文字列を受け取って、その末尾側から抽出した符号の文字列を戻り値として返す。符号を抽出できなかったときは、空文字列を戻り値として返す。
【０１７８】
符号抽出サブルーチンのフローは図示しないが、例えば、引数として渡された文字列に対し正規表現のパターンマッチングを行い、マッチした場合は、文字列のうちマッチした部分を取り出して戻り値として返し、マッチしない場合は空文字列を戻り値として返すようにすれば良い。パターンとしては、例えば、符号を検索するために用いた図６に示すパターンに、文字列の末尾にマッチする意のメタ文字たるドル記号（＄）を付加した、図１９に示すものを用いれば良い。
【０１７９】
次に、図２１の例で前記第２のプログラムが実行された場合、当該第２のプログラムが実際にどのように動作するのか、より詳細に説明する。図２１は、図３の状態から「この３」とキーボード４から打ち込んだ状態である。
【０１８０】
ワープロのプログラム側では、［Ｃｔｒｌ］＋［Ｊ］のトリガ操作がされた場合は、拡張プログラムモジュールの前記第２のプログラムを実行するよう、予め設定してある。
【０１８１】
この図２１の状態から［Ｃｔｒｌ］＋［Ｊ］のトリガ操作がされた場合、本プログラムは図１８のフローのステップＳ２０１で、今あるカーソルｃの位置の前側（文書先頭側）から適当な長さの文字列を取り出し、適当な文字列変数（ここでは、文字列変数ｘ）に記憶する。図２１の状態から［Ｃｔｒｌ］＋［Ｊ］が押された場合、カーソルｃの位置の前側３文字、「この３」という文字列が取り出され、この内容が文字列変数ｘに記憶される。
【０１８２】
どれだけの長さの文字列を取り出すかは、抽出できる符号の最大文字数に影響する。本実施形態では説明を簡素化するために３文字としているが、「１０１３ｂ’」（６文字）のような長い符号が使われる場合があることを考慮して、もっと長い文字数を取り出すようにしてもよい。実用上は、１０文字もあれば十分である。
【０１８３】
次に、取り出された文字列「この３」から、符号を抽出することになる。これは、前記符号抽出サブルーチンに文字列変数ｘの内容（「この３」）を引数として渡し、当該サブルーチンを実行することで実現される。
【０１８４】
サブルーチンでは、引数「この３」に図１９のパターンを用いたマッチングを行う。すると、「３」がマッチするので、この「３」を戻り値として返す。こうして得られた符号「３」が、文字列変数ｐ１に記憶される。
【０１８５】
図１８に戻って説明する。ステップＳ２０２ではｐ１の内容が空文字列であるか否かが判定されるが、今回は変数ｐ１の内容が「３」であって空文字列ではないので、そのままステップＳ２０３に進む。
【０１８６】
なお、変数ｐ１の内容が空文字列となるのは、例えば、「この」と入力したのみでトリガ操作を行った場合である。即ち、「この」を上記符号抽出サブルーチンに渡しても、当該文字列には図１９のパターンがマッチしないので、前記サブルーチンは空文字列を戻り値として返す。この場合は、符号を抽出できなかったのであるから、何も入力されず終了することになる。
【０１８７】
ステップＳ２０３では、文字列変数ｗが、適宜の区切り文字（本実施形態では、“＠”）で初期化される（即ち、ｗ  ←「＠」）。区切り文字は“＠”に限らずどのような文字でも良く、２文字以上の組み合わせであっても良いが、要素名として通常使われないような文字（文字の組み合わせ）とすることが必要である。
【０１８８】
次にステップＳ２０４で、編集対象文書から、上記抽出された符号「３」を検索する。検索範囲は、現在の編集対象文書の文書データから、カーソルｃの位置にある「３」を除いた範囲である。
【０１８９】
なお、編集対象文書の一部のみを検索範囲に設定することも可能である。例えば、カーソルｃより先頭側の文書データからのみ検索し、カーソルｃより末尾側の文書データは検索しないといったようにである。また、文書データそのものから検索を行うのではなく、文書データのコピーを適宜の文字列変数に記憶させ、この文字列変数の内容から検索を行っても差し支えない。
【０１９０】
このステップＳ２０４の検索では、図２０に示す正規表現を用いている。これは、単に「３」という文字を検索するだけでは、明細書に「３」を含む符号（「３ａ」や「１３」や「３０３」等）を使っていた場合にそれも検索されてしまい、不都合だからである。図２０に示す正規表現パターンは、［「３」の前側にも後側にも符号を構成しない文字がある］という条件を付加しており、これにより、「３ａ」や「１３」や「３０３」の符号は検索せず、符号「３」のみを検索できるようになっている。
【０１９１】
ただし、上記のような正規表現パターンを使わず、単に「３」という文字を検索しても構わない。この場合は、「３」が見つかったときは、検索位置の「３」の前後の文字を調べるようにし、「３」の直前や直後に符号を構成する文字（「１」や「ａ」や「０」等）がある場合には、ステップＳ２０５以降の処理を行わずステップＳ２０４にとどまり、次の「３」の文字を検索するように処理すればよい。
【０１９２】
上記例では「３」が２行目と７行目に記述されているので（図２１参照）、ステップＳ２０４の処理では最初に、２行目の「３」が先ず検索される。
【０１９３】
次に、検索された「３」の位置（図２１の２行目の「３」の位置）より、前側の適当な長さの文字列を取り出して、適宜の文字列変数（ここでは、文字列変数ｙ）に記憶する（Ｓ２０５）。また、この文字列変数ｙの内容を前記要素名抽出サブルーチンに引数として渡し、戻り値を変数ｐ２に記憶する。
【０１９４】
前記ステップＳ２０５で文字を取り出す長さは、適宜定めれば良い。例えば、前側１５文字を取り出すようにすれば、文字列変数ｙの内容は、「は、機体フレーム２上にエンジン」となる。この内容を要素名抽出サブルーチンに渡すことで、「エンジン」が戻り値として得られ、これが変数ｐ２に記憶される。
【０１９５】
次にステップＳ２０６で、ｐ２の内容が空文字列であるか否かが判定されるが、今回はｐ２の内容は「エンジン」であって空文字列でないので、次のステップＳ２０７の処理を行う。
【０１９６】
ステップＳ２０７では、変数ｗの内容が調べられる。変数ｗの内容は「＠」であり、「エンジン」（変数ｐ２）が記憶されていない。従って、ステップＳ２０８で、変数ｗの末尾側に、変数ｐ２の内容（即ち「エンジン」）と、前記区切り文字「＠」が追加される。変数ｗの内容は、ステップＳ２０８の処理の結果、「＠エンジン＠」になる。そうして、ステップＳ２０４に戻る。
【０１９７】
ステップＳ２０４にて、次の「３」が７行目から検索され、ステップＳ２０５にて、その前の１５文字「７を固定している。前記エンジン」が文字列変数ｙにコピーされる。この変数ｙの内容が前記要素名抽出サブルーチンに引数として渡されて当該サブルーチンが実行され、戻り値「エンジン」が変数ｐ２に記憶される（Ｓ２０５）。
【０１９８】
ｐ２の内容は「エンジン」であって空文字列でないので、ステップＳ２０６からステップＳ２０７に進む。変数ｗの内容は「＠エンジン＠」であり、ｐ２の内容「エンジン」が含まれているので、ステップＳ２０４に戻る。
【０１９９】
ステップＳ２０４では、もう「３」は検索しても見つからないので、ステップＳ２０９に進む。
【０２００】
ステップＳ２０９では、変数ｗの記憶内容が調べられるが、当該内容は「＠エンジン＠」である。即ち、要素名が、１つ記憶されている。従って、この要素名と符号が編集位置に入力されている状態となるように、文書に入力されている文字列をプログラム側で自動的に変更する（Ｓ２１０）。
【０２０１】
入力の態様としては、図２２のように、いったん符号「３」を削除し、改めて要素名と符号「エンジン３」を入力すると良い。ただし、符号「３」の直前にカーソルｃを自動的に移動し、要素名「エンジン」をカーソルｃの位置に挿入する形で入力した後、カーソルｃを再び符号「３」の後ろに移動させるような入力態様としても良い。
【０２０２】
以上の機能により、ユーザ側としては、「３」のように符号のみを入力して［Ｃｔｒｌ］＋［Ｊ］のトリガ操作を行うだけで、要素名（「エンジン」）を自動的に入力することができる。従って、要素名の入力の手間・時間を省くことができる。また、要素名をハッキリ正確に記憶していなくても、符号を記憶しておけば、それを入力して前記トリガ操作を行うだけで正確な要素名を入力できるので、明細書の書き手の頭脳負担は効果的に低減される。
【０２０３】
例えば、国内優先権の元の出願の明細書に図３に示したような内容が記述されており、この記述に対応する図（符号付き）も完成していたとする。そして、これを元に国内優先権主張出願をする際に、記述を追加したい場合があったとする。この場合、図の符号を見ながら、「座席上のオペレータが８を操作することで、７が左右に旋回し、１の走行向きが変更される。」と、図３に示した文書の内容に続けてキーボード４から入力するようにし、それぞれの符号「８」「７」「１」の入力直後でトリガ操作（［Ｃｔｒｌ］＋［Ｊ］）を行うようにする。こうすれば、符号「８」「７」「１」が元の出願で何と称されていたかを気にすることなく、正しい文章、即ち、「座席上のオペレータが操向ハンドル８を操作することで、操向輪７が左右に旋回し、乗用車両１の走行向きが変更される。」を入力することができる。従って、国内優先権の元の出願における符号と要素名の対応を逐一調べなくて済むのである。これは、過去に自分で書いた明細書原稿に記述を追加したい場合や、他人が書いた明細書原稿に続けて記述を追加したい場合も同様である。
【０２０４】
なお、図２３の例でトリガ操作（［Ｃｔｒｌ］＋［Ｊ］）がなされた場合の前記第２のプログラムの動作についても、簡単に説明する。この図２３の例は、図２１の例と殆ど同じであるが、７行目の符号「３」の要素名を「エンジ」と誤記している点のみ、図２１の例と異なる。
【０２０５】
図１８を参照して、説明する。トリガ操作がされると、ステップＳ２０１で、カーソル位置の符号は「３」と抽出され、これが変数ｐ１に記憶される。ｐ１は空文字列でないので、変数ｗが「＠」に初期化される（Ｓ２０２→Ｓ２０３）。
【０２０６】
次に、ステップＳ２０３で文書から「３」を検索すると、２行目に「３」が見つかる。検索された位置より前側の文字列（「は、機体フレーム２上にエンジン」）を文書から取り出して要素名抽出サブルーチンに渡すことにより、「エンジン」を要素名として得て、変数ｐ２に記憶する（Ｓ２０５）。ｐ２は空文字列でもなく、変数ｗに存在しないので、変数ｗの内容は「＠エンジン＠」になる（Ｓ２０６→Ｓ２０７→Ｓ２０８）。
【０２０７】
ステップＳ２０４に戻り文書から再び「３」を検索すると、７行目に「３」が見つかる。検索された位置より前側から文字列「輪７を固定している。前記エンジ」を取り出して要素名抽出サブルーチンに渡すことにより、要素名「エンジ」が得られ、これを変数ｐ２に記憶する（Ｓ２０５）。
【０２０８】
ｐ２の内容は空文字列ではなく、変数ｗは「＠エンジン＠」であり、ｐ２の内容は存在していない。従って、変数ｗにｐ２の内容が追加され、その内容は「＠エンジン＠エンジ＠」になる（Ｓ２０６→Ｓ２０７→Ｓ２０８）。
【０２０９】
ステップＳ２０４に戻るが、文書中からは「３」はもう見つからないので、ステップＳ２０９の処理に移る。変数ｗに記憶された要素名の数は、「エンジン」「エンジ」の計２つであるので、ステップＳ２１１の処理で、各要素名を画面に並べて表示する。例えば、図２４のようにである。こうして表示することにより、ユーザは、文書中のどこかで「エンジ３」と誤記をしたことを知ることができる。ここでは「エンジン３」が正しい筈であるので、ユーザはキーボード４から［Ｋ］のキーを入力する。こうして、ステップＳ２１２で、「エンジン３」がカーソルｃの位置に入力された状態になる。
【０２１０】
なお、図２４に示すように、各要素名を画面に並べて表示したときは、カーソルｃの位置にある符号の「３」を強調表示させておくことが望ましい。符号「３」を文書から検索して抽出された要素名が今表示されているということを、ユーザが素早く判別でき、選択操作を行い易いからである。
【０２１１】
以上に示したように上記機能は要素名の誤記の発見に有用であるが、それのみならず、１つの符号に異なる要素名を意図的に割り当てている場合にも、上記機能は有効である。例えば、図３の例では、符号「１」に対応する要素名として、１行目では「乗用車両」を用いており、８行目では「車両」と簡略表記を用いている。この場合に「１」と入力してトリガ操作（［Ｃｔｒｌ］＋［Ｊ］）を行えば、「乗用車両１」と「車両１」が画面上に並べて表示され、いずれかを選択して自動入力させることができる。即ち、トリガ操作→選択操作を行うだけで、素早い入力が可能になるのである。
【０２１２】
〔◆第３のプログラム；指示語→指示語＋要素名＋符号〕
次に図２５のフロー図を参照して、「この」「前記」等の指示語の直後でトリガ操作をしたときに、直近で使われた要素名と符号の組合せを自動入力できる、第３のプログラムを説明する。
【０２１３】
図２５のフロー図に沿って説明すると、トリガ操作（［Ｃｔｒｌ］＋［Ｊ］）がされたときは、整数変数ｙを０に初期化した上で（Ｓ３０１）、編集位置（カーソルｃの位置）に入力されているのが、予め指定された語であるか否かを判定する（Ｓ３０２）。本実施形態では、指示語「この」と指示語「前記」を、予め設定してある。
【０２１４】
指示語「この」がカーソルｃの位置に入力されているときは、整数変数ｘに１を書き込む（Ｓ３０３）。また、指示語「前記」がカーソルｃの位置に入力されているときには、整数変数ｘに５を書き込む（Ｓ３０４）。「この」も「前記」も検出できなかったときは、後述のステップＳ３１５の処理に移る。
【０２１５】
続いて、検出された指示語の文字列を、文字列変数ｐ１に記憶する（Ｓ３０５）。ｐ１の内容は、カーソルｃの位置に指示語「この」が検出されたときは「この」に、指示語「前記」が検出されたときは「前記」になる。
【０２１６】
次に、変数ｗを初期化する（Ｓ３０６）。この変数ｗは、文書から抽出された、条件に合う要素名と符号の組を記憶させておくためのものである。
【０２１７】
その後、文書から符号を検索する（Ｓ３０７）。このときの検索範囲はカーソルｃの位置から文書先頭側とし、カーソルｃの位置から文書末尾側は検索範囲としない。「この」や「前記」等の指示語は、入力された位置より文書先頭側の内容を指し示すのが通常だからである。また、ステップＳ３０７の検索における検索方向は、カーソルｃの位置から文書先頭側に向かう方向とする。
【０２１８】
ステップＳ３０７における符号検索処理は、前述の第１のプログラムのステップＳ６の処理で用いた正規表現によるパターン（図６）を、そのまま用いて行えばよい。
【０２１９】
符号が検索されると、検索された符号を変数ｐ３に記憶する（Ｓ３０８）。また、検索されたその符号の位置より前側の文字列を文書から取り出し、この取り出した文字列を前記要素名抽出サブルーチンに渡して要素名を抽出し、それを変数ｐ２に記憶する（Ｓ３０９）。
【０２２０】
次に、変数ｐ２の内容が空文字列か否かが判定される。空文字列である場合は、ステップＳ３０７に戻り、次の符号の検索を行う。
【０２２１】
空文字列でない場合は、変数ｗの内容を調べ、変数ｐ２の内容と変数ｐ３の内容の組が既に変数ｗに存在していないか、を判定する（Ｓ３１１）。存在していた場合は、ステップＳ３０７に戻り、次の符号の検索を行う。
【０２２２】
変数ｐ２の内容と変数ｐ３の内容の組が変数ｗに存在していない場合には、変数ｗに、変数ｐ２の内容と変数ｐ３の内容の組を、追加して記憶するとともに（Ｓ３１２）、ｙを１加算する（Ｓ３１３）。次に、ｙの内容がｘと等しいか否かが判定され（Ｓ３１４）、等しかった場合は、後述のステップＳ３１５の処理に移る。ｙがｘより小さい場合は、ステップＳ３０７に戻り、次の符号の検索を行う。
【０２２３】
前記ステップＳ３０７〜Ｓ３１４の一連の処理は、互いに重複しないｘ個の変数ｐ２と変数ｐ３の組が文書から見つかるか（ｙ＝ｘとなったか）、あるいは、文書から符号がもう見つからなくなるまで、行われる。ステップＳ３０７において文書から符号がもう見つからなくなると、以下に説明するステップＳ３１５以降の処理を行う。
【０２２４】
ステップＳ３１５では、今までの処理において変数ｗに記憶された要素名と符号の組の数が判定される。実質的には、この組の数はｙの値に等しくなるので、ｙの値を調べれば良いことになる。
【０２２５】
０組（ｙ＝０）であれば、文書中から適合する要素名と符号の組を見つけられなかったことになるので、何もせず終了する。
１組（ｙ＝１）であれば、その変数ｗに記憶されている要素名と符号の組を、「この」あるいは「前記」の後に続けて、編集位置（カーソルｃの位置）に入力する（Ｓ３１６）。
２組以上（ｙ≧２）であれば、その変数ｗに記憶されている要素名と符号の組を、並べて画面に表示し、ユーザの選択待ちの状態になる（Ｓ３１７）。要素名と符号の組がユーザによって選択されると、その選択された要素名と符号が、「この」あるいは「前記」の後に続けて、カーソル位置に入力される（Ｓ３１８）。
【０２２６】
次に、図２６の例で前記第３のプログラムが実行された場合、上記プログラムが実際にどのように動作するのか、より詳細に説明する。図２６は、図３の状態から「この」とキーボード４から打ち込んだ状態である。
【０２２７】
ワープロのプログラムにおいては、トリガ操作（［Ｃｔｒｌ］＋［Ｊ］）がされたときに、上記第３のプログラムが呼び出されて実行されるように、予め設定してある。
【０２２８】
図２６の状態から［Ｃｔｒｌ］＋［Ｊ］のトリガ操作がされた場合、本プログラムはステップＳ３０１でｙを０に初期化したのち、カーソル位置ｃの文字列を調べる（Ｓ３０２）。図２６の状態では「この」が入力されているので、ステップＳ３０３に移り、ｘの内容に１が書き込まれる。その後、ステップＳ３０５で、カーソルｃの位置の指示語「この」が、文字列変数ｐ１に記憶される。
【０２２９】
次にステップＳ３０６で、文字列変数ｗが、適宜の区切り文字（本実施形態では、“＠”）で初期化される（即ち、ｗ  ←「＠」）。区切り文字は“＠”に限らずどのような文字でも良く、２文字以上の組合せであっても良いが、要素名としても符号としても通常使われないような文字（文字の組合せ）とすることが必要である。
【０２３０】
次に、文書から、符号を検索する（Ｓ３０７）。文書の検索範囲はカーソルｃの位置よりも文書先頭側の範囲であるが、図２６の例ではカーソルｃが文書の最末尾にあるので、結局、検索範囲は文書全体になる。また、検索方向は、カーソルｃから文書先頭側へ向かう方向である。
【０２３１】
ステップＳ３０７の処理の結果、符号は先ず、１１行目の「８」が検索される。従って、ステップＳ３０８で、「８」を文字列変数ｐ３に記憶するとともに、ステップＳ３０９で、検索された「８」の位置の前側から適宜の長さの文字列を取り出して文字列変数ｚに記憶する。取り出す長さを例えば１５文字とすると、ｚの内容は、「を変更させるための操向ハンドル」となる。この内容を前述の要素名抽出サブルーチンに引数として渡して当該サブルーチンを実行することで、要素名「操向ハンドル」が得られる。この得られた要素名（「操向ハンドル」）を、文字列変数ｐ２に記憶する。以上がステップＳ３０９の処理であり、ステップＳ３０８〜Ｓ３０９の処理によって、要素名と符号の組が取得される。
【０２３２】
ステップＳ３１０でｐ２の内容が調べられるが、ｐ２は「操向ハンドル」であって空文字列でないので、ステップＳ３１０に進む。このステップＳ３１０では、変数ｗの内容が調べられる。変数ｗの内容は「＠」であり、「操向ハンドル８」（変数ｐ２と変数ｐ３の組）が記憶されていない。従って、ステップＳ３１２の処理で、変数ｗの末尾側に、「操向ハンドル８」と、前記区切り文字「＠」が追加される。変数ｗの内容は、ステップＳ３１２の処理の結果、「＠操向ハンドル８＠」になる。
【０２３３】
次に、ステップＳ３１３で、変数ｙを１加算する。ｙの内容はステップＳ３０１で０に初期化されていたので、ステップＳ３１３の処理の結果、ｙ＝１となる。
【０２３４】
更にステップＳ３１４で、変数ｙと変数ｘとが比較される。ステップＳ３０３でｘの内容は１とされているので、変数ｙと変数ｘの内容は等しい（ｙ＝ｘ）。従って、次のステップＳ３１５の処理に移る。
【０２３５】
ステップＳ３１５では、変数ｗの記憶内容が調べられるが、当該内容は「＠操向ハンドル８＠」である。即ち、要素名と符号の組が、１つ記憶されている。従って、この要素名と符号が、カーソルｃの位置に入力される（Ｓ３１６）。
【０２３６】
以上により、ユーザは「この」と入力して［Ｃｔｒｌ］＋［Ｊ］のトリガ操作を行えば、直近で使用された要素名と符号の組（具体的には、「操向ハンドル８」）を、自動入力することができる。ここで一般に、特許明細書を書き進めるときは、直近に使用した要素名と符号の組を繰り返し使用することが多く、その際には、再び使用される要素名の直前に「この」等の接頭語が付されることが多い。本プログラムを使用することにより、このような記述の入力の効率を向上させることができる。
【０２３７】
なお、図２７のように「前記」と入力して［Ｃｔｒｌ］＋［Ｊ］のトリガ操作を行った場合は、図２５のフローのＳ３０２の判定において「前記」が検出される結果、ステップＳ３０４でｘの内容に５が書き込まれる。従って、変数ｐ２と変数ｐ３の組が５つ記憶されるまで（要素名と符号の組が５つ取得されるまで。端的に言えば、ｙ＝５になるまで）、ステップＳ３０７〜Ｓ３１４のループ処理が行われる。この間、符号は、１１行目「８」→１０行目「７」→１０行目「１」→９行目「１」→８行目「５」→７行目「３」と次々と検索される。
【０２３８】
上記ループの結果、最終的には、文字列変数ｗの記憶内容は、「＠操向ハンドル８＠操向輪７＠車両１＠後車軸５＠エンジン３＠」となる。従って、ステップＳ３１５の処理においては、組の数が５つ（即ち２組以上）であるので、ステップＳ３１７の処理に移って、各組を画面に例えば図２８のように並べて表示し、選択待ちの状態になる。この状態で、ユーザが［Ｊ］や［Ｋ］や［Ｌ］などの対応するキーをキーボード４から入力することで、選択された要素名を入力することになる（Ｓ３１８）。例えばユーザが図２８の状態で［Ｕ］キーを押せば、指示語「前記」の後に「エンジン３」が自動入力されることになる。
【０２３９】
以上により、ユーザは「前記」と入力して［Ｃｔｒｌ］＋［Ｊ］のトリガ操作を行えば、直近で使用された要素名と符号の組（具体的には、図２８で表示されているもの）から、選択して自動入力することができる。ここで一般に、特許明細書を書き進めるときは、直近に使用した要素名と符号の組を繰り返し使用することが多く、その際には、再び使用される要素名の直前に「前記」等の接頭語が付されることが多い。例えば、図１１の文書では、１行目で使用している「機体フレーム２」が、２行目で、「前記」を伴って再び使用されている。本プログラムを使用することにより、このような記述の部分の入力効率を向上させることができる。
【０２４０】
なお、複数の要素名と符号を選択可能に画面に表示するときは、図２８に示すように、変数ｐ１の記憶内容であるところの「前記」を視覚的に他と異なる態様（例えば、白黒反転状）で表示することが望ましい。「前記」という語を認識して直近の要素名と符号の組が表示されていることを、ユーザが素早く判別できるからである。
【０２４１】
なお、前記第３のプログラムで予め指定された語は「この」「前記」のみであるが、これに限定されず、例えば、「当該」「該」「本」「上記」「前記の」「前述の」「前述した」「それぞれの」「各」「その」等の語を予め指定することも勿論可能である。
【０２４２】
本プログラムではステップＳ３０２〜Ｓ３０４の処理で、カーソル位置で検出された語の内容によって、ｘの値を変えている。具体的には、「この」であればｘ＝１、「前記」であればｘ＝５としている。これは、「この」という指示語が、文書中で相当に近い部分を特に指し示す言葉であることを考慮したものである。しかしながらこの構成に限定されるものでもない。例えば、「この」であればｘ＝３に設定し、「前記」であればｘ＝１０に設定する構成であっても良い。また、「この」「前記」の何れであってもｘ＝５に設定するようにしても良い。
【０２４３】
〔◆第４のプログラム；統合版〕
次に、第４のプログラムを説明する。このプログラムは今まで説明した第１〜第３のプログラムを統合したものに相当する。
【０２４４】
この第４のプログラムを図２９のフローに沿って説明する。［Ｃｔｒｌ］＋［Ｊ］のトリガ操作がされると、ステップＳ４０１で、カーソルｃの位置の文字列が調べられる。そして、カーソルｃの位置の文字列が予め指定された語（「この」「前記」等の指示語）であった場合、前述の第３のプログラムを実行する（Ｓ４０２）。また、カーソルｃの位置の文字列が符号であった場合、前述の第２のプログラムを実行する（Ｓ４０３）。更に、カーソルｃの文字列が指示語でも符号でもなかった場合、前述の第１のプログラムを実行する（Ｓ４０４）。
【０２４５】
この構成により、図３の状態で「この」と入力して［Ｃｔｒｌ］＋［Ｊ］の操作をした場合は、第３のプログラムによって、「この」の後に「操向ハンドル８」が自動的に続けて入力される。また、図３の状態で「５」と入力して［Ｃｔｒｌ］＋［Ｊ］の操作をした場合は、第２のプログラムによって、「５」の部分に「後車軸５」が置き換わるように自動的に入力される。更には、図３の状態で「駆動」と入力して［Ｃｔｒｌ］＋［Ｊ］を押すと、第１のプログラムによって、「駆動」の後に「輪６」が自動的に続けて入力される。
【０２４６】
このように、共通のトリガ操作（［Ｃｔｒｌ］＋［Ｊ］）によって、指示語に起因する自動入力や、符号に起因する自動入力や、要素名（の一部）に起因する自動入力を、的確に行わせることができる。ユーザはトリガ操作を一つだけ覚えれば良いので、操作性に優れるメリットがある。
【０２４７】
ただし、勿論、第４のプログラムのような形態を採らずに、［Ｃｔｒｌ］＋［Ｊ］の操作がされたら第１のプログラムを実行し、［Ｃｔｒｌ］＋［Ｋ］の操作がされたら第２のプログラムを実行し、・・・というように、複数のプログラムに互いに異なるトリガ操作を割り当てるようにしても構わない。
【０２４８】
〔細部〕
以下、前記第１〜第４のプログラムにおいて共通の細部について言及する。
【０２４９】
前記変数ｗは文字列変数とし、これに要素名と符号の組等を区切り文字を用いて区切りながら記憶しているが、これに限らず、文字列を格納可能な配列変数に要素名と符号の各組を記憶させるようにしても構わない。
【０２５０】
上記トリガ操作は、キーボード４のキーを押す操作に限定されない。例えば、画面上の所定の位置をマウスでクリックする操作や、ペン型デバイスでディスプレイ３の画面の所定の位置をタップする操作や、パソコン本体２に接続されるマイクに向かって所定の言葉を喋ること等が考えられる。ただし、本実施形態のようにキーボード４のキーを押す操作とすると、特許明細書の内容をキーボード４で入力する途中にトリガ操作を容易に素早く行い易い利点がある。
【０２５１】
特に本実施形態においては、トリガ操作は、キーボード４で［Ｃｔｒｌ］を押しながら［Ｊ］キーを押す操作とされている。なお、本実施形態のキーボード４は一般的な所謂ＱＷＥＲＴＹ配列のキーボード（１０６キーボード）であり、［Ｊ］キーは、ユーザが指をホームポジションにおいたときに、右人差し指に位置するキーである。従って、［Ｃｔｒｌ］＋［Ｊ］をトリガ操作とすることで、少なくとも右手の指はホームポジションに自然に位置することとなるので、前記プログラムによる自動入力が完了した後に、次の文字を素早く続けて入力することが容易である。
【０２５２】
ただし勿論、キーボード４の他のキーを押す操作をトリガ操作としても構わない。キーボード４上のホームポジションに指を置いたときに人差し指が位置する段のキーを少なくとも押す操作をトリガ操作に設定すれば、トリガ操作時に指が自然にホームポジションに位置する効果が期待できる。このようなトリガ操作の例としては、［Ｃｔｒｌ］＋［Ｆ］や、［Ａｌｔ］＋［Ｄ］や、［Ｃｔｒｌ］＋［Ａｌｔ］＋［Ｌ］等である。
【０２５３】
また、キーボード４上のホームポジションに指を置いたときに人差し指が位置する段のキーを押す操作に限られず、例えば、ファンクションキーを押す操作でも、トリガ操作としては十分である。
【０２５４】
また、本実施形態においては、図１５のように入力候補が表示されたときにそれを選択する操作も、キーボード４のキーを押す操作である（アクセスキーが［Ｊ］キーや［Ｋ］キーに設定されている）。従って、選択操作を容易に素早く行い易い利点がある。ただし、これも、キーボード４のキーを押す操作に限定されない。
【０２５５】
本実施形態の第１〜第４のプログラムにおいて、図１３・図１５・図１７に示すように、要素名と符号の組を入力させた後は、当該組の直後に前記カーソルｃ（図では縦棒として表されている）が位置するように、カーソルｃを自動的に移動させることが望ましい。ユーザはこれによって、［Ｃｔｒｌ］＋［Ｊ］の操作後にカーソルｃの位置を移動させる操作が不要になり、文章をスムーズに継続して入力することができる。
【０２５６】
前述の第１〜第４のプログラムは、機械の分野の特許や実用新案の出願明細書を書く場合に限らず、広く符号付きの文書一般（例えば、機械の組立方法のマニュアル等）にこれを適用できる。
【０２５７】
【発明の効果】
本発明は、以上のように構成したので、以下に示すような効果を奏する。
【０２５８】
即ち、請求項１に示すように、文書編集中においてユーザのトリガ操作がされたときに、少なくとも以下の（ａ）〜（ｄ）の手順を行う（（ａ）文書の編集位置に入力されている文字列から要素名を抽出する。（ｂ）（ａ）で抽出された要素名を、文書から検索する。（ｃ）（ｂ）で検索された位置を含む文字列を文書から取り出して解析し、（ａ）で抽出された要素名に対応する符号を取得する。（ｄ）（ｃ）で得られた符号に基づき、文書の編集位置に要素名と符号が入力されている状態となるように、文書に入力されている文字列を変更する。）ので、ユーザは、要素名を入力してトリガ操作を行えば、その要素名に対応した符号をプログラム側で自動的に入力させることができる。従って、入力の手間が低減され、文書を素早く入力できる。また、要素名と符号の対応を逐一記憶あるいは記録しておく必要がないから、書き手たるユーザの頭脳負担が軽減される。また、符号の表記の誤りを回避することができる。
【０２５９】
請求項２に示すように、前記（ｂ）において要素名が文書から複数検索されたときには、それぞれの検索位置において、前記（ａ）で抽出された要素名に対応する符号を取得するようにし、取得された符号同士で不一致がある場合には、互いに不一致である符号を並べて画面に表示してユーザに選択させ、選択された符号に基づき前記（ｄ）の処理を行うので、
入力された要素名に対応する符号が複数種類ある場合にそれが選択可能に表示されるので、ユーザは選択操作により、的確な符号を自動的に入力させることができる。
【０２６０】
請求項３に示すように、文書編集中においてユーザのトリガ操作がされたときに、少なくとも以下の（ａ）〜（ｄ）の手順を行う（（ａ）文書の編集位置に入力されている文字列から要素名の一部を抽出する。（ｂ）（ａ）で抽出された要素名の一部を、文書から検索する。（ｃ）（ｂ）で検索された位置を含む文字列を文書から取り出して解析し、（ａ）で抽出された要素名の一部を含む要素名と、当該要素名に対応する符号を取得する。（ｄ）（ｃ）で得られた要素名と符号に基づき、文書の編集位置に完全な要素名と符号が入力されている状態となるように、文書に入力されている文字列を変更する。）ので、
ユーザは、要素名の一部を入力してトリガ操作を行えば、その一部を含む要素名と、それに対応した符号を、プログラム側で自動的に入力させることができる。従って、入力の手間が低減され、文書を素早く入力できる。また、要素名と符号の対応を逐一記憶あるいは記録しておく必要がないし、要素名も完全に覚えておかずにその一部だけ覚えていれば良いから、書き手たるユーザの頭脳負担が軽減される。また、要素名や符号の表記の誤りを回避することができる。
【０２６１】
請求項４に示すように、前記（ｂ）において要素名の一部が文書から複数検索されたときには、それぞれの検索位置において、前記（ａ）で抽出された要素名の一部を含む要素名と、当該要素名に対応する符号を取得するようにし、取得された要素名と符号の組同士で不一致がある場合には、互いに不一致である要素名と符号を並べて画面に表示してユーザに選択させ、選択された要素名と符号に基づき前記（ｄ）の処理を行うので、
入力された要素名の一部に対応する要素名と符号が複数種類ある場合にそれが選択可能に表示されるので、ユーザは選択操作により、的確な要素名と符号を自動的に入力させることができる。
【０２６２】
請求項５に示すように、文書編集中においてユーザのトリガ操作がされたときに、少なくとも以下の（ａ）〜（ｄ）の手順を行う（（ａ）文書の編集位置に入力されている文字列から符号を抽出する。（ｂ）（ａ）で抽出された符号を、文書から検索する。（ｃ）（ｂ）で検索された位置より前側の文字列を文書から取り出して解析し、（ａ）で抽出された符号に対応する要素名を取得する。（ｄ）（ｃ）で得られた要素名に基づき、文書の編集位置に要素名と符号が入力されている状態となるように、文書に入力されている文字列を変更する。）ので、
ユーザは、符号を入力してトリガ操作を行えば、その符号に対応した要素名をプログラム側で自動的に入力させることができる。従って、入力の手間が低減され、文書を素早く入力できる。また、要素名と符号の対応を逐一記憶あるいは記録しておく必要がないから、書き手たるユーザの頭脳負担が軽減される。また、要素名の表記の誤りを回避することができる。
【０２６３】
請求項６に示すように、前記（ｂ）において符号が文書から複数検索されたときには、それぞれの検索位置において、前記（ａ）で抽出された符号に対応する要素名を取得するようにし、取得された要素名同士で不一致がある場合には、互いに不一致である要素名を並べて画面に表示してユーザに選択させ、選択された要素名に基づき前記（ｄ）の処理を行うので、
入力された符号に対応する要素名が複数種類ある場合にそれが選択可能に表示されるので、ユーザは選択操作により、的確な要素名を自動的に入力させることができる。
【０２６４】
請求項７に示すように、文書編集中においてユーザのトリガ操作がされたときに、予め指定された語が文書の編集位置にあったときは、当該編集位置から文書先頭側に向かって符号を検索しながら要素名と符号の組を取得し、取得された当該組が前記語の後に続けて入力されている状態となるように、文書に入力されている文字列を変更するので、
予め指定された語を入力してトリガ操作を行えば、直近の要素名と符号の組を自動入力させることができるので、入力の手間を省くことができる。
【０２６５】
請求項８に示すように、文書編集中においてユーザのトリガ操作がされたときに、予め指定された語が文書の編集位置にあったときは、当該編集位置から文書先頭側に向かって符号を検索しながら要素名と符号の組を複数取得し、取得された当該組を並べて選択可能に画面に表示し、ユーザによって選択された組が前記語の後に続けて入力されている状態となるように、文書に入力されている文字列を変更するので、
予め指定された語を入力してトリガ操作を行えば、直近の要素名と符号の組を自動入力させることができるので、入力の手間を省くことができる。また、ユーザとしては、自分が希望する要素名と符号を選択するだけで、的確な要素名と符号を自動的に入力させることができる。
【０２６６】
請求項９に示すように、予め指定された語として、「この」「該」「前記」「上記」のうち少なくとも何れか一つを含むので、
このような指示語に続けて要素名と符号を入力する機会が多い文書で、指示語を入力してトリガ操作を行うことで、文書の入力効率を効果的に向上させることができる。
【０２６７】
請求項１０に示すように、前記トリガ操作は、キーボードのキーを押す操作であるので、
キーボードで文書を入力中にキーボードのキーを操作（トリガ操作）することで上述のような自動入力が行えるので、キーボードからユーザが指を離す必要がなく、入力効率を効果的に向上できる。
【０２６８】
請求項１１に示すように、前記トリガ操作で押されるキーは、キーボードのホームポジションに指を置いたときに人差し指が位置する段のキーの何れかを少なくとも含むので、
トリガ操作を行うときに、自然に指がホームポジションに置かれることになる。従って、トリガ操作に続けて、文書をスムーズに入力することができる。
【０２６９】
請求項１２に示すように、文書に入力されている文字列を変更する処理が終わった後、文書の編集位置は、要素名と符号の組の直後に自動的に移動されているので、
トリガ操作を行った後、文書の編集位置を移動させる操作が不要であるので、要素名と符号の組の直後に文章を素早く続けて入力することができる。
【０２７０】
請求項１３に示すように、前記選択は、キーボードのキー入力によって行うことが可能とされているので、
選択操作がキーボードで行えるので、キーボードからの入力操作を中断することがなく、スムーズに入力作業を行える。
【０２７１】
請求項１４に示すように、少なくとも前記選択の際に、前記編集位置における要素名、要素名の一部、符号、あるいは予め指定された語の部分を、通常と異なる視覚的態様で表示するので、
選択の際に、注目すべき文字列が画面に強調される形で表示され、ユーザが選択を的確に且つ素早く行いやすい。
【０２７２】
請求項１５に示すように、画面に並べて選択可能に表示される文字列は、その検索位置が前記編集位置に近いものが上に来るように、並べて表示されるので、
編集位置に近いもの（最近に入力した文字列であることが多い）が上に来るように並べて表示される。符号付きの文書（例えば、特許明細書など）では、最近に使用した要素名と符号ほど再び使用する頻度が高いという傾向がある。ユーザは並べて表示されたものを上から眺めれば、入力したい要素名と符号を素早く簡単に見つけることが多くなるので、入力効率を一層高めることができる。
【０２７３】
請求項１６に示すように、与えられた文字列から要素名または要素名の一部に相当する文字列を抽出するプログラムであって、与えられた文字列の末尾側から先頭側に向かって、一文字にも二文字以上にもマッチ可能な第一のパターンにマッチするか否かを判定してゆき、初めてマッチした位置を要素名と要素名でない部分との境界であるとして文字列を抽出するので、
要素名の抽出を柔軟に行わせるようにパターンを設定できる。この結果、要素名の的確な抽出が可能である。
【０２７４】
請求項１７に示すように、前記第一のパターンが正規表現で表されているので、
複雑なマッチング条件を、正規表現を用いることで、容易かつ適切に設定できる。
【０２７５】
請求項１８に示すように、前記第一のパターンは、「常時」にはマッチし、「時」にはマッチしないパターンであるので、
「常時」は除外するように要素名を抽出できる一方で、「腕時計」の「時」は除外しないように要素名を抽出できる。
【０２７６】
請求項１９に示すように、与えられた文字列のうち、第二のパターンにマッチする部分は、前記第一のパターンにマッチするか否かの判定を行わないので、
ひらがなの要素名（「つまみ」「すくい」「ねじ」）や、「第○の」を伴う要素名等を、第二のパターンに設定しておくことで、要素名を、一層的確に且つ柔軟に抽出することができる。
【０２７７】
請求項２０に示すように、前記第二のパターンが正規表現で表されているので、
複雑なマッチング条件を、正規表現を用いることで、容易かつ適切に設定できる。
【０２７８】
請求項２１に示すように、前記第一のパターンは「の」に少なくともマッチするパターンであり、前記第二のパターンは「第１の」に少なくともマッチするパターンであるので、
「第１の装置」等の要素名を、的確に抽出することができる。
【図面の簡単な説明】
【図１】本発明のプログラムが使用される一般的なパーソナルコンピュータシステムを示した図。
【図２】パソコン本体のブロック図。
【図３】ディスプレイの表示画面の例を示した図。
【図４】図３の状態から「この機体フレーム」とキーボードから打ち込んだ様子を示す図。
【図５】第１のプログラムのフロー図。
【図６】符号検索のための正規表現パターンの一例を示す図。
【図７】要素名抽出サブルーチンのフロー図。
【図８】要素名抽出サブルーチンで用いられる第一のパターンの一例を示す図。
【図９】図４の状態からトリガ操作に基づいて自動的に文字列が入力される態様の一例を示す図。
【図１０】図３で入力されている文書と若干異なる文書が入力され、更に、「この車輪」とキーボードから打ち込んだ様子を示した図。
【図１１】図１０の状態からトリガ操作に基づいて要素名と符号が選択可能に画面に表示された様子を示す図。
【図１２】図３の状態から「この機体フ」とキーボードから打ち込んだ様子を示す図。
【図１３】図１２の状態からトリガ操作に基づいて自動的に文字列が入力される態様の一例を示す図。
【図１４】図３の状態から「この操向」とキーボードから打ち込んだ様子を示す図。
【図１５】図１４の状態からトリガ操作に基づいて要素名と符号が選択可能に画面に表示され、ユーザの選択によって自動的に文字が入力される、一連の流れを示す図。
【図１６】要素名抽出サブルーチンの別例を示すフロー図。
【図１７】図１６のサブルーチンで用いられる第二のパターンの一例を示す図。
【図１８】第２のプログラムのフロー図。
【図１９】符号抽出サブルーチンで用いられる正規表現パターンの一例を示す図。
【図２０】符号抽出サブルーチンで用いられる符号検索のための正規表現パターンの一例を示す図。
【図２１】図３の状態から「この３」とキーボードから打ち込んだ様子を示す図。
【図２２】図２１の状態からトリガ操作に基づいて自動的に文字列が入力される態様の一例を示す図。
【図２３】図２１と同様に、「この３」とキーボードから打ち込んだ様子を示す図。ただし、図２１とは、文書の７行目に「エンジ３」と誤記がある点で異なる。
【図２４】図２３の状態からトリガ操作に基づいて要素名と符号が選択可能に画面に表示された状態を示す図。
【図２５】第３のプログラムのフロー図。
【図２６】図３の状態から「この」とキーボードから打ち込んだ様子を示す図。
【図２７】図３の状態から「前記」とキーボードから打ち込んだ様子を示す図。
【図２８】図２８の状態からトリガ操作に基づいて要素名と符号が選択可能に画面に表示された状態を示す図。
【図２９】第４のプログラムのフロー図。
【符号の説明】
１  パーソナルコンピュータ
ｃ  カーソルの位置
【図１】
2005025265.tif 000003
【図２】
2005025265.tif 000004
【図３】
2005025265.tif 000005
【図４】
2005025265.tif 000006
【図５】
2005025265.tif 000007
【図６】
2005025265.tif 000008
【図７】
2005025265.tif 000009
【図８】
2005025265.tif 000010
【図９】
2005025265.tif 000011
【図１０】
2005025265.tif 000012
【図１１】
2005025265.tif 000013
【図１２】
2005025265.tif 000014
【図１３】
2005025265.tif 000015
【図１４】
2005025265.tif 000016
【図１５】
2005025265.tif 000017
【図１６】
2005025265.tif 000018
【図１７】
2005025265.tif 000019
【図１８】
2005025265.tif 000020
【図１９】
2005025265.tif 000021
【図２０】
2005025265.tif 000022
【図２１】
2005025265.tif 000023
【図２２】
2005025265.tif 000024
【図２３】
2005025265.tif 000025
【図２４】
2005025265.tif 000026
【図２５】
2005025265.tif 000027
【図２６】
2005025265.tif 000028
【図２７】
2005025265.tif 000029
【図２８】
2005025265.tif 000030
【図２９】
2005025265.tif 000031