(57)【要約】【課題】ＩＦ文によるネスト構造を有さない対象ソースコードを、ＩＦ文によるネスト構造を有する変換後ソースコードに変換するソースコード変換装置を提供すること。【解決手段】ソースコード変換装置は、ＣＯＢＯＬ言語によって記述された対象ソースコードを、ＣＯＢＯＬ言語によって記述された変換後ソースコードに変換する。ソースコード変換装置は、対象ソースコードに所定の条件を満たすＩＦ文が記述されている場合、所定の条件を満たすＩＦ文を、対象ＩＦ文として変換後ＩＦ文に変換する。所定の条件は、ＩＦ文がＴＨＥＮ指定及び下方の手続き名に制御を移すＧＯ  ＴＯ文のみを含むか、又は、ＩＦ文が下方の手続き名に制御を移すＧＯ  ＴＯ文のみを含む場合に満たされる。変換後ＩＦ文は、対象ＩＦ文と手続き名との間の文をＴＨＥＮ指定、ＥＬＳＥ指定及びＥＮＤ  ＩＦ指定によって構造化したものである。【選択図】図６
2018180678.tif 000002
【特許請求の範囲】
【請求項１】
ＣＯＢＯＬ言語によって記述された対象ソースコードを、ＣＯＢＯＬ言語によって記述された変換後ソースコードに変換するソースコード変換装置であって、
前記ソースコード変換装置は、記憶手段から前記対象ソースコードを取得可能であり、
前記ソースコード変換装置は、ソースコード変換手段を備えており、
前記ソースコード変換手段は、前記記憶手段から取得した前記対象ソースコードに所定の条件を満たすＩＦ文が記述されている場合、前記所定の条件を満たす前記ＩＦ文を、対象ＩＦ文として変換後ＩＦ文に変換するものであり、
前記所定の条件は、前記ＩＦ文がＴＨＥＮ指定及び下方の手続き名に制御を移すＧＯ  ＴＯ文のみを含むか、又は、前記ＩＦ文が前記下方の手続き名に制御を移す前記ＧＯ  ＴＯ文のみを含む場合に満たされ、
前記変換後ＩＦ文は、前記対象ＩＦ文が前記ＴＨＥＮ指定を含まない場合に前記対象ＩＦ文に前記ＴＨＥＮ指定を追加し、前記対象ＩＦ文の前記ＧＯ  ＴＯ文を実行されないように変換し、前記対象ＩＦ文にＥＬＳＥ指定を追加し、且つ、前記下方の手続き名の直前に前記対象ＩＦ文についてのＥＮＤ  ＩＦ指定を追加したものである
ソースコード変換装置。
【請求項２】
請求項１記載のソースコード変換装置であって、
前記変換後ＩＦ文は、前記対象ＩＦ文の前記ＧＯ  ＴＯ文をコメント文に変換することによって、前記対象ＩＦ文の前記ＧＯ  ＴＯ文を実行されないように変換したものである
ソースコード変換装置。
【請求項３】
コンピュータを、請求項１又は請求項２記載のソースコード変換装置として機能させるための
ソースコード変換プログラム。
【請求項４】
ＣＯＢＯＬ言語によって記述された対象ソースコードを、コンピュータによって、ＣＯＢＯＬ言語によって記述された変換後ソースコードに変換するソースコード変換方法であって、
前記ソースコード変換方法は、記憶手段から前記対象ソースコードを取得する取得ステップと、前記取得ステップで取得した前記対象ソースコードに所定の条件を満たすＩＦ文が記述されている場合、前記所定の条件を満たす前記ＩＦ文を、対象ＩＦ文として変換後ＩＦ文に変換する変換ステップとを含み、
前記所定の条件は、前記ＩＦ文がＴＨＥＮ指定及び下方の手続き名に制御を移すＧＯ  ＴＯ文のみを含むか、又は前記下方の手続き名に制御を移す前記ＧＯ  ＴＯ文のみを含む場合に満たされ、
前記変換後ＩＦ文は、前記対象ＩＦ文が前記ＴＨＥＮ指定を含まない場合には前記対象ＩＦ文に前記ＴＨＥＮ指定を追加し、前記対象ＩＦ文の前記ＧＯ  ＴＯ文を実行されないように変換し、前記対象ＩＦ文にＥＬＳＥ指定を追加し、且つ、前記下方の手続き名の直前に前記対象ＩＦ文についてのＥＮＤ  ＩＦ指定を追加したものである
ソースコード変換方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラミング言語によって記述された対象ソースコードを、プログラミング言語によって記述された変換後ソースコードに変換するソースコード変換装置に関する。
【背景技術】
【０００２】
例えばプログラムに含まれるソースコードの合計行数が１００万行を超すような大きなシステムは、メンテナンスを繰り返しながら長期間にわたって使用されることが多い。プログラムの構造はメンテナンスを施すたびに複雑になり、プログラムの機能を把握することが難しくなる。このようなシステムにおいては、多くの場合、プログラムの機能を把握するための支援装置が必要とされる。
【０００３】
例えば、特許文献１には、上述した支援装置が開示されている。特許文献１の支援装置は、ソースコード（プログラム）の条件文（ＩＦ文）によって構成されたネスト構造を解析し、複雑なネスト構造をグラフ化して表示する。特許文献１の支援装置は、プログラムのネスト構造の視覚的な把握を支援し、これにより、プログラムの機能の把握を支援する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−１８１３１１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１の支援装置は、ソースコード（プログラム）が構造化されていることを前提としている。より具体的には、プログラムがＩＦ文によるネスト構造を有していることを前提としている。しかしながら、長期間にわたってメンテナンスが施されてきたシステムは、構造化されていないプログラムによって構成されていることがある。例えば、プログラムに含まれるＩＦ文が実行文としてＧＯ  ＴＯ文のみを含んでいる場合がある。このような場合、プログラムはネスト構造を有さないため、特許文献１のような既存の支援装置は、プログラムの機能の把握に役立たない。
【０００６】
そこで、本発明は、ＩＦ文によるネスト構造を有さない対象ソースコードを、ＩＦ文によるネスト構造を有する変換後ソースコードに変換するソースコード変換装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明は、第１のソースコード変換装置として、
ＣＯＢＯＬ言語によって記述された対象ソースコードを、ＣＯＢＯＬ言語によって記述された変換後ソースコードに変換するソースコード変換装置であって、
前記ソースコード変換装置は、記憶手段から前記対象ソースコードを取得可能であり、
前記ソースコード変換装置は、ソースコード変換手段を備えており、
前記ソースコード変換手段は、前記記憶手段から取得した前記対象ソースコードに所定の条件を満たすＩＦ文が記述されている場合、前記所定の条件を満たす前記ＩＦ文を、対象ＩＦ文として変換後ＩＦ文に変換するものであり、
前記所定の条件は、前記ＩＦ文がＴＨＥＮ指定及び下方の手続き名に制御を移すＧＯ  ＴＯ文のみを含むか、又は、前記ＩＦ文が前記下方の手続き名に制御を移す前記ＧＯ  ＴＯ文のみを含む場合に満たされ、
前記変換後ＩＦ文は、前記対象ＩＦ文が前記ＴＨＥＮ指定を含まない場合に前記対象ＩＦ文に前記ＴＨＥＮ指定を追加し、前記対象ＩＦ文の前記ＧＯ  ＴＯ文を実行されないように変換し、前記対象ＩＦ文にＥＬＳＥ指定を追加し、且つ、前記下方の手続き名の直前に前記対象ＩＦ文についてのＥＮＤ  ＩＦ指定を追加したものである
ソースコード変換装置を提供する。
【０００８】
また、本発明は、第２のソースコード変換装置として、第１のソースコード変換装置であって、
前記変換後ＩＦ文は、前記対象ＩＦ文の前記ＧＯ  ＴＯ文をコメント文に変換することによって、前記対象ＩＦ文の前記ＧＯ  ＴＯ文を実行されないように変換したものである
ソースコード変換装置を提供する。
【０００９】
また、本発明は、第１のソースコード変換プログラムとして、
コンピュータを、第１又は第２のソースコード変換装置として機能させるための
ソースコード変換プログラムを提供する。
【００１０】
また、本発明は、第１のソースコード変換方法として、
ＣＯＢＯＬ言語によって記述された対象ソースコードを、コンピュータによって、ＣＯＢＯＬ言語によって記述された変換後ソースコードに変換するソースコード変換方法であって、
前記ソースコード変換方法は、記憶手段から前記対象ソースコードを取得する取得ステップと、前記取得ステップで取得した前記対象ソースコードに所定の条件を満たすＩＦ文が記述されている場合、前記所定の条件を満たす前記ＩＦ文を、対象ＩＦ文として変換後ＩＦ文に変換する変換ステップとを含み、
前記所定の条件は、前記ＩＦ文がＴＨＥＮ指定及び下方の手続き名に制御を移すＧＯ  ＴＯ文のみを含むか、又は前記下方の手続き名に制御を移す前記ＧＯ  ＴＯ文のみを含む場合に満たされ、
前記変換後ＩＦ文は、前記対象ＩＦ文が前記ＴＨＥＮ指定を含まない場合に前記対象ＩＦ文に前記ＴＨＥＮ指定を追加し、前記対象ＩＦ文の前記ＧＯ  ＴＯ文を実行されないように変換し、前記対象ＩＦ文にＥＬＳＥ指定を追加し、且つ、前記下方の手続き名の直前に前記対象ＩＦ文についてのＥＮＤ  ＩＦ指定を追加したものである
ソースコード変換方法を提供する。
【発明の効果】
【００１１】
本発明によるソースコード変換装置は、対象ＩＦ文を、ＴＨＥＮ指定とＥＬＳＥ指定とＥＮＤ  ＩＦ指定とを含む変換後ＩＦ文に変換すると共に、対象ＩＦ文に含まれるＧＯ  ＴＯ文を、実行されないように変換する。これにより、対象ＩＦ文を含む対象ソースコードを、ＩＦ文によるネスト構造を有する変換後ソースコードに変換できる。例えば、既存の支援装置によって変換後ソースコードのネスト構造を解析することで、プログラムの機能を容易に把握できる。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施の形態によるソースコード変換装置を示すブロック構成図である。
【図２】図１のソースコード変換装置の記憶装置に記憶されているモジュール（対象ソースコード）を例示する図である。
【図３】図１のソースコード変換装置のソースコード変換手段の機能を示すフローチャートである。
【図４】図２の対象ソースコードを変換して作成された変換後ソースコードを例示する図である。
【図５】図２の対象ソースコードを変換して作成された他の変換後ソースコードを例示する図である。
【図６】対象ＩＦ文と変換後ＩＦ文とを例示する図である。
【図７】非対象ＩＦ文を例示する図である。
【図８】図１のソースコード変換装置の第１の変形例によるソースコード変換システムを示すシステム構成図である。
【図９】図１のソースコード変換装置の第２の変形例によるソースコード変換システムを示すシステム構成図である。
【発明を実施するための形態】
【００１３】
図１に示されるように、本発明の実施の形態によるソースコード変換装置１０は、装置本体２０と、記憶装置（記憶手段）３０と、入力装置５０と、出力装置６０とを備えている。図２及び図４を併せて参照すると、ソースコード変換装置１０は、ＣＯＢＯＬ言語によって記述されたソースコード（対象ソースコード４０Ｔ）を、ＣＯＢＯＬ言語によって記述された別のソースコード（変換後ソースコード４０Ｃ）に変換するための装置である。
【００１４】
図１を参照すると、記憶装置３０は、例えば磁気ディスク装置であり、フォルダ（図示せず）を使用して様々なファイルを階層化し、記憶できる。特に、本実施の形態による記憶装置３０には、１以上のモジュール４０が記憶されている。記憶装置３０は、装置本体２０と通信可能に接続されており、装置本体２０からの指示に従ってファイルの読込、書込（記憶）等を行う。
【００１５】
図１及び図２を参照すると、本実施の形態によるモジュール４０には、プログラムのソースコードが記述されている。特に、本実施の形態によるモジュール４０のソースコードは、ＣＯＢＯＬ言語によって記述されている。モジュール４０は、例えばプログラミングツール（図示せず）を使用して作成される。モジュール４０は、文字、数字、記号等を組み合わせたモジュール名（図示せず）によって特定可能である。
【００１６】
本実施の形態において、モジュール４０の夫々は、一つのテキストファイルである。但し、モジュール４０にソースコードが記述されている限り、モジュール４０は、テキストファイルでなくてもよい。例えば、モジュール４０は、MICROSOFT EXCEL（登録商標）のワークシートであってもよい。この場合、一つのワークブックの中に、複数のワークシート（モジュール４０）が記憶されていてもよい。
【００１７】
図２に例示されるように、本実施の形態によるモジュール４０は、上から下に順に並ぶ１以上の行を含んでいる。換言すれば、本実施の形態によるソースコードは、１以上の行から構成されている。行の夫々には、行番号と文とが記述されている。例えば、図２に例示した行の１行目には、行番号「００１０００」と文（手続き名）「ＰＳＴＡＲＴ．」とが記述されている。
【００１８】
図１及び図２を参照すると、ソースコード変換装置１０は、記憶装置３０から所定のモジュール４０を読込んで、モジュール４０内に記述されたソースコードを対象ソースコード４０Ｔとして使用する。換言すれば、ソースコード変換装置１０は、記憶装置３０から対象ソースコード４０Ｔを取得可能である。
【００１９】
図１を参照すると、入力装置５０は、例えばキーボードやマウスである。入力装置５０は、装置本体２０と通信可能に接続されており、キーボードから入力された文字やマウスによって指示された位置を装置本体２０に通知する。
【００２０】
出力装置６０は、例えばディスプレイやプリンタである。出力装置６０は、装置本体２０と通信可能に接続されており、装置本体２０から転送された文字（例えば、対象ソースコード４０Ｔ）や図形等を表示又は印刷する。
【００２１】
装置本体２０は、例えばＰＣ（Personal Computer：図示せず）の本体である。装置本体２０は、ＣＰＵ（Central Processing Unit：図示せず）、主記憶装置（図８参照）等を備えている。記憶装置３０には様々なプログラムの実行形式ファイル（図示せず）が記憶されている。ＣＰＵは、実行形式ファイルを主記憶装置にローディングし、実行形式ファイル内の命令語を実行することで様々な機能を実現する。またＣＰＵが命令語を実行する過程において、記憶装置３０に記憶された所定のファイルが、主記憶装置内のバッファ領域を経由してプログラムの変数領域に読み込まれる。プログラムの変数領域に読み込まれたファイルの内容は、必要に応じて主記憶装置内のバッファ領域を経由して記憶装置３０に書き込まれる。上記の説明から理解されるように、記憶装置３０と主記憶装置とは、本実施の形態における読み込み及び書き込み可能な記憶手段として夫々機能する。本実施の形態の説明においては、記憶手段３０として記憶装置３０を使用する。
【００２２】
特に、本実施の形態による記憶装置３０には、ソースコード変換プログラム（図示せず）が記憶されている。ソースコード変換プログラムは、主記憶装置（図８参照）にローディングされ、ＣＰＵ（図示せず）によって実行される。これによって装置本体２０（コンピュータ）は、ソースコード変換手段２２として機能する。即ち、ソースコード変換プログラムは、コンピュータをソースコード変換装置１０として機能させるためのプログラムである。換言すれば、本実施の形態によるソースコード変換装置１０の装置本体２０は、ソースコード変換手段２２を備えている。
【００２３】
図１、図２及び図４を参照すると、本実施の形態によれば、ＣＰＵ（図示せず）がソースコード変換プログラム（図示せず）の命令語を実行することで、記憶装置３０に記憶されたモジュール４０について、ソースコードの変換が行われる。より具体的には、モジュール４０に記述された対象ソースコード４０Ｔが変換後ソースコード４０Ｃに変換される。以下、以上のように構成されたソースコード変換装置１０の機能及び動作について、ソースコード変換手段２２を様々な処理の実行主体として記述しつつ、詳細に説明する。
【００２４】
図１を参照すると、ソースコード変換手段２２は、例えば入力装置５０から入力された起動指示によって起動される。起動指示は、例えば、キーボード（入力装置５０）を使用して入力された所定のコマンドである。
【００２５】
図１及び図３を参照すると、ソースコード変換手段２２は、起動されると、対象モジュールを特定するための対象モジュール名を取得する（Ｓ３００）。例えば、ソースコード変換手段２２は、所定のコマンドと共に入力された対象モジュール名を取得する。次に、ソースコード変換手段２２は、記憶装置３０に記憶されたモジュール４０のうち取得した対象モジュール名によって特定される対象モジュールを読み込む（Ｓ３０２）。
【００２６】
次に、ソースコード変換手段２２は、ソースコード変換処理を行う（Ｓ３０４〜Ｓ３１６）。詳しくは、ソースコード変換手段２２は、読み込んだモジュール４０に記述されているソースコードを対象ソースコード４０Ｔ（図２参照）として使用する。ソースコード変換手段２２は、対象ソースコード４０Ｔの処理開始行から処理終了行までに記述された全ての行を対象行として順次参照し、対象行に所定の条件を満たすＩＦ文が記述されているか否かを判定する（Ｓ３０４、Ｓ３１６）。
【００２７】
本実施の形態において、処理開始行は、ＣＯＢＯＬのＰＲＯＣＥＤＵＲＥ  ＤＩＶＩＳＩＯＮの先頭行であり、処理終了行は、ＰＲＯＣＥＤＵＲＥ  ＤＩＶＩＳＩＯＮの末尾行である。但し、処理開始行及び処理終了行は、これと異なっていてもよい。例えば、処理開始行及び処理終了行は、所定のコマンドと共に入力されて指定されてもよい。
【００２８】
図６及び図７を参照すると、上述した所定の条件は、ＩＦ文がＴＨＥＮ指定及び下方の手続き名に制御を移すＧＯ  ＴＯ文のみを含むか（図６の対象ＩＦ文の例２参照）、又は、ＩＦ文が下方の手続き名に制御を移すＧＯ  ＴＯ文のみを含む場合（図６の対象ＩＦ文の例１参照）に満たされる。逆に言えば、上述した所定の条件は、ＩＦ文が上方の手続き名に制御を移すＧＯ  ＴＯ文を含むか（図７の非対象ＩＦ文の例１参照）、ＩＦ文がＥＬＳＥ指定を含むか（図７の非対象ＩＦ文の例２参照）、又は、ＩＦ文がＧＯ  ＴＯ文以外の実行文を含む場合（図７の非対象ＩＦ文の例３参照）には満たされない。
【００２９】
図１及び図３を参照すると、ソースコード変換手段２２は、対象行に所定の条件を満たすＩＦ文が記述されている場合（Ｓ３０４でＹＥＳの場合）、当該ＩＦ文に関するソースコードを変換する（Ｓ３０６〜Ｓ３１４）。一方、ソースコード変換手段２２は、対象行に所定の条件を満たすＩＦ文が記述されていない場合（Ｓ３０４でＮＯの場合）、変換開始行から変換終了行までの全ての行についてソースコード変換処理済みであるか判定する（Ｓ３１６）。ソースコード変換手段２２は、未処理の行が残っている場合（Ｓ３１６でＮＯの場合）、次の対象行に所定の条件を満たすＩＦ文が記述されているか否か判定する（Ｓ３０４）。
【００３０】
ソースコード変換手段２２は、記憶装置３０から取得した対象ソースコード４０Ｔに所定の条件を満たすＩＦ文４２が記述されている場合（Ｓ３０４でＹＥＳの場合）、所定の条件を満たすＩＦ文４２を、対象ＩＦ文４２Ｔとして変換後ＩＦ文４２Ｃに変換する（Ｓ３０６〜Ｓ３１４）。
【００３１】
詳しくは、ソースコード変換手段２２は、対象ＩＦ文４２ＴにＴＨＥＮ指定が含まれているか否か判定する（Ｓ３０６）。ソースコード変換手段２２は、対象ＩＦ文４２ＴがＴＨＥＮ指定を含まない場合（Ｓ３０６でＮＯの場合）、対象ＩＦ文４２ＴにＴＨＥＮ指定を追加する（Ｓ３０８）。次に、ソースコード変換手段２２は、対象ＩＦ文４２ＴのＧＯ  ＴＯ文を実行されないように変換する（Ｓ３１０）。次に、ソースコード変換手段２２は、実行されないようにしたＧＯ  ＴＯ文の直後に（対象ＩＦ文４２Ｔに）ＥＬＳＥ指定を追加する（Ｓ３１２）。次に、ソースコード変換手段２２は、実行されないようにしたＧＯ  ＴＯ文の飛び先である手続き名（下方の手続き名）の直前に、対象ＩＦ文４２ＴについてのＥＮＤ  ＩＦ指定を追加する（Ｓ３１４）。
【００３２】
図６を参照すると、上述したソースコード変換処理（図３のＳ３０６〜Ｓ３１４参照）の結果として、対象ＩＦ文４２ＴにＴＨＥＮ指定が含まれているか否かに係らず、変換後ＩＦ文４２Ｃは、ＴＨＥＮ指定を含む（図６の変換後ＩＦ文の例１及び例２参照）。
【００３３】
また、本実施の形態によれば、ＧＯ  ＴＯ文は、コメント化される。換言すれば、本実施の形態による変換後ＩＦ文４２Ｃは、対象ＩＦ文４２ＴのＧＯ  ＴＯ文をコメント文に変換することによって、対象ＩＦ文４２ＴのＧＯ  ＴＯ文を実行されないように変換したものである。また、本実施の形態によれば、コメント化されたＧＯ  ＴＯ文の直後にＣＯＮＴＩＮＵＥ文が追加される。但し、ＧＯ  ＴＯ文は、これと異なる方法で実行されないようにしてもよい。例えば、ＧＯ  ＴＯ文を削除してもよい。また、削除したＧＯ  ＴＯ文に代えてＣＯＮＴＩＮＵＥ文ではなくＮＥＸＴ  ＳＥＮＴＥＮＣＥ文を追加してもよい。
【００３４】
以下、図２及び図４を参照しつつ、ソースコード変換処理（図３のＳ３０４〜Ｓ３１６参照）の実施例について説明する。
【００３５】
図２に例示した対象ソースコード４０Ｔにおいて、行番号００１４００及び００１５００の行に記述されたＩＦ文４２（図２の［１］参照）は、上述の所定の条件を満たす対象ＩＦ文４２Ｔである。このため、この対象ＩＦ文４２Ｔに関するソースコードは、ソースコード変換処理によって変換され、図４の変換後ＩＦ文４２Ｃ（図４の［１］参照）となる。この変換後ＩＦ文４２Ｃは、変換後ソースコード４０Ｃにおいて、行番号００１４００から行番号Ｓ００００４までの行に記述されている。
【００３６】
変換後ＩＦ文４２Ｃにおいて、ＧＯ  ＴＯ文（行番号００１５００）は、ソースコード変換処理によってコメント化されている。また、変換後ＩＦ文４２Ｃには、ソースコード変換処理によって、ＴＨＥＮ指定の行（行番号Ｓ００００１）、ＣＯＮＴＩＮＵＥ文の行（行番号Ｓ００００２）、ＥＬＳＥ指定の行（行番号Ｓ００００３）及びＥＮＤ  ＩＦ指定の行（行番号Ｓ００００４）が追加されている。本実施例において、追加された行の行番号として、Ｓ００００１から始まる通番が設定されている。但し、追加された行の行番号は、どのように設定してもよいし、設定しなくてもよい。
【００３７】
変換後ＩＦ文４２Ｃにおいて、追加されたＥＬＳＥ指定の行（行番号Ｓ００００３）と追加されたＥＮＤ  ＩＦ指定の行（行番号Ｓ００００４）の間に記述された実行文は、ＣＯＢＯＬ言語の文法規則に準拠して、終止符（ピリオド）のない実行文に変換されている。一方、本実施例において、コメント化されたＧＯ  ＴＯ文（行番号００１５００）の終止符は、除去されていない。但し、コメント化されたＧＯ  ＴＯ文の終止符も、同様に除去してもよい。
【００３８】
図２に例示した対象ソースコード４０Ｔにおいて、所定の条件を満たす他の対象ＩＦ文４２Ｔ（図２の［２］乃至［４］参照）も、ソースコード変換処理によって同様に変換され、図４の変換後ＩＦ文４２Ｃ（図４の［２］乃至［４］参照）となる。
【００３９】
例えば、図２において行番号００２０００及び００２１００の行に記述された対象ＩＦ文４２Ｔ（図２の［２］参照）は、図４において行番号００２０００の行と行番号Ｓ００００８の行との間に記述された変換後ＩＦ文４２Ｃ（図４の［２］参照）となる。
【００４０】
図２及び図４から理解されるように、ＩＦ文４２によるネスト構造を有さない対象ソースコード４０Ｔは、ソースコード変換処理によって、ＩＦ文４２によるネスト構造を有する変換後ソースコード４０Ｃに変換できる。例えば、既存の支援装置（図示せず）によって変換後ソースコード４０Ｃのネスト構造を解析することで、プログラムの機能を容易に把握できる。更に、変換後ソースコード４０Ｃを使用してプログラムをメンテナンスすることも可能である。但し、変換後ソースコード４０Ｃには不適切な実行文（例えば、図４において行番号００２６００の行に記述されたＧＯ  ＴＯ文）も含まれる。このため、変換後ソースコード４０Ｃを使用してプログラムをメンテナンスする場合は、このような不適切な実行文を修正する必要がある。
【００４１】
図１及び図３を参照すると、ソースコード変換手段２２は、変換開始行から変換終了行までの全ての行についてソースコード変換処理（Ｓ３０６〜Ｓ３１４）が終了すると（Ｓ３１６でＹＥＳの場合）、変換後の対象モジュール（変換後ソースコード４０Ｃが記述されたモジュール４０）を記憶装置３０に書き込んで（Ｓ３１８）処理を終了する。
【００４２】
ソースコード変換手段２２は、変換後の対象モジュールを記憶装置３０に書き込む際、対象ソースコード４０Ｔが記述されたモジュール４０を、変換後ソースコード４０Ｃが記述されたモジュール４０によって更新してもよい。一方、ソースコード変換手段２２は、変換後ソースコード４０Ｃを、対象ソースコード４０Ｔが記述されたモジュール４０とは別に記憶装置３０に記憶してもよい。この場合、変換後ソースコード４０Ｃを、例えば、MICROSOFT EXCEL（登録商標）のワークシートに記憶してもよい。更に、このワークシートは、変換後ソースコード４０Ｃ以外のデータを含んでいてもよい。例えば、ワークシートは、変換後ソースコード４０Ｃから作成したフローチャートを含んでいてもよい。
【００４３】
図１及び図３を参照すると、以下に説明するように、本実施の形態によるソースコード変換手段２２は、既に説明した変形例に加えて、様々に変形可能である。
【００４４】
ソースコード変換手段２２は、起動されたとき、対象モジュール名でなく対象フォルダ名を取得してもよい（Ｓ３００）。この場合、ソースコード変換手段２２は、例えば、取得した対象フォルダ名によって特定される所定のフォルダの直下に存在するテキストファイルをモジュール４０として順次使用してもよい。また、ソースコード変換手段２２は、所定のフォルダ内を再帰的に検索し、所定のフォルダのサブフォルダに含まれるテキストファイルを含む全てのテキストファイルをモジュール４０として順次使用してもよい。ソースコード変換手段２２は、テキストファイルであるか否かを、様々な方法で決定できる。例えば、ソースコード変換手段２２は、テキストファイルであるか否かを、拡張子によって決定してもよい。
【００４５】
特に、本実施の形態によるソースコード変換手段２２は、ＣＯＢＯＬ言語によって記述されたソースコードを含むモジュール４０を、処理対象として使用する。この場合、ソースコード変換手段２２は、ソースコードがＣＯＢＯＬ言語によって記述されているか否かを、例えばファイルの拡張子によって決定してもよいし、ソースコードの記述内容によって決定してもよい。
【００４６】
図１乃至図５を参照すると、ソースコード変換手段２２は、図２に示される対象ソースコード４０Ｔを、図４に示される変換後ソースコード４０Ｃではなく、図５に示される変換後ソースコード４０Ｃに変換してもよい。より具体的には、変換後ソースコード４０Ｃに記述された実行文は、ＩＦ文４２によるネスト構造の深さに応じてインデントしてもよい。変換後ソースコード４０Ｃを、このように作成することで、目視によって変換後ソースコード４０Ｃのネスト構造を把握できる。
【００４７】
ソースコード変換手段２２は、変換後ソースコード４０Ｃを出力装置６０に出力してもよい。例えば、ソースコード変換手段２２は、変換後ソースコード４０Ｃをディスプレイ（出力装置６０）に表示してもよい。更に、ソースコード変換手段２２は、変換後ソースコード４０Ｃを記憶装置３０に記憶することなく、出力装置６０に出力してもよい。
【００４８】
以上に説明したように、本実施の形態によれば、ソースコード変換装置１０がソースコード変換を行う。本実施の形態によるソースコード変換方法は、記憶装置３０から対象ソースコード４０Ｔを取得する取得ステップと、取得ステップで取得した対象ソースコード４０Ｔに所定の条件を満たすＩＦ文４２が記述されている場合、所定の条件を満たすＩＦ文４２を、対象ＩＦ文４２Ｔとして変換後ＩＦ文４２Ｃに変換する変換ステップとを含んでいる。
【００４９】
本実施の形態によるソースコード変換装置１０は、既に述べた変形例に加えて、様々に変形可能である。以下、ソースコード変換装置１０の変形例について説明する。
【００５０】
図８に示されるように、本実施の形態の第１の変形例によるソースコード変換システム１００Ａは、ソースコード変換装置１０Ａと、ファイルサーバ７０Ａと、記憶装置（記憶手段）８０Ａとから構成されている。
【００５１】
記憶装置８０Ａは、例えば磁気ディスク装置であり、ファイルサーバ７０Ａと通信可能に接続されている。記憶装置８０Ａは、ファイルサーバ７０Ａからの指示に従ってファイルの読込、書込等を行う。本実施の形態による記憶装置８０Ａには、本実施の形態（図１参照）と同様に、１以上のモジュール４０が記憶されている。
【００５２】
ソースコード変換装置１０Ａは、装置本体２０Ａと、入力装置５０と、出力装置６０とを備えている。装置本体２０Ａは、ソースコード変換手段２２と、主記憶装置（記憶手段）３０Ａとを備えている。主記憶装置３０Ａは、例えば、モジュール４０を一時的に記憶可能である。ソースコード変換装置１０Ａは、通信回線９０Ａを経由して、ファイルサーバ７０Ａと通信可能に接続されている。通信回線９０Ａは、例えばＬＡＮ（Local Area Network）であってもよいし、インターネットであってもよい。
【００５３】
図８から理解されるように、ソースコード変換装置１０Ａは、ファイルサーバ７０Ａを経由して、記憶装置８０Ａと接続されている。このため、ソースコード変換装置１０Ａは、記憶装置８０Ａから対象ソースコード４０Ｔを取得可能であり、記憶装置８０Ａに変換後ソースコード４０Ｃを書込可能である。ソースコード変換装置１０Ａは、ソースコード変換装置１０（図１参照）と同様に、取得した対象ソースコード４０Ｔ（図２参照）に所定の条件を満たすＩＦ文４２が記述されている場合、所定の条件を満たすＩＦ文４２を、対象ＩＦ文４２Ｔとして変換後ＩＦ文４２Ｃ（図４参照）に変換する。更に、ソースコード変換装置１０Ａは、主記憶装置３０Ａに作成した変換後ソースコード４０Ｃを、記憶装置８０Ａに書き込むことができる。
【００５４】
以上の説明から理解されるように、第１の変形例によるソースコード変換システム１００Ａによれば、ソースコード変換装置１０Ａは、ファイルサーバ７０Ａの記憶装置８０Ａに記憶されたモジュール４０に対してソースコード変換処理を実行できる。これにより、複数のソースコード変換装置１０Ａを使用して、多数のモジュール４０に対してソースコード変換処理を並列的に実行できる。
【００５５】
図９に示されるように、本実施の形態の第２の変形例によるソースコード変換システム１００Ｂは、クライアント装置１０Ｂと、アプリケーションサーバ（ソースコード変換装置）７０Ｂと、記憶装置（記憶手段）８０Ｂとから構成されている。
【００５６】
ソースコード変換装置７０Ｂは、ソースコード変換手段２２と、主記憶装置（記憶手段）３０Ｂとを備えている。記憶装置８０Ｂは、例えば磁気ディスク装置であり、ソースコード変換装置７０Ｂと通信可能に接続されている。記憶装置８０Ｂは、ソースコード変換装置７０Ｂからの指示に従ってファイルの読込、書込等を行う。主記憶装置３０Ｂ及び記憶装置８０Ｂの夫々には、例えば、モジュール４０を記憶可能である。
【００５７】
クライアント装置１０Ｂは、装置本体２０Ｂと、入力装置５０と、出力装置６０と、記憶装置（記憶手段）３０とを備えている。装置本体２０Ｂは、ファイル送受信手段２６（ファイル送受信プログラム）を備えている。記憶装置３０は、１以上のモジュール４０を記憶している。クライアント装置１０Ｂは、通信回線９０Ｂを経由して、ソースコード変換装置７０Ｂと通信可能に接続されている。通信回線９０Ｂは、例えばＬＡＮであってもよいし、インターネットであってもよい。
【００５８】
図９から理解されるように、ソースコード変換装置７０Ｂは、クライアント装置１０Ｂを経由して、記憶装置３０と接続されている。このため、ソースコード変換装置７０Ｂは、記憶装置３０から対象ソースコード４０Ｔ（図２参照）を取得可能であり、記憶装置３０に変換後ソースコード４０Ｃ（図４参照）を書込可能である。
【００５９】
より具体的には、クライアント装置１０Ｂのファイル送受信手段２６は、記憶装置３０からモジュール４０を読み込んで、対象ソースコード４０Ｔ（図２参照）をソースコード変換装置７０Ｂに送信できる。ソースコード変換装置７０Ｂは、クライアント装置１０Ｂから受信した対象ソースコード４０Ｔを、ソースコード変換装置１０（図１参照）と同様に変換後ソースコード４０Ｃ（図４参照）に変換できる。ソースコード変換装置７０Ｂは、作成した変換後ソースコード４０Ｃを、クライアント装置１０Ｂのファイル送受信手段２６に送信できる。ファイル送受信手段２６は、ソースコード変換装置７０Ｂから受信した変換後ソースコード４０Ｃを、記憶装置３０に記憶したり、出力装置６０に出力したりできる。
【００６０】
ソースコード変換装置７０Ｂは、ファイル送受信手段２６から受信した対象ソースコード４０Ｔ（図２参照）を、一時的に主記憶装置３０Ｂ又は記憶装置８０Ｂに記憶してもよい。また、ソースコード変換装置７０Ｂは、作成した変換後ソースコード４０Ｃ（図４参照）を一時的に主記憶装置３０Ｂ又は記憶装置８０Ｂに記憶してもよい。
【００６１】
以上の説明から理解されるように、第２の変形例によるソースコード変換システム１００Ｂによれば、複数のクライアント装置１０Ｂが、ソースコード変換装置７０Ｂを共同利用できる。
【００６２】
本発明は、更に様々に変形可能であり、応用可能である。例えば、上述した第１の変形例によるソースコード変換装置１０Ａ（図８参照）と第２の変形例によるソースコード変換装置７０Ｂ（図９参照）とを組み合わせることもできる。また、本発明は、ＣＯＢＯＬ言語以外のプログラミング言語によって記述された対象ソースコード４０Ｔにも応用可能である。
【符号の説明】
【００６３】
１０，１０Ａ          ソースコード変換装置
１０Ｂ                クライアント装置
２０，２０Ａ，２０Ｂ  装置本体
２２                  ソースコード変換手段
２６                  ファイル送受信手段
３０                  記憶装置（記憶手段）
３０Ａ，３０Ｂ        主記憶装置（記憶手段）
４０                  モジュール
４０Ｔ                対象ソースコード
４０Ｃ                変換後ソースコード
４２                  ＩＦ文
４２Ｔ                対象ＩＦ文
４２Ｃ                変換後ＩＦ文
５０                  入力装置
６０                  出力装置
７０Ａ                ファイルサーバ
７０Ｂ                ソースコード変換装置（アプリケーションサーバ）
８０Ａ，８０Ｂ        記憶装置（記憶手段）
９０Ａ，９０Ｂ        通信回線
１００Ａ，１００Ｂ    ソースコード変換システム
【図１】
2018180678.tif 000003
【図２】
2018180678.tif 000004
【図３】
2018180678.tif 000005
【図４】
2018180678.tif 000006
【図５】
2018180678.tif 000007
【図６】
2018180678.tif 000008
【図７】
2018180678.tif 000009
【図８】
2018180678.tif 000010
【図９】
2018180678.tif 000011
【手続補正書】
【提出日】平成30年4月18日(2018.4.18)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項１
【補正方法】変更
【補正の内容】
【請求項１】
ＣＯＢＯＬ言語によって記述された対象ソースコードを、ＣＯＢＯＬ言語によって記述された変換後ソースコードに変換するソースコード変換装置であって、
前記ソースコード変換装置は、記憶手段から前記対象ソースコードを取得可能であり、
前記ソースコード変換装置は、ソースコード変換手段を備えており、
前記ソースコード変換手段は、前記記憶手段から取得した前記対象ソースコードに所定の条件を満たすＩＦ文が記述されている場合、前記所定の条件を満たす前記ＩＦ文を、対象ＩＦ文として変換後ＩＦ文に変換するものであり、
前記所定の条件は、前記ＩＦ文がＴＨＥＮ指定及び下方の手続き名に制御を移すＧＯ  ＴＯ文のみを含むか、又は、前記ＩＦ文が前記下方の手続き名に制御を移す前記ＧＯ  ＴＯ文のみを含む場合に満たされる一方、前記ＩＦ文が上方の手続き名に制御を移す前記ＧＯ  ＴＯ文を含む場合には満たされず、
前記変換後ＩＦ文は、前記対象ＩＦ文が前記ＴＨＥＮ指定を含まない場合に前記対象ＩＦ文に前記ＴＨＥＮ指定を追加し、前記対象ＩＦ文の前記ＧＯ  ＴＯ文を実行されないように変換し、前記対象ＩＦ文にＥＬＳＥ指定を追加し、且つ、前記下方の手続き名の直前に前記対象ＩＦ文についてのＥＮＤ  ＩＦ指定を追加したものである
ソースコード変換装置。
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項４
【補正方法】変更
【補正の内容】
【請求項４】
ＣＯＢＯＬ言語によって記述された対象ソースコードを、コンピュータによって、ＣＯＢＯＬ言語によって記述された変換後ソースコードに変換するソースコード変換方法であって、
前記ソースコード変換方法は、記憶手段から前記対象ソースコードを取得する取得ステップと、前記取得ステップで取得した前記対象ソースコードに所定の条件を満たすＩＦ文が記述されている場合、前記所定の条件を満たす前記ＩＦ文を、対象ＩＦ文として変換後ＩＦ文に変換する変換ステップとを含み、
前記所定の条件は、前記ＩＦ文がＴＨＥＮ指定及び下方の手続き名に制御を移すＧＯ  ＴＯ文のみを含むか、又は前記下方の手続き名に制御を移す前記ＧＯ  ＴＯ文のみを含む場合に満たされる一方、前記ＩＦ文が上方の手続き名に制御を移す前記ＧＯ  ＴＯ文を含む場合には満たされず、
前記変換後ＩＦ文は、前記対象ＩＦ文が前記ＴＨＥＮ指定を含まない場合には前記対象ＩＦ文に前記ＴＨＥＮ指定を追加し、前記対象ＩＦ文の前記ＧＯ  ＴＯ文を実行されないように変換し、前記対象ＩＦ文にＥＬＳＥ指定を追加し、且つ、前記下方の手続き名の直前に前記対象ＩＦ文についてのＥＮＤ  ＩＦ指定を追加したものである
ソースコード変換方法。