(57)【要約】【課題】ソースコードの編集作業を簡単化することができることを目的とする。【解決手段】第１ソースコードに含まれる命令文のうち、第２ソースコードを第１ソースコードに取り込む命令文の指定を受け付けると、該命令文に含まれる、第２ソースコードを指定する情報と、該第２ソースコードに含まれるテキストを置換する置換規則とを取得し、該第２ソースコードの格納先を特定して、特定した該格納先から該第２ソースコードを取得し、取得した第２ソースコードに、取得した置換規則を適用して、第３ソースコードを生成する生成部と、生成された第３ソースコードへの編集を受け付けると、編集後の第３ソースコードに、取得された置換規則とは逆向きの置換規則を適用して、新たなソースコードを生成し、特定された格納先に格納された第２ソースコードを、生成した新たなソースコードに更新する更新部と、を含む。【選択図】図１
2018005551.tif 000002
【特許請求の範囲】
【請求項１】
第１ソースコードに含まれる命令文のうち、第２ソースコードを前記第１ソースコードに取り込む命令文の指定を受け付けると、指定された前記命令文を解析して、該命令文に含まれる、前記第２ソースコードを指定する情報と、該第２ソースコードに含まれるテキストを置換する置換規則とを取得し、
取得した前記第２ソースコードを指定する情報に基づき、該第２ソースコードの格納先を特定して、特定した該格納先から該第２ソースコードを取得し、
取得した前記第２ソースコードに、取得した前記置換規則を適用して、第３ソースコードを生成し、
生成した前記第３ソースコードへの編集を受け付けると、編集後の前記第３ソースコードに、取得した前記置換規則とは逆向きの置換規則を適用して、新たなソースコードを生成し、
特定した前記格納先に格納された前記第２ソースコードを、生成した前記新たなソースコードに更新する、
処理をコンピュータに実行させることを特徴とする編集支援プログラム。
【請求項２】
第１テキストを第２テキストに置換する置換規則を取得し、
前記第２ソースコードに含まれるテキスト内容を表す解析情報を生成し、
前記解析情報に前記第１テキストが含まれている場合、前記第１テキストを前記第２テキストに置換し、置換後の解析情報を生成し、
前記置換後の解析情報に基づいて、前記第３ソースコードを生成し、
生成された前記第３ソースコードへの編集を受け付けると、編集範囲の内容に基づいて前記置換後の解析情報を更新し、
前記編集範囲に前記第２テキストが含まれている場合、前記置換後の解析情報内の前記第２テキストに前記第１テキストを関連付け、
前記関連付けが行われた置換後の解析情報を用いて、前記第２テキストが前記第１テキストに置換された前記編集範囲の内容を含む前記新たなソースコードを生成する
処理をコンピュータに実行させることを特徴とする請求項１記載の編集支援プログラム。
【請求項３】
前記解析情報に、前記第２ソースコードにおける位置情報を関連付けて置換後の解析情報を生成し、
前記新たなソースコードにより更新する前記第２ソースコード内の位置を前記位置情報により特定する、
処理をコンピュータに実行させることを特徴とする請求項２記載の編集支援プログラム。
【請求項４】
前記第２ソースコードに対して更新が行われたことが通知され、前記更新が制御対象の前記第３ソースコードに基づく更新ではなく、制御対象の前記第３ソースコードが編集中である場合、制御対象の前記第３ソースコードおよび前記置換後の解析情報を破棄する
処理をコンピュータに実行させることを特徴とする請求項１乃至３のうちの何れか１項に記載の編集支援プログラム。
【請求項５】
第１ソースコードに含まれる命令文のうち、第２ソースコードを前記第１ソースコードに取り込む命令文の指定を受け付けると、指定された前記命令文を解析して、該命令文に含まれる、前記第２ソースコードを指定する情報と、該第２ソースコードに含まれるテキストを置換する置換規則とを取得し、
取得した前記第２ソースコードを指定する情報に基づき、該第２ソースコードの格納先を特定して、特定した該格納先から該第２ソースコードを取得し、
取得した前記第２ソースコードに、取得した前記置換規則を適用して、第３ソースコードを生成し、
生成した前記第３ソースコードへの編集を受け付けると、編集後の前記第３ソースコードに、取得した前記置換規則とは逆向きの置換規則を適用して、新たなソースコードを生成し、
特定した前記格納先に格納された前記第２ソースコードを、生成した前記新たなソースコードにより更新する、
処理をコンピュータが実行することを特徴とする編集支援方法。
【請求項６】
第１ソースコードに含まれる命令文のうち、第２ソースコードを前記第１ソースコードに取り込む命令文の指定を受け付けると、指定された前記命令文を解析して、該命令文に含まれる、前記第２ソースコードを指定する情報と、該第２ソースコードに含まれるテキストを置換する置換規則とを取得し、
取得した前記第２ソースコードを指定する情報に基づき、該第２ソースコードの格納先を特定して、特定した該格納先から該第２ソースコードを取得し、
取得した前記第２ソースコードに、取得した前記置換規則を適用して、第３ソースコードを生成する生成部と、
生成された前記第３ソースコードへの編集を受け付けると、編集後の前記第３ソースコードに、取得された前記置換規則とは逆向きの置換規則を適用して、新たなソースコードを生成し、
特定された前記格納先に格納された前記第２ソースコードを、生成した前記新たなソースコードにより更新する更新部と、
を備えることを特徴とする編集支援装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、編集支援プログラム、装置および方法に関する。
【背景技術】
【０００２】
近年、COBOL言語などを用いたレガシーシステムは、新規開発より、オープン系への移行や保守が行われることが多い。また、過去に開発されたシステムを代替りした技術者が保守するというケースも少なくない。そのため、そのようなレガシーシステムに用いられる言語の開発環境には保守性の向上が求められている。
【０００３】
関連する技術として、データ項目及びファイル名称や属性に加え、レコード定義を同一のコピー文に統一化，標準化し、既開発ソフトウェアの修正作業を効率化する技術が提案されている（例えば、特許文献１を参照）。また、既存ソフトウェア生産物の異名同義データ項目の標準化、統一化する技術が提案されている（例えば、特許文献２を参照）。また、第１級高級プログラム言語で記述された入力プログラムを、第２高級プログラム言語で記述された目的プログラムへ変換する技術が提案されている（例えば、特許文献３を参照）。
【０００４】
また、COBOL言語のCOPY...REPLACING文を使用して参照されるコピーブックにおいて、置き換えられた値を表示する場合に、読み取り専用モードで表示する技術が提案されている（例えば、非特許文献１を参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平０５−２０４６２５号公報
【特許文献２】特開平０６−１３１１６４号公報
【特許文献３】特開２０１０−１３４４８７号公報
【非特許文献】
【０００６】
【非特許文献１】″拡張コピーブック・ビュー″、［online］、マイクロフォーカス株式会社  製品マニュアル、［平成28年6月13日検索］、インターネット〈URL：http://www.microfocus.co.jp/manuals/ED22U2/html/GUID-A2EA4D2F-6198-4D61-8573-425091D14399.html〉
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ソースコードの保守作業において、他のソースコードを自ソースコードに取り込む場合がある。ソースコードファイルの特定のテキストを他のテキストに置き換えて取り込む場合は、擬似的かつ一時的なファイルを表示することになり、読み取り専用とせざるを得ない。
【０００８】
例えば、大きなソースコードファイルを取り込む場合に、置換されたソースコードファイルの内容を参照しながら、他のソースコード（置換元のオリジナルソースコードファイル）の編集を行いたい場合がある。その場合、例えば、他のソースコードを他のエディタで開いて、他のソースコードと置換された読み取り専用のソースコードの双方の内容を照らしあわせながら、変更が必要な位置を探し出して編集する必要があり、手間がかかる。
【０００９】
１つの側面として、本発明は、ソースコードの編集作業を簡単化することができることを目的とする。
【課題を解決するための手段】
【００１０】
１つの態様では、編集支援プログラムは、第１ソースコードに含まれる命令文のうち、第２ソースコードを前記第１ソースコードに取り込む命令文の指定を受け付けると、指定された前記命令文を解析して、該命令文に含まれる、前記第２ソースコードを指定する情報と、該第２ソースコードに含まれるテキストを置換する置換規則とを取得し、取得した前記第２ソースコードを指定する情報に基づき、該第２ソースコードの格納先を特定して、特定した該格納先から該第２ソースコードを取得し、取得した前記第２ソースコードに、取得した前記置換規則を適用して、第３ソースコードを生成し、生成した前記第３ソースコードへの編集を受け付けると、編集後の前記第３ソースコードに、取得した前記置換規則とは逆向きの置換規則を適用して、新たなソースコードを生成し、特定した前記格納先に格納された前記第２ソースコードを、生成した前記新たなソースコードに更新する、処理をコンピュータに実行させる。
【発明の効果】
【００１１】
１つの側面によれば、ソースコードの編集作業を簡単化することができる。
【図面の簡単な説明】
【００１２】
【図１】実施形態の編集支援装置の一例を示す図である。
【図２】実施形態の処理の流れの一例を示すフローチャートである。
【図３】図２のステップＳ１の処理の一例を示すフローチャートである。
【図４】置換規則情報の例を示す図である。
【図５】図２のステップＳ２の処理の一例を示すフローチャートである。
【図６】第２ソースコードおよびその解析情報の一例を示す図である。
【図７】図２のステップＳ３の処理の一例を示すフローチャートである。
【図８】置換後の解析情報の一例を示す図である。
【図９】図２のステップＳ４の処理を示すフローチャートである。
【図１０】置換後の解析情報および疑似ソースコードの一例を示す図である。
【図１１】図２のステップＳ５の処理の一例を示すフローチャートである。
【図１２】変更後の疑似ソースコードと解析情報の一例を示す図である。
【図１３】図２のステップＳ６の処理の一例を示すフローチャートである。
【図１４】第２ソースコードの更新の一例を示す図である。
【図１５】第２ソースコードテキストバッファに変更がされた場合の処理の一例を示す図である。
【図１６】編集支援装置のハードウェア構成の一例を示す図である。
【発明を実施するための形態】
【００１３】
＜実施形態の編集支援装置の構成の一例＞
以下、図面を参照して、実施形態について説明する。図１は、実施形態の編集支援装置の全体構成の一例を示す。編集支援装置１は、通信部１１と、制御部１２と、生成部１３と、更新部１４と、記憶部１５とを含む。
【００１４】
通信部１１は、他の装置に記憶されているソースコードを取り込む必要がある場合に、そのソースコードを受信する。なお、実施形態において、COBOLによって記述されたソースコードを用いるが、ソースコードに用いられる言語はCOBOLに限定されない。
制御部１２は、編集支援装置２における各種の処理を行う。
【００１５】
生成部１３は、第１ソースコードに含まれる命令文のうち、第２ソースコード（第１のソースコードとは異なるソースコード）を第１ソースコードに取り込む命令文（例えば、COPY文）の指定を受け付けると、指定された命令文を解析する。そして、生成部１３は、命令文に含まれる、第２ソースコードを指定する情報（例えば、ファイル名）と、第２ソースコードに含まれるテキストを置換する置換規則とを取得する。生成部１３は、さらに、取得された第２ソースコードを指定する情報に基づき、第２ソースコードの格納先を特定して、特定した格納先から第２ソースコードを取得する。実施形態では、格納先は、記憶部１５であるとする。
【００１６】
生成部１３は、生成部１３により取得されたソースコードに、取得された置換規則を適用して、第３ソースコードを生成する。第３ソースコードは、第２ソースコードに置換規則を適用した内容を擬似的に表すソースコードであり、以下、擬似ソースコードと称することがある。
【００１７】
更新部１４は、生成された第３ソースコードへの編集（変更）を受け付けると、編集後の擬似ソースコードに、取得された置換規則とは逆向きの置換規則を適用して、新たなソースコードを生成する。新たなソースコードは、第２ソースコードを更新するための一時テキストであり、以下、一時テキストと称することがある。
【００１８】
更新部１４は、特定された格納先（記憶部１５）に格納されたソースコードを、生成された新たなソースコードにより更新する。
【００１９】
記憶部１５は、第１ソースコード、第２ソースコード、擬似ソースコード、一時テキスト等の実施形態で用いられる各種データを記憶する。記憶部１５は、上記全てのデータを記憶していなくてもよく、通信部１１が、一部のデータを外部の記憶装置から取得してもよい。
【００２０】
編集支援装置１における制御部１２、生成部１３、更新部１４は、例えば、COBOLの統合開発環境（Integrated Development Environment:IDE）のエディタに含まれるように構成されていてもよい。その場合、IDE内に存在する複数のエディタ間で通信が行われることが可能であって、例えば、一つのエディタで行われた編集内容が他のエディタに通知可能であってもよい。
【００２１】
図２は、実施形態の処理の流れの一例を示すフローチャートである。図２におけるステップＳ１〜Ｓ４の処理は、例えば、ユーザがあるソースコードのCOPY文を選択してCOPY文に指定されているソースコード（第２ソースコード）を参照する指示をした場合に開始される。
【００２２】
生成部１３は、第２ソースコードを取得し、COPY文から置換規則情報を生成する（ステップＳ１）。生成部１３は、第２ソースコードのテキストバッファを解析して解析情報を生成する（ステップＳ２）。生成部１３は、生成した置換規則情報と解析情報から置換後の解析情報を生成する（ステップＳ３）。生成部１３は、置換後の解析情報から疑似ソースコード（第３ソースコード）を生成してエディタに表示する（ステップＳ４）。
【００２３】
図２におけるステップＳ５、Ｓ６の処理は、ステップＳ４において生成された疑似ソースコードが、ユーザの編集操作により変更（更新）されたことを示す通知が更新部１４に送られたときに開始される。
【００２４】
更新部１４は、変更したテキストを解析して置換後の解析情報を更新する（ステップＳ５）。更新部１４は、置換元のソースコードのテキストバッファに反映する（ステップＳ６）。
【００２５】
図３は、図２のステップＳ１の処理の一例を示すフローチャートである。生成部１３は、第１ソースコードに含まれる命令文の中でユーザによって指定されたCOPY文を解析し（ステップＳ１０１）、取り込むソースコード（第２ソースコード）のファイル名と、置換規則とを取得する（ステップＳ１０２）。置換規則は、例えば、REPLACING、またはDISJOINNING/JOINING指定である。置換規則として、REPLACING指定が用いられている場合（ステップＳ１０３でＹＥＳ）、生成部１３は、置換方法が”完全一致”であると判断する（ステップＳ１０４）。置換方法として用いられる”完全一致”は、置換前のテキストとして指定されているテキストと完全に一致するテキストが取り込むソースコードに存在する場合に置換を行うことを意味する。
【００２６】
置換規則として、DISJOINNING/JOINING指定が用いられており（ステップＳ１０７でＹＥＳ）、AS句として”SUFFIX”が用いられている場合（ステップＳ１０８で”SUFFIX”）、生成部１３は、置換方法を”後方一致”であると判定する（ステップＳ１０９）。置換方法として用いられる”後方一致”は、置換前のテキストとして指定されているテキストが末尾に存在するテキストが取り込むソースコードに存在する場合に置換を行うことを意味する。
【００２７】
また、置換規則として、DISJOINNING/JOINING指定が用いられており（ステップＳ１０７でＹＥＳ）、AS句として”PERFIX”が用いられている場合（ステップＳ１０７で”PERFIX”）、生成部１３は、置換方法が”前方一致”であると判定する（ステップＳ１１０）。置換方法として用いられる”前方一致”は、置換前のテキストとして指定されているテキストが先頭に存在するテキストが取り込むソースコードに存在する場合に置換を行うことを意味する。
【００２８】
置換規則として、REPLACING指定、DISJOINNING/JOINING指定のいずれも用いられていない場合（ステップＳ１０３よびステップＳ１０７でＮＯ）、生成部１３は、通常のエディタ処理を行う（ステップＳ１１１）。この場合、後述する処理は行われない。
【００２９】
生成部１３は、ステップＳ１０４、ステップＳ１０９またはステップ１１０において、置換方法を判定した後、置換規則から、置換元（置換前）および置換後のテキスト情報と種別を取得する（ステップＳ１０５）。生成部１３は、置換元および置換後のテキスト情報、種別、置換方法に基づいて、置換規則を示す置換規則情報を生成する（ステップＳ１０６）。
【００３０】
テキスト情報は、例えば、置換対象の文字列である。また、種別は置換対象のテキストの種別を意味し、例えば、一意名、仮原文、COBOL語（語）である。
【００３１】
図４（ａ）〜（ｃ）は、置換規則情報の例を示す図である。図４（ａ）は、一意名の置換を行う場合の例である。図４（ａ）に示される例は、置換対象のソースコードに"FMT-DATE"というテキストと完全に一致するテキスト（第１テキスト）が存在する場合に、そのテキストを"TODAY"（第２テキスト）に置換することを意味する。
【００３２】
図４（ｂ）は、仮原文の置換を行う場合の例を示す。図４（ｂ）に示される置換規則の一行目は、置換対象のソースコードに":DATE:"というテキストと完全に一致するテキスト（第１テキスト）が存在する場合に、そのテキストを"TODAY"（第２テキスト）に置換することを意味する。図４（ｂ）に示される置換規則の二行目は、置換対象のソースコードに":TIME:"というテキストと完全に一致するテキスト（第１テキスト）が存在する場合に、そのテキストを"NOW"（第２テキスト）に置換することを意味する。
【００３３】
図４（ｃ）は、COBOL語の置換を示す。図４（ｃ）に示される置換規則は、置換対象のソースコードに"XXX"というテキストと前方一致するテキスト（第１テキスト）が存在する場合に、そのテキストを"TODAY"（第２テキスト）に置換することを意味する。
【００３４】
なお、置換対象のテキストは文字に限られず、”；”、”：”等の記号であってもよく、図４（ｂ）の例に示されるように文字と記号の組み合わせであってもよい。また、置換対象のテキストは、複数の単語を含んでいてもよい。また、実施形態では、第２ソースコートとして、図４（ａ）に示されるソースコードが用いられ、ステップＳ１０６において、図４（ａ）の置換規則を示す置換規則情報を生成したとする。
【００３５】
図５は、図２のステップＳ２の処理の一例を示すフローチャートである。生成部１３は、第１ソースコードのCOPY文に指定されているソースコード（第２ソースコード）のテキストバッファを取得する（ステップＳ２０５）。第２ソースコードがエディタにより開かれている場合、生成部１３は、そのエディタからテキストバッファを取得する。第２ソースコードがエディタにより開かれていない場合、生成部１３は、新たなエディタを起動してそのエディタから第２ソースコードのテキストバッファを取得する。
【００３６】
生成部１３は、取得したテキストバッファを解析して第２ソースコードのテキスト内容を表す解析情報を生成する（ステップＳ２０６）。
【００３７】
図６は、第２ソースコードおよびその解析情報の一例を示す図である。図６に示されるように、解析情報は、ＩＤ、行、桁、文字列、長さ、種類を含む。ＩＤは、そのソースコード内で一意の値である。行は、ソースコード内における先頭からの行数である。桁は、文字列が存在する行における、先頭からの桁数である。文字列は、テキスト情報であり、文字だけでなく、記号、空白等も含む。長さは、文字列の長さ（例えば、バイト数）を示す。種類は、文字列の種類を示す。
【００３８】
生成部１３は、例えば、第２ソースコードの空白および改行をフレーズの区切り位置として認識し、フレーズ毎に情報を取得する。生成部１３は、取得した情報には、ＩＤを割付け、行、桁、文字列、長さ、種類を付加する。なお、解析情報に含まれる情報は、図６に示す例に限られないが、後述する処理において解析情報からソースコードを生成するので、少なくともソースコードを生成するために必要な情報が含まれる。
【００３９】
図７は、図２のステップＳ３の処理の一例を示すフローチャートである。生成部１３は、図２のステップＳ２で生成した第２ソースコードの解析情報の読み込み処理を開始する（ステップＳ３０１）。生成部１３は、取得した解析情報のうち読み込みを完了していないレコードから、ＩＤ順に１レコード（１行）読み込む（ステップＳ３０２）。生成部１３は、読み込んだ解析情報を退避させる（ステップＳ３０３）。ステップＳ３０３において、例えば、生成部１３は、解析情報を記憶部１５に一時的に記憶させる。
【００４０】
生成部１３は、図２のステップＳ１で生成された、第１ソースコードのCOPY文の置換規則情報を取得し、ステップＳ３０２で読み込んだ解析情報が置換規則に一致するかを判定する（ステップＳ３０４）。解析情報が置換規則に一致する場合（ステップＳ３０４でＹＥＳ）、生成部１３は、置換規則に基づいて解析情報の文字列を置換する（ステップＳ３０５）。例えば、生成部１３は、置換方法が「完全一致」である場合、解析情報の文字列が置換規則情報における「置換前」に示される情報と完全一致するかを判定し、一致する場合、解析情報の文字列を「置換後」に示される情報に置換する。
【００４１】
生成部１３は、退避していた第２ソースコードの解析情報を、置換した文字列に関連付ける（ステップＳ３０６）。
【００４２】
図８は、置換後の解析情報の一例を示す図である。図２のステップＳ１において、置換規則として図４（ａ）に示す置換規則が生成されている。そのため、ＩＤが”４”のレコードの文字列は、図７に示される置換前の解析情報では"FMT-DATE"であったが、ステップＳ３０５の処理により"TODAY"に置換されている。
【００４３】
また、図８に示される例では、生成部１３は、ステップＳ３０６の処理により、"TODAY"に第２ソースコードの情報として、第２ソースコードの行、桁、文字列（置換前の文字列）を関連づける。また、生成部１３は、図８に示されるように、置換された文字列に、置換規則情報における置換方法を関連付けてもよい。
【００４４】
なお、生成部１３は、置換後の解析情報に第２ソースコードの情報を関連付ける際に、第２ソースコードの情報のコピーを置換後の解析情報に付加してもよいし、第２ソースコードの情報のリンクを置換後の解析情報に付加してもよい。
【００４５】
生成部１３は、解析情報が置換規則に一致しないと判定した場合（ステップＳ３０４でＮＯ）、退避した第２ソースコードの情報から位置（行、桁）のみを、置換後の解析情報に関連付ける（ステップＳ３０７）。図８に示される例では、ＩＤ１〜３、５〜９の文字列には、第２ソースコードの情報のうち、行、列のみが置換後の解析情報に関連付けられている。
【００４６】
生成部１３は、該当のレコードについて、置換後の解析情報を生成し、出力する（ステップＳ３０８）。生成部１３は、解析情報の読み込みが全てのレコードについて完了していれば、第２ソースコードの解析情報の読み込みを終了し（ステップＳ３０９）、読み込んでいないレコードがあれば、ステップＳ３０２〜Ｓ３０８の処理を繰り返す。
【００４７】
図９は、図２のステップＳ４の処理の一例を示すフローチャートである。生成部１３は、後述する処理で擬似ソースコードを作成するために、新規のテキストファイルを疑似ソースコード用テキストファイルとして作成する（ステップＳ４０１）。生成部１３は、図２のステップＳ３で生成した置換後の解析情報を取得し、レコード毎の読み込みを開始する（ステップＳ４０２）。
【００４８】
生成部１３は、取得した置換後の解析情報のうち、読み込みをしていないレコードを１レコード読み込む（ステップＳ４０３）。生成部１３は、図８に示されるような置換後の解析情報に従って、テキストを疑似ソースコードファイル（ステップＳ４０１で作成したファイル）に書き出す（ステップＳ４０４）。
【００４９】
生成部１３は、全てのレコードについてステップＳ４０３、Ｓ４０４の処理を繰り返す。生成部１３は、置換後の解析情報の全てのレコードの読み込みを完了したら、繰り返し処理を終了する（ステップＳ４０５）。
【００５０】
生成部１３は、生成された疑似ソースコードのテキストバッファを作成し、エディタに表示させる（ステップＳ４０６）。
【００５１】
上記の処理で疑似ソースコードがエディタに表示されることにより、ユーザは、COPY文により取り込むソースコードを、置換規則による置換が行われた状態で参照することができる。
【００５２】
図１０は、置換後の解析情報および疑似ソースコードの一例を示す図である。図１０に示される疑似ソースコードは、図６に示される第２ソースコードにおける"FMT-DATE"が"TODAY"に置換されたテキストとなっている。
【００５３】
図１１は、図２のステップＳ５の処理の一例を示すフローチャートである。ステップＳ５の処理は、ステップＳ４で作成した疑似ソースコードのテキストバッファに対して編集（変更）が行われたことを示す通知（テキスト変更通知）を更新部１４が受けることにより開始される。更新部１４は、テキスト変更通知を受け取ると、変更されたテキストと変更範囲を示す情報（位置情報）を取得する（ステップＳ５０１）。
【００５４】
更新部１４は、疑似ソースコードのテキストバッファのうち、変更が行われた範囲のテキストおよび当該テキストの前後の行のテキストを抽出する（ステップＳ５０２）。ステップＳ５０２において抽出する前後の行は、例えば変更が行われたテキストの前後１行であるが、抽出する行数は、前後１行に限定されない。更新部１４は、置換前後の行を抽出することにより、後述の処理で解析情報を更新する場所が明確になる。
【００５５】
更新部１４は、抽出したテキストを解析して、変更が行われた範囲における置換後の解析情報を更新する（ステップＳ５０３）。更新部１４は、変更が行われたテキストに、置換規則の「置換後」のテキストに該当する文字列が含まれているか判定する（ステップＳ５０４）。置換規則の置換後のテキストに該当する文字列は、図４（ａ）に示される例では、"TODAY"である。
【００５６】
置換規則の置換後のテキストに該当する文字列が含まれている場合、更新部１４は、置換規則情報から、第２ソースコードに逆置換するための解析情報を関連付ける（ステップＳ５０５）。逆置換とは、取得した置換規則とは逆向きの置換規則を適用することを意味する。例えば、ある置換規則が"FMT-DATE"を"TODAY"に置き換えるケースでは、その逆置換は、"TODAY"を"FMT-DATE"に置き換える処理に相当する。第２ソースコードに逆置換するための解析情報は、置換規則情報の「置換前」の項目のテキストであり、図４（ａ）に示される例では、"FMT-DATE"である。
【００５７】
なお、更新部１４は、第２ソースコードの情報を関連付ける際、第２ソースコードのテキストが重複する場合は候補を表示し、ユーザに選択させる。例えば、"FMT-DATE"を"TODAY"に置換させる置換規則と、"DATE"を"TODAY"に置換させる置換規則の両方がある場合、更新部１４は、逆置換するための解析情報として、"FMT-DATE"と"DATE"のいずれを適用するかをユーザに選択させる。
【００５８】
図１２は、変更後の疑似ソースコードと解析情報の一例を示す図である。図１２に示される例では、疑似ソースコードに"01  XXX REDEFINES TODAY PIC X(8)."というテキストを追加する編集が行われている。
【００５９】
この場合、更新部１４は、追加されたテキストを示す情報を解析情報に追加する。図１２に示される例では、ＩＤ１０〜２２のレコードが追加されている。また、ＩＤ１７において、文字列が"TODAY"であり、図４（ａ）に示される置換規則の「置換後」のテキストに該当する。そのため、生成部１３は、"TODAY"に、置換規則情報の「置換前」の項目のテキストである"FMT-DATE"を付加する。また、更新部１４は、図１２に示すように、置換方法を付加してもよい。
【００６０】
図１３は、図２のステップＳ６の処理の一例を示すフローチャートである。更新部１４は、ステップＳ５において更新された置換後の解析情報を取得し、更新の開始位置から１レコード毎に読み込みを開始する（ステップＳ６０１）。解析情報の更新の開始位置は、図１２に示される例では、ＩＤ１０のレコードである。
【００６１】
更新部１４は、置換後の解析情報を１レコード読み込む（ステップＳ６０２）。更新部１４は、読み込んだレコードに第２ソースコードの情報が関連付けられているか判定する（ステップＳ６０３）。
【００６２】
更新部１４は、読み込んだレコードに第２ソースコードの情報が関連付けられている場合（ステップＳ６０３でＹＥＳ）、第２ソースコードの情報を用いてテキストを一時テキストに書き出す（ステップＳ６０４）。更新部１４は、読み込んだレコードに第２ソースコードの情報が関連付けられていない場合、置換後の解析情報のテキスト（図１２に示す例では「文字列」欄のテキスト）を用いてテキストを一時テキストに書き出す（ステップＳ６０５）。
【００６３】
更新部１４は、置換後の解析情報の更新終了位置まで読み込みが終了した場合、繰り返し処理を終了し、読み込みが終了していないレコードが残っている場合、ステップＳ６０２〜Ｓ６０５の処理を繰り返す（ステップＳ６０６）。解析情報の更新終了位置は、図１２に示される例では、ＩＤ２２のレコードである。
【００６４】
図１４は、第２ソースコードの更新の一例を示す図である。図１４に示される一時テキストは、図１３のステップＳ６０１〜Ｓ６０６の処理により生成されたテキストである。図１４に示される一時テキストにおいて、"FMT-DATE"という部分は、図１２における第２ソースコードの情報から得られたテキストであり、ステップＳ６０４の処理により書き出しが行われたテキストである。図１４に示される一時テキストのうち、"FMT-DATE"以外の部分は、ステップＳ６０５の処理により図１２における解析情報の”文字列”欄から書き出しが行われたテキストである。
【００６５】
図１４に示される例のように、図１２に示される疑似ソースコードにおいて"TODAY"であった部分は、"FMT-DATE"に置き換わり、つまり置換規則とは逆向きの置換規則が適用された状態となっている。
【００６６】
更新部１４は、置換後の解析情報の更新範囲の前または後のレコードに関連付けられている第２ソースコードの情報に基づいて、第２ソースコードにおけるテキストの更新範囲を特定する（ステップＳ６０７）。図１２に示す例では、更新範囲はＩＤ１０〜２２であるが、その前のＩＤ１〜９に関連付けられている第２ソースコードの位置（行）は、１である。すなわち、更新部１４は、ＩＤ１０〜２２に示される追加されたテキストは、第２ソースコードの２行目であるということを特定することができる。
【００６７】
例えば、疑似ソースコードで行の削除が行われた場合に、あるテキストの疑似ソースコードにおける位置と第２ソースコードにおける位置とが異なる場合がある。しかし、変更後の解析情報に第２ソースコードの位置が関連付けられているため、更新部１４は、疑似ソースコード上で更新されたテキストの位置が第２ソースコードのどの位置に相当するか容易に特定することができる。
【００６８】
更新部１４は、変更後の解析情報における更新範囲の前または後のレコードの内容が、第２ソースコードの更新しようとしている部分の前または後のレコードの内容と一致するか確認することにより、第２ソースコードのテキストの更新範囲を確認してもよい。更新部１４がステップＳ６０７において更新範囲を特定するために用いるレコードは前または後の１レコードに限られない。例えば、更新部１４は、更新範囲の前後各１レコードずつを用いてもよく、更新範囲の前後の各複数レコードを用いてもよい。
【００６９】
更新部１４は、第２ソースコードのテキストバッファのステップＳ６０７で特定された位置を一時テキストの内容を用いて変更する（ステップＳ６０８）。図１４に示す例では、更新部１４は、" 01  XXX REDEFINES FMT-DATE PIC X(8)."というレコードを" 01  FMT-DATE PIC 9(8)."というレコードの後に追加する。
【００７０】
なお、更新部１４は、疑似ソースコードを表示するエディタに対して保存操作が行われた場合は、第２ソースコードを表示するエディタに保存指示を通知し、更新された第２ソースコードのファイルを保存する。
【００７１】
以上の処理により、ユーザは、COPY文により他のソースコードを取り込む際に、置換規則が適用された疑似ソースコードを編集することにより、取り込み対象のソースコード（第２ソースコード）を編集することが可能となる。
【００７２】
また、編集支援装置１は、疑似ソースコードに新規に追加されたテキストに置換規則における置換後のテキストが含まれていた場合に、置換規則における置換前のテキストに置き換えて第２ソースコードを更新する。そのため、疑似ソースコードに新規に追加されたテキストを適切に第２ソースコードに取り込むことができる。
【００７３】
また、疑似ソースコードの解析情報には、対応する第２ソースコードの情報として、位置情報（例えば、行、桁）が含まれているので、変更された範囲を特定し、第２ソースコードの適切な部分を更新することができる。
【００７４】
また、置換後の解析情報に第２ソースコードの情報を関連付けたことにより、エラーチェックもしやすくなる。例えば、"AA"を"BB"に置換する置換規則がある場合、疑似ソースコード上で"BB"を"AA"という文字列に書き換えたとする。しかし、"AA"は、置換規則により置換規則の置換対象であるため、再び置換後のエディタを開くと、追加した"AA"は"BB"に置換されてしまう。このような場面では、その部分が"BB"でよいかを作業者に警告を促し、妥当性を判定させたい。この場合、解析情報を参照すれば"BB"に置換が行われたか否かが分かるため、妥当性の判定も容易となる。
【００７５】
図１５は、第２ソースコードテキストバッファに変更がされた場合の処理の一例を示す図である。
【００７６】
第２ソースコードを表示するエディタから、第２ソースコードテキストバッファに変更がされたこと示す通知が送られた場合、制御部１２は、制御対象の擬似ソースコード（擬似ソースコードに基づく一時テキスト）からの変更であるか判定する（ステップＳ７０１）。制御対象の擬似ソースコード（一時テキスト）による更新でない場合、制御部１２は、制御対象の疑似ソースが編集中であるか判定する（ステップＳ７０２）。編集中である場合、制御部１２は、置換後の解析情報および疑似ソースコードを破棄する（ステップＳ７０３）。ステップＳ７０４において、制御部１２は、解析情報および疑似ソースコード破棄する前に、ユーザに破棄するかそのまま処理を続行するか確認させてもよい。
【００７７】
制御対象の疑似ソースコードからの変更でない場合、例えば、複数の疑似ソースコードが存在し、他の疑似ソースコードが編集されたと考えられる。制御対象の疑似ソースコードが編集中である場合、制御対象の疑似ソースコードにより第２ソースコードを更新してしまうと、上記の他の疑似ソースコードへの編集が上書きされてしまうおそれがある。
【００７８】
そのため、制御部１２は、ステップＳ７０３の処理により置換後の解析情報を破棄し、図２のステップＳ２に以降させることにより、編集された第２ソースコードを用いて解析情報を再作成する。これにより、例えば、複数の疑似ソースコードの編集が並行して行われたとしても、他の疑似ソースコードへの編集を制御対象の疑似ソースコードへの編集で上書きしてしまうことを防止することができる。
【００７９】
＜装置のハードウェア構成の一例＞
次に、図１６の例を参照して、編集支援装置のハードウェア構成の一例を説明する。図１６の例に示すように、バス１００に対して、プロセッサ１１１とRandom Access Memory(RAM)１１２とRead Only Memory(ROM)１１３とが接続される。また、バス１００に対して、補助記憶装置１１４と媒体接続部１１５と通信インタフェース１１６とが接続される。
【００８０】
プロセッサ１１１はＲＡＭ１１２に展開されたプログラムを実行する。実行されるプログラムとしては、実施形態における処理を行う編集支援プログラムが適用されてもよい。
【００８１】
ＲＯＭ１１３はＲＡＭ１１２に展開されるプログラムを記憶する不揮発性の記憶装置である。補助記憶装置１１４は、種々の情報を記憶する記憶装置であり、例えばハードディスクドライブや半導体メモリ等を補助記憶装置１１４に適用してもよい。媒体接続部１１５は、可搬型記録媒体１１８と接続可能に設けられている。
【００８２】
可搬型記録媒体１１８としては、可搬型のメモリや光学式ディスク（例えば、Compact Disc(CD)やDigital Versatile Disc(DVD)、半導体メモリ等）を適用してもよい。この可搬型記録媒体１１８に実施形態の処理を行う編集支援プログラムが記録されていてもよい。
【００８３】
図１に示す記憶部１５は、ＲＡＭ１１２や補助記憶装置１１４等により実現されてもよい。また、図１に示す通信部１１は、通信インタフェース１１６により実現されてもよい。さらに、図１に示す制御部１２、生成部１３、および更新部１４は、与えられた編集支援プログラムをプロセッサ１１１が実行することにより実現されてもよい。
【００８４】
ＲＡＭ１１２、ＲＯＭ１１３、補助記憶装置１１４および可搬型記録媒体１１８は、何れもコンピュータ読み取り可能な有形の記憶媒体の一例である。これらの有形な記憶媒体は、信号搬送波のような一時的な媒体ではない。
【００８５】
＜その他＞
本実施形態は、以上に述べた実施の形態に限定されるものではなく、本実施形態の要旨を逸脱しない範囲内で種々の構成または実施形態を取ることができる。
【符号の説明】
【００８６】
１    編集支援装置
１１    通信部
１２    制御部
１３    生成部
１４    更新部
１５    記憶部
１１１    プロセッサ
１１２    ＲＡＭ
１１３    ＲＯＭ
【図１】
2018005551.tif 000003
【図２】
2018005551.tif 000004
【図３】
2018005551.tif 000005
【図４】
2018005551.tif 000006
【図５】
2018005551.tif 000007
【図６】
2018005551.tif 000008
【図７】
2018005551.tif 000009
【図８】
2018005551.tif 000010
【図９】
2018005551.tif 000011
【図１０】
2018005551.tif 000012
【図１１】
2018005551.tif 000013
【図１２】
2018005551.tif 000014
【図１３】
2018005551.tif 000015
【図１４】
2018005551.tif 000016
【図１５】
2018005551.tif 000017
【図１６】
2018005551.tif 000018