(57)【要約】      （修正有）【課題】プログラムを効率よく作成する。【解決手段】プログラムを所定のブロックに分け、ブロック毎に命令文字列群であるブロック別文字列５４と、所定の命令文字列である開始文字列と、終了文字列とを有するブロック別検索範囲５３が記憶部５０に格納されており、ロボット動作プログラム作成装置１が、処理の対象となっているブロック別文字列５４において、ブロック別検索範囲の開始文字列と、終了文字列に挟まれた検索文字列を検出し、この検索文字列を強調表示して表示部１４に表示させる。【選択図】図１
2010157155.tif 000002
【特許請求の範囲】
【請求項１】
パラメータを含む命令文字列を複数有する命令文字列群が記述されるブロックが複数組み合わさって構成されるプログラムの作成を支援するプログラム作成支援装置によるプログラム作成支援方法であって、
前記ブロックごとに記述される命令文字列群であるブロック別文字列と、
所定の命令文字列である、少なくとも１つの第１の命令文字列と、
が記憶部に格納されており、
前記プログラム作成支援装置が、
前記記憶部から読み込まれた第１の命令文字列と一致する第２の命令文字列を、前記ブロック別文字列から抽出し、
前記抽出した第２の命令文字列に関連する文字列を強調表示して表示部に表示させる、
ことを特徴とするプログラム作成支援方法。
【請求項２】
前記プログラム作成支援装置が、
前記強調した文字列を編集する
ことを特徴とする請求項１に記載のプログラム作成支援方法。
【請求項３】
前記文字列の編集とは、置換、削除、コピーのいずれかである
ことを特徴とする請求項２に記載のプログラム作成支援方法。
【請求項４】
パラメータを含む命令文字列を複数有する命令文字列群が記述されるブロックが複数組み合わさって構成されるプログラムの作成を支援するプログラム作成支援装置によるプログラム作成支援方法であって、
前記プログラムは、メインプログラムおよびサブプログラムを有しており、
前記ブロックごとに記述される命令文字列群であるブロック別文字列と、
前記サブプログラムを呼び出すためのサブプログラム呼出命令に関する文字列である、少なくとも１つの第１の命令文字列と、
前記サブプログラムと、
が記憶部に格納されており、
前記プログラム作成支援装置が、
前記記憶部から読み込まれた第１の命令文字列と一致する第２の命令文字列を、前記ブロック別文字列から抽出し、
前記第２の命令文字列に関連する文字列を基に、前記サブプログラムを前記記憶部から読み込み、
前記第２の命令文字列に関連する文字列を、前記読み込んだサブプログラムで置換した展開プログラムを生成し、
前記生成した展開プログラムを、前記表示部に表示させる
ことを特徴とするプログラム作成支援方法。
【請求項５】
前記第２の命令文字列に関連する文字列を基に、前記サブプログラムを記憶部から読み込むときに、該当するサブプログラムが前記記憶部にない場合、
前記第２の命令文字列に関連する文字列を、前記サブプログラムが前記記憶部にない旨の情報に置換する
ことを特徴とする請求項４に記載のプログラム作成支援方法。
【請求項６】
パラメータを含む命令文字列を複数有する命令文字列群が記述されるブロックが複数組み合わさって構成されるプログラムの作成を支援するプログラム作成支援装置によるプログラム作成支援方法であって、
前記ブロックごとに記述される命令文字列群であるブロック別文字列と、
所定の命令文字列である、少なくとも１つの第１の命令文字列と、
が記憶部に格納されており、
前記プログラム作成支援装置が、
前記記憶部から読み込まれた第１の命令文字列と一致する第２の命令文字列を、前記ブロック別文字列から抽出し、
前記第２の命令文字列の種別を判別し、
前記判別した種別に関する情報を、前記第２の命令文字列に関連する文字列に関連付けて表示部に表示させる
ことを特徴とするプログラム作成支援方法。
【請求項７】
前記第１の命令文字列とは、レジスタ命令に関する文字列である
ことを特徴とする請求項６に記載のプログラム作成支援方法。
【請求項８】
前記第１の命令文字列とは、ラベル命令に関する文字列である
ことを特徴とする請求項６に記載のプログラム作成支援方法。
【請求項９】
前記第１の命令文字列は、開始文字列および終了文字列であり、
前記第２の命令文字列に関連する文字列は、前記開始文字列および前記終了文字列で挟まれる文字列である
ことを特徴とする請求項１、請求項４または請求項６に記載のプログラム作成支援方法。
【請求項１０】
前記記憶部における、複数の前記ブロック別文字列を、所定の順番で連結して前記プログラムを生成する
ことを特徴とする請求項１、請求項４または請求項６に記載のプログラム作成支援方法。
【請求項１１】
前記プログラムの内、メインプログラムは、テキストエディタで作成され、ロボットに用いるプログラムである
ことを特徴とする請求項１、請求項４または請求項６に記載のプログラム作成支援方法。
【請求項１２】
請求項１から請求項１１のいずれか一項に記載のプログラム作成支援方法を、コンピュータに実行させることを特徴とするプログラム。
【請求項１３】
パラメータを含む命令文字列を複数有する命令文字列群が記述されるブロックが複数組み合わさって構成されるプログラムの作成を支援するプログラム作成支援装置であって、
前記ブロックごとに記述される命令文字列群であるブロック別文字列と、
所定の命令文字列である、少なくとも１つの第１の命令文字列と、
を格納している記憶部と、
前記記憶部から読み込まれた第１の命令文字列と一致する第２の命令文字列を、前記ブロック別文字列から抽出する文字列検索部と、
前記抽出した第２の命令文字列に関連する文字列を強調表示して表示部に表示させる表示処理部と、、
を有することを特徴とするプログラム作成支援装置。
【請求項１４】
パラメータを含む命令文字列を複数有する命令文字列群が記述されるブロックが複数組み合わさって構成されるプログラムの作成を支援するプログラム作成支援装置であって、
前記プログラムは、メインプログラムおよびサブプログラムを有しており、
前記ブロックごとに記述される命令文字列群であるブロック別文字列と、
前記サブプログラムを呼び出すためのサブプログラム呼出命令に関する文字列である、少なくとも１つの第１の命令文字列と、
前記サブプログラムと、
を格納している記憶部と、
前記記憶部から読み込まれた第１の命令文字列と一致する第２の命令文字列を、前記ブロック別文字列から抽出する文字列検索部と、
前記第２の命令文字列に関連する文字列を基に、前記サブプログラムを記憶部から読み込み、前記第２の命令文字列に関連する文字列を、前記読み込んだサブプログラムで置換した展開プログラムを生成するプログラム展開部と、
前記生成した展開プログラムを、前記表示部に表示させる表示処理部と、
を有することを特徴とするプログラム作成支援装置。
【請求項１５】
パラメータを含む命令文字列を複数有する命令文字列群が記述されるブロックが複数組み合わさって構成されるプログラムの作成を支援するプログラム作成支援装置であって、
前記ブロックごとに記述される命令文字列群であるブロック別文字列と、
所定の命令文字列である、少なくとも１つの第１の命令文字列と、
を格納している記憶部と
前記記憶部から読み込まれた第１の命令文字列と一致する第２の命令文字列を、前記ブロック別文字列から抽出する文字列検索部と、
前記第２の命令文字列の種別を判別するプログラム確認部と、
前記判別した種別に関する情報を、前記第２の命令文字列に関連する文字列に関連付けて表示部に表示させる表示処理部と、
を有することを特徴とするプログラム作成支援装置。
【請求項１６】
前記第１の命令文字列は、開始文字列および終了文字列であり、
前記第２の命令文字列に関連する文字列は、前記開始文字列および前記終了文字列で挟まれる文字列である
ことを特徴とする請求項１３、請求項１４または請求項１５に記載のプログラム作成支援装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム作成支援方法、プログラム及びプログラム作成支援装置の技術に関する。
【背景技術】
【０００２】
産業用ロボットはプログラムによって動作し、このプログラムにおけるプログラム文（以下、プログラムと記載する）は、ロボットを使用して姿勢を順次入力していくティーチング、もしくは、コンピュータソフトウェアを使用して姿勢を順次入力していくオフラインティーチングで作成される。
オフラインティーチングに用いるコンピュータソフトウェアには、テキストエディタや、ロボットシミュレータなどがある。テキストエディタは、文字列の挿入、追加、削除、移動、検索などの操作を機能として持つ。ロボットシミュレータは、ロボットの三次元形状と動作を記述してロボットの動きをコンピュータの画面に表示してシミュレーションするとともにプログラムに記述されている命令や命令で使用する変数名および数値データを挿入、追加、削除、移動、検索することが可能である。
【０００３】
テキストエディタは、安価で容易に入手可能であり、安価で低性能なコンピュータで動作する。しかし、テキストエディタは、一般の文字列を対象にしているため、プログラムに記述されている命令や変数名、数値データの編集をおこなうには使いにくい。さらに、テキストエディタは、修正結果を確認するためにプログラムを、ロボットへ転送して動作確認するか、ロボットシミュレータで読み込んで動作確認する必要がある。
【０００４】
また、ロボットシミュレータは、プログラムに記述されている命令や変数名、数値データの編集と編集結果を確認できるといった利点を持つ。しかし、ロボットシミュレータは、三次元形状の動作をシミュレーションするために高度で複雑な処理が必要であり、複雑な処理を高速に行うための高性能で高価なコンピュータが必要である。
【０００５】
従来、テキストエディタはロボットが設置されている現場でのプログラム修正や、プログラムをメインプログラムとサブプログラムで構成したときにサブプログラムと比較して単純に定型的な編集が可能なメインプログラムの作成や修正で利用されている。一方、ロボットシミュレータはロボットが設置されていない事務所でのプログラム修正や、メインプログラムと比較して複雑なサブプログラムの作成、修正に利用されている。
【０００６】
本明細書では比較的利用者が多いテキストエディタによる作業を対象にする。
最初にテキストエディタが対象にする、プログラムの命令や変数名、数値データについて図３２を参照しながら説明する。
図３２は、テキストエディタにおけるロボットを動作させるメインプログラムの一例を示す図である。当該メインプログラムは、ヘッダ部、命令部、数値部で構成される。
ヘッダ部には、“／ＰＲＯＧ”命令で記述するプログラムの名称、“／ＡＴＴＲ”命令後に“ＣＯＭＭＥＮＴ”命令で記述するコメント、“ＰＲＯＧ＿ＳＩＺＥ”命令で記述するプログラムサイズ、“ＤＥＦＡＵＬＴ＿ＧＲＯＵＰ”命令で記述するデフォルトのグループ、“ＣＯＮＴＲＯＬ＿ＣＯＤＥ”命令で記述する制御コードなどに代表される管理情報が記述されている。
命令部については、図３３で後記する。
数値部には、命令部における位置レジスタ１６０３（図３３）に対応した、ユーザ座標系の番号、ツール座標系の番号、回転方向や回転限界、Ｘ座標、Ｙ座標、Ｚ座標、Ｗ角度、Ｐ角度、Ｒ角度、Ｊ１角度、Ｊ２角度などの数値データが記述されている。
【０００７】
図３３は、命令部の一例を示す図である。
命令部は、“Ｒ［番号］”で記述するレジスタ１６０１、定数１６０２、“Ｐ［番号］”で記述する位置レジスタ１６０３、レジスタに定数を代入する代入式１６１０、現在の位置から数値部で定義した位置レジスタ“Ｐ［２０］”（符号１６０３）までレジスタ“Ｒ［２０］”で指定した速度で移動する直線命令１６０４、“ＬＢＬ［番号］”で記述するラベル１６０５、レジスタ“Ｒ［３０］”が“０”のときに指定したラベル“ＬＢＬ［３９］”へ移動する条件付分岐１６０６、サブプログラム呼び出し１６０７、レジスタの値を加減乗除する計算式１６０８、“ＪＭＰ”とラベル１６０５で記述する無条件分岐１６０９などの命令を有する。
【０００８】
図３２、図３３に記述したようなプログラムをテキストエディタで作成・修正するプログラム作成装置が、特許文献１に開示されている。特許文献１に記載の技術では、テキストエディタによるプログラムの編集作業の課題として、テキストエディタが命令文字列を解釈できないことに起因する作業上の不具合、テキストエディタを複数表示しても複数の画面で検索が必要であることに起因する作業上の不具合を解決する手段を示している。
【０００９】
この不具合を解決するために、特許文献１に記載の技術は、プログラムにおける命令データを表示する命令ウィンドウ、位置データを表示する位置ウィンドウ、速度データを表示する速度ウィンドウ、数値データの範囲を指定する動作範囲ウィンドウ、三次元表示したロボットの形状を表示するモデルウィンドウ、出力信号を表示する出力信号ウィンドウ、任意の検索文字列を指定する任意指定ウィンドウ、複数の検索文字列を指定する複合ウィンドウの各種ウィンドウを設けている。これにより、特許文献１に記載の技術は、プログラム編集作業の効率向上を図ること、数値データの指定間違いを防ぐこと、数値データを容易に検証できるようにすること、を開示している。また、特許文献１に記載の技術は、少なくとも１つの命令ウィンドウの命令位置を強調表示して、命令位置をわかりやすくすることを開示している。
【特許文献１】特許第３４３５９５４号公報（第１頁〜第３頁、図２７、図２９、図３０）
【発明の開示】
【発明が解決しようとする課題】
【００１０】
一般的に、プログラムを効率良く作成するため、既存プログラムを流用することがおこなわれる。このような流用が繰り返されると、プログラム内で修正しない部分、修正する部分が明確になってくるため、プログラムにおける修正箇所が限定され、この限定箇所のみを修正する作業を繰り返すことになる。
【００１１】
しかしながら、特許文献１に記載される技術に代表される従来技術では、ユーザは、修正すべき限定箇所を手書きのメモなどの方法で記録しておく必要がある。ユーザは、各ウィンドウを開き、メモに従って修正箇所を指示し、数値を変えていくといった手順を繰り返さねばならない。そのため、メモのし忘れ、メモからの修正箇所指示洩れにより、修正誤りが発生しやすい。これを無くすために、ユーザが何度も確認をおこなわねばならないことから、ユーザの負担が増加するという問題がある。
また、命令文字列の検索時に、修正した文字列を再度修正する場合には、検索文字列を修正後の文字列に、いちいち変えねばならないという問題がある。
【００１２】
さらに、従来技術では、同種の命令を複数強調表示する場合には、命令の種別毎に新しいウィンドウを表示するよう作成し直す必要があるためソフトウェア開発費用が発生する。
また、確認できるデータは、数値データのみであり、図３３に示した命令部における、直線命令１６０４や条件付分岐１６０６、計算式１６０８で参照するレジスタ１６０１や位置レジスタ１６０３への数値未設定、メインプログラムとサブプログラムでのレジスタ番号の重複によるレジスタ１６０１の値書き換え、ラベル１６０５における番号の重複や未参照、条件付分岐１６０６で参照するラベルの未定義、サブプログラム呼び出し１６０７で参照するサブプログラム名を持つサブプログラムの存在状況などといった文字列については確認されない。
そのため、レジスタ１６０１、位置レジスタ１６０３の未定義や未参照、値の代入などの誤りなどが生じやすくなる。
レジスタ１６０１、位置レジスタ１６０３の未定義や未参照、値書き換えは、ロボットが動作しない、もしくは誤動作につながる。特に、ロボットの誤動作は予期せぬ動きになることがあり、好ましくない。また、ロボットの代わりにロボットシミュレータで動作検証したとしても、予想しない動作であるために移動距離が多くなったり、速度変化が大きくなったりすることが予想され、そのために計算時間が多大になるなどの不具合が生じる。
【００１３】
このような背景に鑑みて本発明がなされたのであり、本発明は、プログラムを効率よく作成することを目的とする。
【課題を解決するための手段】
【００１４】
前記課題を解決するため、本発明は、パラメータを含む命令文字列を複数有する命令文字列群が記述されるブロックが複数組み合わさって構成されるプログラムの作成を支援するプログラム作成支援装置によるプログラム作成支援方法であって、前記ブロックごとに記述される命令文字列群であるブロック別文字列と、所定の命令文字列である、少なくとも１つの第１の命令文字列と、が記憶部に格納されており、前記プログラム作成支援装置が、前記記憶部から読み込まれた第１の命令文字列と一致する第２の命令文字列を、前記ブロック別文字列から抽出し、前記抽出した第２の命令文字列に関連する文字列を強調表示して表示部に表示させる、ことを特徴とする。
その他の手段については、実施形態中にて後記する。
【発明の効果】
【００１５】
本発明によれば、プログラムを効率よく作成することができる。
【発明を実施するための最良の形態】
【００１６】
次に、本発明を実施するための最良の形態（“実施形態”という）について、適宜図面を参照しながら詳細に説明する。なお、各実施形態を説明するための全図において、同一構成要素は原則として同一の符号を付し、その重複する説明を省略する。
【００１７】
《構成》
図１は、本実施形態に係るロボット動作プログラム作成装置１の構成例を示すブロック図である。
ロボット動作プログラム作成装置１（プログラム作成支援装置）は、通信部１２、入力部１３、表示部１４、データ管理部１１、ブロック読込部１５、ブロック編集部１６、プログラム作成部１７、プログラム展開部１８、表示制御部２０、文字列処理部１９、文字列検索部２１、文字列置換部２２、プログラム確認部２３、表示処理部２４および記憶部５０を有している。
【００１８】
データ管理部１１は、入力部１３から入力したデータもしくは各部１５〜２４からの指示に従って、記憶部５０からデータを読み取ったり、データを格納したり、通信部１２へデータを転送したり、通信部１２からデータを受け取ったり、各部１５〜２４を起動したり、データを受け渡したりするための指示や、データ制御を行う機能を有する。
なお各部１５〜２４の機能は、図３〜図３１を参照して後記する。
【００１９】
記憶部５０は、設備名称５１、ブロック別テンプレート５２、ブロック別検索範囲５３、ブロック別文字列５４、サブプログラム５５、メインプログラム５６および展開プログラム５７を格納している。
ここで、記憶部５０には、少なくとも１つのブロック別テンプレート５２（“ブロック別テンプレート１”〜“ブロック別テンプレートＮ”）、ブロック別検索範囲５３（“ブロック別検索範囲１”〜“ブロック別検索範囲Ｎ”）、ブロック別文字列５４（“ブロック別文字列１”〜“ブロック別文字列Ｎ”）、サブプログラム５５（“サブプログラム１”〜“サブプログラムＭ”）が格納されている。
【００２０】
設備名称５１は、作成するメインプログラム５６が利用される設備の名称に関する情報が記憶されている。
ブロック別テンプレート５２は、メインプログラム文（以下、メインプログラム５６と記載）の一部を構成する文字列である。ここで、ブロックとは、メインプログラム５６を所定の範囲で分けた単位である。ブロックの設定は、ユーザが自由に行うことができる。
ブロック別検索範囲５３は、ブロック毎に複数の検索範囲情報を有している。検索範囲情報は、２つの文字列からなる。ブロック別検索範囲５３については、後記して説明する。また、ブロック別検索範囲５３は、複数設定することが可能で、２つ以上設定した場合は、文字列検索部２１が、これらのブロック別検索範囲５３に該当する検索文字列を順番に検索することとなる。
ブロック別文字列５４は、メインプログラム５６の一部を構成する文字列である。ここで、ブロック別テンプレート５２と、ブロック別文字列５４の違いを説明する。ロボット動作プログラム作成装置１は、メインプログラム５６の新規作成時にすべてのブロック別テンプレート５２をコピーして、ブロック別文字列５４を生成する。そして、ロボット動作プログラム作成装置１は、必要なブロック別文字列５４を連結してメインプログラム５６を生成する。次に、このメインプログラム５６を編集したとき、ロボット動作プログラム作成装置１は、ブロック別文字列５４のみを更新し、ブロック別テンプレート５２はそのままにしておく。
【００２１】
サブプログラム５５は、メインプログラム５６中で呼び出されるプログラム文である。
メインプログラム５６は、ロボット動作プログラム作成装置１において作成されるプログラム文である。
展開プログラム５７は、メインプログラム５６で呼び出されるサブプログラム５５を、メインプログラム５６中に展開したプログラムである。
【００２２】
各データ５１〜５５は、ユーザが予め作成しておくデータである。また、ブロック別テンプレート５２とブロック別検索範囲５３とはペアとなっていることが多いが、例えば編集の必要がないブロックではテンプレートのみとなっていることがある。
そして、記憶部５０における各データ５１〜５５は、同じブロックに関するデータ同士が識別番号でひも付けられている。例えば、同じブロックに関係する各データ５１〜５５は、同じ識別番号を有するなどである。また、同じブロックに関係する各データ５１〜５５が、同じフォルダにまとめられる形で記憶部５０に格納されてもよい。
【００２３】
図２は、本実施形態に係るロボット動作プログラム作成装置１のハードウェア構成例を示す図である。
ロボット動作プログラム作成装置１は、図１の入力部１３に該当するキーボードや、マウスなどの入力装置７２、図１の表示部１４に該当するディスプレイなどの表示装置７３、図１の通信部１２に該当するＮＩＣ（Network Interface Card）などの通信装置７４、ＣＰＵ（Central Processing Unit）などの中央処理装置７１、ＲＡＭ（Random Access Memory）などのメモリ７５、ＨＤＤ（Hard Disk Drive）や、ＲＯＭ（Read Only Memory）や、フラッシュメモリなどの記憶装置７６などを有している。図１の各部１５〜２４は、記憶装置７６に格納されているプログラム作成支援プログラム（プログラム）が、メモリ７５に展開され中央処理装置７１によって実行されることにより具現化する。
【００２４】
《処理》
次に、図１を参照しつつ、図３〜図３１に沿って本実施形態に係るロボット動作プログラム作成装置１の動作について説明する。また、本実施形態において“選択入力する”とは、“入力部を介して選択入力する”ことを意味するものとする。なお、図３〜図３１の処理において、すべてのデータはデータ管理部を経由して各部１２〜２４および記憶部５０に送られるが、ここでは、この記載を省略する。また、画面データは、表示制御部２０に送られて、表示部１４に表示されるが、この記載も省略する。
【００２５】
（初期画面）
まず、図３を参照して、初期画面の表示について説明する。
図３は、本実施形態に係る初期画面の例を示す図であり、図４は、機能指示画面の遷移を示す図である。
プログラム作成支援プログラムが起動すると、表示処理部２４が作業ウィンドウデータを作成し、表示処理部２４が、この作業ウィンドウデータに基づく作業ウィンドウを表示部１４に表示する。
【００２６】
作業ウィンドウ１００は、タイトル領域１０１、メニュー領域１０２、サブウィンドウ領域１０３を有してなる。タイトル領域１０１には、作成されるメインプログラム５６の名称が表示される。メニュー領域１０２には、ロボットプログラム作成装置が実行する機能の名称が表示される。メニュー領域１０２に表示される機能は、入力部１３を介して、ユーザが実行した機能を選択入力すると当該機能が起動される。サブウィンドウ領域１０３は、各種情報を表示する領域である。
【００２７】
図３に示すように、メニュー領域１０２に“ファイル”、“編集”と示す機能名が表示されている場合において、例えば、入力部１３を介して“ファイル”を選択入力すると、表示処理部２４が、図４に示すプルダウンメニュー２０１を表示部１４に表示する。
入力部１３を介して、プルダウンメニュー２０１の“新規作成”、“開く”、“最近使ったファイル”、“終了”なる機能を示す項目が選択入力されることで、データ管理部１１は、これらの機能を起動する。
【００２８】
ここで、“新規作成”が選択入力されると、表示処理部２４は、サブウィンドウ領域１０３にメインプログラム新規作成画面２０２を表示する。
【００２９】
また、プルダウンメニュー２０１で“開く”が選択入力されると、表示処理部２４は、メインプログラム５６が格納されているファイルを開くためのダイアログ画面２１０を別ウィンドウで表示する。ダイアログ画面２１０は、メインプログラムファイル（以下、ファイルと記載）が格納されているフォルダの情報を表示するフォルダ表示領域２１１、当該フォルダに存在するファイル名を表示するファイル名表示領域２１２、ファイル名表示領域２１２で選択したファイル名や、入力部１３を介して入力されたファイル名を表示する選択ファイル名表示領域２１３を有してなる。さらに、ダイアログ画面２１０は、メインプログラム５６か、サブプログラム５５かなどのファイルの種類を表示するファイル種別表示領域２１４、ファイルを開くための開くボタン２１５、ファイル選択操作をキャンセルするためのキャンセルボタン２１６を有している。
【００３０】
ダイアログ画面２１０が表示された後、ユーザは、ファイル名表示領域２１２に表示されているファイル名を選択入力するか、ファイル名を選択ファイル名表示領域２１３に入力し、“開く”を選択入力する。
そして、表示処理部２４は、選択入力もしくは入力されたファイル名が示すメインプログラム５６を記憶部５０から読み込み、サブウィンドウ領域１０３に読み込んだメインプログラム５６を表示するプログラム編集領域２３１を表示する。
【００３１】
なお、“最近使ったファイル”が選択入力されると、表示処理部２４は、最近作成または更新したメインプログラム５６が格納されているファイル名をファイル名表示領域２１２に表示する。このとき、ファイル名表示領域２１２に表示されるファイル名は、ファイルに付加されている更新日時情報をなどを基に、現在日時から所定の日数以内に更新されたファイルを表示する。以降は、“開く”が選択入力された場合と同様であるので説明を省略する。このように、ダイアログ画面２１０に最近使ったファイルのファイル名を表示指示することにより、以前に作成したメインプログラム５６を呼び出して編集することができる。
【００３２】
（新規作成処理）
次に、ユーザが図４におけるプルダウンメニュー２０１で“新規作成”を選択入力した後の処理について図５〜図７を参照して説明する。
図４におけるプルダウンメニュー２０１において、“新規作成”が選択入力されると、表示処理部２４が、メインプログラム新規作成領域２０２を表示する。次に図５に示すようにユーザが、メインプログラム新規作成領域２０２上でマウス（入力部１３）の右ボタンを押下すると、表示処理部２４は、プルダウンメニュー３０１を表示する。
プルダウンメニュー３０１には、メインプログラム５６を作成するために必要な機能が表示されている。図５では、その機能の一例として、“設備選択”、“ワーク指定”、“デフォルト”、“編集”、“サブプログラム確認”、“レジスタ確認”、“ラベル確認”が表示されている。
【００３３】
入力部１３を介して、プルダウンメニュー３０１の“設備選択”が選択入力されると、表示処理部２４は、設備名称の一覧が記述されているプルダウンメニュー３０２を表示する。ユーザは、プルダウンメニュー３０２に表示されている設備名称一覧の中から、これから作成されるメインプログラム５６が利用される設備を選択入力する。
【００３４】
ここで、設備とは、ロボット、溶射装置、製品を載置するテーブルからなる装置であり、ロボット、溶射装置、テーブルが変化するとメインプログラム５６の命令文字列を変更する必要があるため、本実施形態では、記憶部５０に設備毎のブロック別テンプレート５２、ブロック別検索範囲５３を予め記憶しておき、プルダウンメニュー３０２で選択入力した設備名称に該当するブロック別テンプレート５２、ブロック別検索範囲５３から読み出す構成としている。つまり、本実施形態におけるブロック別テンプレート５２や、ブロック別検索範囲５３などには、予め設備の情報が付されているものとする。
【００３５】
次に、プルダウンメニュー３０１の“ワーク指定”が選択入力されると、表示処理部２４は、ワーク名称の一覧が表示されたプルダウンメニュー３０３を表示する。ユーザは、プルダウンメニュー３０３に表示されたワーク一覧の中から、これから作成されるメインプログラム５６が利用されるワーク名称を選択入力する。ワークとは、例えば、設備にセットする溶射対象物で、ワークが変化するとメインプログラム５６の命令文字列が変化するため、記憶部５０にワーク毎のブロック別テンプレート５２、ブロック別検索範囲５３を記憶しておき、プルダウンメニュー３０３で選択入力したワーク名称に該当するブロック別テンプレート５２、ブロック別検索範囲５３を読み出す構成としている。つまり、本実施形態におけるブロック別テンプレート５２や、ブロック別検索範囲５３などには、予めワークの情報が付されているものとする。
【００３６】
本実施形態では、ブロック別テンプレート５２およびブロック別検索範囲５３は、設備・ワーク毎に予め用意しておくこととする。つまり、図５では、設備Ａ用・ワークＡ用のブロック別テンプレート３１１（“ブロック別テンプレート１”〜“ブロック別テンプレートＮ”）、設備Ｂ用・ワークＡ用のブロック別テンプレート３１２（“ブロック別テンプレート１”〜“ブロック別テンプレートＮ”）、設備Ｃ用・ワークＡ用のブロック別テンプレート３１３（“ブロック別テンプレート１”〜“ブロック別テンプレートＮ”）が記載されているが、さらに、設備Ａ用・ワークＢ用、設備Ｂ用・ワークＢ用のブロック別テンプレートなどが記憶部５０に格納されていてもよい。
【００３７】
同様に、図５では、設備Ａ用・ワークＡ用のブロック別検索範囲３２１（“ブロック別検索範囲１”〜“ブロック別検索範囲Ｎ”）、設備Ｂ用・ワークＡ用のブロック別検索範囲３２２（“ブロック別検索範囲１”〜“ブロック別検索範囲Ｎ”）、設備Ｃ用・ワークＡ用のブロック別検索範囲３２３（“ブロック別検索範囲１”〜“ブロック別検索範囲Ｎ”）が記載されているが、さらに、設備Ａ用・ワークＢ用、設備Ｂ用・ワークＢ用のブロック別検索範囲などが記憶部５０に格納されていてもよい。
【００３８】
例えば、ユーザがプルダウンメニュー３０２で“設備Ａ”を選択入力し、プルダウンメニュー３０３で“ワークＡ”を選択入力すると、プログラム作成部１７は、ブロック別テンプレート５２から、設備Ａ用で、かつ、ワークＡ用のブロック別テンプレート３１１を取得できる構成としている。同様に、ユーザがプルダウンメニュー３０２で“設備Ａ”を選択入力し、プルダウンメニュー３０３で“ワークＡ”を選択入力すると、文字列検索部２１などは、ブロック別検索範囲５３から、設備Ａ用で、かつ、ワークＡ用のブロック検索範囲３２１を取得できる構成としている。
なお、設備選択およびワーク指定で選択された設備名およびワーク名は、表示処理部２４によって記憶部５０に記憶される。
【００３９】
図５における設備選択およびワーク選択の終了後、ユーザが、マウス（入力部１３）の右ボタンを押下すると、表示処理部２４は、メインプログラム新規作成領域２０２上で、再度プルダウンメニュー３０１を表示する。
次に、ユーザが、当該プルダウンメニュー３０１の項目から“デフォルト”を選択入力すると、プログラム作成部１７はメインプログラム作成処理を行う。
【００４０】
メインプログラム作成処理を、図５、図６の画面例および図７のフローチャートを参照して説明する。
プルダウンメニュー３０１の項目から“デフォルト”が選択入力されると、プログラム作成部１７は、設備選択およびワーク指定時に記憶部５０に記憶しておいた設備名、ワーク名を読みこむ（Ｓ１０１）。本実施形態では、説明を具体的にするため、選択した設備名を“設備Ａ”、選択したワーク名を“ワークＡ”とした例で説明する。
次に、プログラム作成部１７は、図５に示すように、設備Ａ用で、かつ、ワークＡ用の対応するブロック別文字列３３１を、設備Ａ用で、かつ、ワークＡ用のテンプレート情報３１１をコピーすることによって生成する（Ｓ１０２）。
【００４１】
なお、設備選択およびワーク選択がなされていないときに、“デフォルト”が選択入力された場合、プログラム作成部１７は、予め設定しておいた設備名、ワーク名を使用する。
【００４２】
次に、プログラム作成部１７は、図６に示すように、読み出したブロック別文字列３３１（“ブロック別文字列１”〜“ブロック別文字列Ｎ”）を連結して（Ｓ１０３）メインプログラム５６を作成する。表示処理部２４は、作成したメインプログラム５６をメインプログラム新規作成領域２０２に表示する（Ｓ１０４）。
【００４３】
このように、あらかじめ設定したブロック別テンプレート５２から生成したブロック別文字列５４を読み出して、これを連結してメインプログラム５６を作成することから、メインプログラム５６の命令を間違えて記載することを防止することができる。
【００４４】
（プログラム編集方法）
次に、メインプログラム編集処理について、図８〜図３１を参照して説明する。なお、以下の処理において選択されている設備は“設備Ａ”であり、ワークは“ワークＡ”であるとする。なお、以降の処理において用いられるブロック別文字列５４、ブロック別検索範囲５３は、設備Ａ用・ワークＡ用のブロック別文字列３３１、ブロック別検索範囲３２１であるとする。
【００４５】
まず、図８および図９を参照して、編集に用いるプルダウンメニュー５０１の表示に関する処理を説明する。
図４で説明したファイルを開く処理や、メインプログラム５６の新規作成処理の後などで、メインプログラム編集領域２３１にメインプログラム５６が表示されている状態で、ユーザが、マウス（入力部１３）の右ボタンを押下する（Ｓ２０１）と、表示処理部２４は、プルダウンメニュー３０１を表示する（Ｓ２０２）。ここで、ユーザがプルダウンメニュー３０１における“編集”を選択入力する（Ｓ２０３）と、表示処理部２４は、メインプログラム５６を構成しているブロックを示すプルダウンメニュー５０１を表示する（Ｓ２０４）。
【００４６】
次に、図８と図１０を参照して、編集画面５１０の表示に関する処理を説明する。
プルダウンメニュー５０１は、ブロック毎のメインプログラム５６の編集で使用するブロックの選択をおこなうために用意している。ブロック別に編集をおこなうと、編集するプログラムが短くなるので間違いに気づきやすくなるとともに、当該ブロック以外は検索しないので修正位置がわかりやすくなるためである。
【００４７】
プルダウンメニュー５０１が表示された状態で、ユーザがプルダウンメニュー５０１から、所定のブロック（ここでは、“ブロック００１”）を選択入力すると、文字列検索部２１が、該当するブロック別文字列３３１から“ブロック００１”に該当する”ブロック別文字列１”を記憶部５０から読み込む（Ｓ３０１）。続いて、文字列検索部２１は、ブロック別検索範囲３２１から“ブロック００１”に該当する“ブロック別検索範囲１”を読み込み（Ｓ３０２）、表示処理部２４が、“ブロック００１”の編集画面５１０を表示する（Ｓ３０３）。
【００４８】
“ブロック００１”の編集画面５１０は、メインプログラム５６における“ブロック００１”の文字列を表示する文字列表示領域５１１、編集箇所選択ボタン、編集完了を指示するためのＯＫボタン、編集をキャンセルするためのキャンセルボタンを有している。なお、文字列表示領域５１１に表示される文字列は、ブロック００１対応領域５２１に表示されている文字列と一致しているものとする。
【００４９】
メインプログラム編集領域２３１が表示されると、表示処理部２４は、メインプログラム５６を構成する文字列の内、“ブロック００１”に該当する文字列を強調表示する（Ｓ３０４：図８の符号５２１）。強調表示は、編集中のメインプログラム５６の位置をわかりやすくするためにおこなうもので、色替え、太文字、背景色変更などの方法が考えられる。なお、強調表示の具体的な手順は以下の通りである。メインプログラム５６を作成したときに、構成しているブロックと、その範囲に関する情報が属性としてメインプログラム５６のファイルに付加される。表示処理部２４は、この属性情報を読み込んで強調表示を行う。
【００５０】
次に、ブロックにおける文字列の編集処理を、図１１、図１２を参照して説明する。
“ブロック００１”の編集画面５１０が表示された後、ユーザが、編集箇所選択ボタンを選択入力する（Ｓ４０１）と、文字列検索部２１は“ブロック別文字列１”中において、検索範囲情報６０１に記述されている開始文字列、終了文字列を取得する（Ｓ４０２）。ここで、ブロック別検索範囲５３の構成を説明すると、各ブロック別検索範囲５３（例えば、“ブロック別検索範囲１”）には、少なくとも１つの検索範囲情報６０１，６０２が格納されている。各検索範囲情報は、開始文字列（開始：＊＊＊で表現）、終了文字列（終了：＊＊＊）がペアとなって格納されている。ステップＳ４０２において、文字列検索部２１は、最初に検索範囲情報６０１に記載されている開始文字列（“ＵＦＲＡＭＥ＿ＮＵＭ＝”）と、終了文字列（“；”）を取得する。
【００５１】
つまり、“ブロック別文字列１”の文字列が文字列表示領域５１１に表示された後、文字列検索部２１が、文字列表示領域５１１に表示されている検索範囲情報６０１の開始文字列と、終了文字列を検索する（Ｓ４０３）。その結果が、図１１右側の符号６１１と符号６１２である。
【００５２】
そして、文字列検索部２１は、抽出した開始文字列と終了文字列に挟まれる検索文字列を取得する（Ｓ４０４）。表示処理部２４は、検索文字列を強調表示（Ｓ４０５）する。この結果が、図１１右側の符号６１３である。
【００５３】
ステップＳ４０４の終了後、キーボードなどの入力部１３から、検索文字列を置換するための新しい文字列が入力されると、文字列置換部２２は、強調表示している検索文字列を入力された文字列で置換し（Ｓ４０６）、表示処理部２４は、置換した文字列を強調表示する（Ｓ４０７）。そして、文字列置換部２２は、該当するブロック別文字列５４（ここでは、“ブロック別文字列１”）における検索文字列に該当する文字列を入力文字列で置換して、ブロック別文字列５４を更新する（Ｓ４０８）。
なお、ステップＳ４０４の終了後、入力部１３から新しい文字列が入力されない場合、他の入力がなされるまで、表示処理部２４は、文字列６１３が強調表示された状態のままとする。
【００５４】
検索範囲情報６０１を使用した文字列検索、または置換が終了した状態で、編集箇所選択ボタンを再度選択入力すると、文字列検索部２１は、検索範囲情報６０２を用いたステップＳ４０１〜Ｓ４０８の処理を“ブロック別文字列１”に対して行う。この結果、検索された開始文字列と終了文字列が、図１１右側の符号６２１と符号６２２であり、開始文字列と、終了文字列とで挟まれ、強調表示された検索文字列が符号６２３である。
【００５５】
さらに、この状態で、編集箇所選択ボタンを再々度選択入力されると、文字列検索部２１は、検索範囲情報６０１を用いたステップＳ４０１〜Ｓ４０８の処理を“ブロック別文字列１”に対して行う。
【００５６】
このように、編集箇所選択ボタンが選択入力される毎に、検索範囲情報６０１→検索範囲情報６０２→検索範囲情報６０１→検索範囲情報６０２→・・・のように、サイクリックに検索範囲情報が選択される。
なお、検索範囲情報が３つ以上の場合でも、検索範囲情報６０１→検索範囲情報６０２→・・・→検索範囲情報６０１→検索範囲情報６０２→・・・のように、サイクリックに検索範囲情報が選択される。
【００５７】
このとき、“ブロック別文字列１”の文字列が新しい文字列で置換されていても、検索範囲６０１，６０２に格納された文字列が変化しないので、文字列の置換後においても、同じ命令文に関連する文字列を容易に検索することができる。
また、１回目の検索、２回目の検索、１回目の検索、・・・を繰り返すので、あらかじめ設定した検索範囲のみを修正することが可能となり、編集箇所を間違えることがない。
【００５８】
図１２の処理が終了した状態で、編集画面５１０のＯＫボタンが選択入力されると、文字列置換部２２がメインプログラム５６における“ブロック別文字列１”における文字列を、置換した文字列で置き換え、表示処理部２４が、編集画面５１０を閉じる。
また、編集画面５１０のキャンセルボタンが選択入力された場合、文字列置換部２２がメインプログラム５６における文字列を変更することなく、表示処理部２４は編集画面５１０を閉じる。
【００５９】
次に図１３と図１６を参照して、“ブロック００２”の編集手順を説明する。
プルダウンメニュー５０１が表示された状態で、このプルダウンメニュー５０１から“ブロック００２”が選択入力されると、文字列検索部２１は、ブロック別文字列３３１から“ブロック００２”に該当する“ブロック別文字列２”を読み込み（Ｓ５０１）、さらに、文字列検索部２１は、ブロック別検索範囲３２１から“ブロック００２”に該当する“ブロック別検索範囲２”を読み込む（Ｓ５０２）。そして、表示処理部２４が、“ブロック００２”の編集画面７００を表示部１４に表示する（Ｓ５０３）。そして、表示処理部２４は、メインプログラム編集領域２３１に表示されているメインプログラム５６のうち、“ブロック００２”に相当する部分（符号７１１）を強調表示する（Ｓ５０４）。
【００６０】
編集画面７００は、“ブロック００２”におけるメインプログラム５６の文字列を表示する文字列表示領域７２１、レジスタ・ＣＡＬＬ文ボタン、編集ボタン、ＣＡＬＬ文を含む行ボタン、追加ボタン、削除ボタン、関連ブロック確認ボタン、編集完了を指示するためのＯＫボタン、編集をキャンセルするためのキャンセルボタンを有する。
【００６１】
編集画面７００が表示されると、表示処理部２４は、メインプログラム編集領域２３１中のメインプログラム５６の文字列の内、“ブロック００２”に該当する文字列を強調表示する（符号７１１：Ｓ５０４）。強調表示は、編集中のメインプログラム５６の位置をわかりやすくするためにおこなうもので、色替えや、太文字や、背景色変更などの強調方法を用いてもよい。
【００６２】
ここで、図１３に示す編集画面７００と、図８に示す編集画面５１０の違いについて説明する。
編集画面５１０と、編集画面７００とは、どちらもメインプログラム５６におけるブロックの文字列を編集するための画面であるが、編集画面５１０は、ブロック中に同一の検索文字が１つしか検索されないときに表示される画面であり、編集画面７００は、ブロック中に同一の検索文字が複数検出されるときに表示される画面である。編集画面５１０が表示されるか、編集画面７００が表示されるかは、例えば、“ブロック００１”では編集画面５１０を表示し、“ブロック００２”では編集画面７００を表示するなどのようにユーザによって予め設定されている。設定情報は、ブロック別テンプレート５２に格納されていてもよいし、検索範囲情報に格納されていてもよい。また、文字列検索部２１が、検索範囲情報の開始文字列と、終了文字列とを用いて検索文字列を抽出した際、検索文字列の個数によって表示処理部２４が、編集画面５１０を表示するか、編集画面７００を表示するかを決定してもよい。
【００６３】
次に図１４、図１５および図１７を参照して、“ブロック００２”の編集手順を説明する。
図１４に示すように、“ブロック００２”の編集画面７００が表示された後、レジスタ・ＣＡＬＬ文ボタンが選択入力される（Ｓ６０１）と、文字列検索部２１は、図１６のステップＳ５０１で取得した“ブロック別文字列２”を“ブロック別検索範囲２”に格納されている検索範囲情報８１１の文字列で検索し（Ｓ６０２）、文字列検索部２１は、“ブロック別文字列２”における開始文字列，終了文字列の位置情報（位置）を取得する（Ｓ６０３）。次に、文字列検索部２１は、開始文字列と終了文字列で挟まれている検索文字列を取得する（Ｓ６０４）。検索文字列の位置情報が取得された後、表示処理部２４は、検索文字列を色変えなどで強調表示（Ｓ６０５）し、処理を終了する。
【００６４】
つまり、“ブロック別文字列２”の文字列が文字列表示領域７２１に表示された後、文字列検索部２１が、文字列表示領域７２１に表示されている検索範囲情報８１１の開始文字列と、終了文字列を検索する。その結果が、図１５（ａ）における符号９０１と符号９０２であり、ステップＳ６０５で強調表示される検索文字列が符号９０３である。
【００６５】
ステップＳ６０５が終了した状態で、編集画面７００におけるレジスタ・ＣＡＬＬ文ボタンが再度選択入力されると、文字列検索部２１は、図１４における検索範囲情報８１２を用いたステップＳ６０１〜Ｓ６０６の処理を“ブロック別文字列２”に対して行う。この結果が、図１５（ａ）における符号９１１と符号９１２であり、これらの文字列に挟まれる検索文字列が、符号９１３である。
【００６６】
さらに、この状態で、レジスタ・ＣＡＬＬ文ボタンが再度選択入力されると、文字列検索部２１は、再び検索範囲情報８１１を用いたステップＳ６０１〜Ｓ６０６の処理を“ブロック別検索文字列２”に対して行う。
つまり、レジスタ・ＣＡＬＬ文ボタンが選択入力される毎に、検索範囲情報８１１→検索範囲情報８１２→検索範囲情報８１１→検索範囲情報８１２→・・・のように、サイクリックに検索範囲情報が選択される。
なお、検索範囲情報が３つ以上の場合でも、検索範囲情報８１１→検索範囲情報８１２→・・・→検索範囲情報８１１→検索範囲情報８１２→・・・のように、サイクリックに検索範囲情報が選択される。このようにすることで、あらかじめ設定した検索範囲のみを修正することが可能となり、ユーザが、レジスタ・ＣＡＬＬ文の編集箇所を間違えることを減らすことができる。
【００６７】
このとき、“ブロック別文字列２”の文字列が新しい文字列で置き換えられていても、検索範囲８１１，８１２に記述されている文字列が変化しないので、置換後においても、同じ命令文に関連する文字列を容易に検索することができる。
なお、図１４の検索範囲情報８１３および図１５（ｂ）については後記して説明する。
【００６８】
（置換処理）
次に、“ブロック００２”における置換処理を図１８、図１９Ａ、図１９Ｂを参照して説明する。
図１７の処理がが終了し、図１８の検索文字列１００１が強調表示された状態で、編集ボタンが選択入力される（図１９ＡのＳ７０１）と、表示処理部２４は、図１８に示す置換ダイアログ１０１０を表示する（Ｓ７０２）。
そして、表示処理部２４は、編集画面７００の文字列表示領域７２１において強調表示されている文字列１００１を抽出して、この文字列を置換ダイアログ１０１０の検索文字列表示領域１０１５に表示する（Ｓ７０３）。
【００６９】
置換ダイアログ１０１０は、前記したようにブロック別文字列５４の中に検索文字列が複数存在する場合に表示されるものであり、検索文字列表示領域１０１５、置換文字列表示領域１０１６、次を検索ボタン、置換して次にボタン、すべて置換ボタン、キャンセルボタンを有してなる。
【００７０】
次に、文字列置換部２２が、キーボードなどの入力部１３から置換文字列表示領域１０１６に文字列（置換文字）が入力されたか否かを判定する（Ｓ７０４）。
ステップＳ７０４の結果、入力されていない場合（Ｓ７０４→Ｎｏ）、ユーザは、置換文字列表示領域に文字列を入力し（Ｓ７０５）、ステップＳ７０４へ処理を戻す。
【００７１】
ステップＳ７０４の結果、入力されている場合（Ｓ７０４→Ｙｅｓ）、図１９Ｂの説明に移り、置換処理部が次を検索ボタンが選択入力されたか否か（“次を選択”？）を判定する（Ｓ７０６）。
ステップＳ７０６の結果、次を検索ボタンが選択入力された場合（Ｓ７０６→Ｙｅｓ）、文字列置換部２２は、ステップＳ７０９の処理へ進み、置換を行わずに、現在処理している文字列（図１８の符号１００１）に関して、次の検索を行い、この文字列を強調表示し、図１９ＡのステップＳ７０４へ処理を戻す。
【００７２】
ステップＳ７０６で、次を検索ボタンが選択入力されていない場合（Ｓ７０６→Ｎｏ）、文字列置換部２２は、置換ダイアログ１０１０の、置換して次にボタンが選択入力されたか否か（“置換して次に”？）を判定する（Ｓ７０７）。
ステップＳ７０７の結果、置換して次にボタンが選択入力された場合（Ｓ７０７→Ｙｅｓ）、文字列置換部２２は、文字列表示領域７２１で強調表示されている文字列１００１を置換文字表示領域１０１６に表示されている文字列で置換する（Ｓ７０８）。
そして、文字列置換部２２は、処理対象のブロック別文字列５４（“ブロック別文字列２”）中において、現在処理している文字列（図１８の符号１００１）に関する、次の検索を行い、表示処理部２４が、この文字列を強調表示し（Ｓ７０９）、図１９ＡのステップＳ７０４へ処理を戻す。
ステップＳ７０９において、次の検索文字が見つからないときは、そのままとするか、表示処理部２４が、検索文字が無い旨のメッセージを表示してユーザに知らせる。
【００７３】
ステップＳ７０７で、置換して次にボタンが選択入力されていない場合（Ｓ７０７→Ｎｏ）、文字列置換部２２は、すべて置換ボタンが選択入力されたか否か（“すべて置換”？）を判定する（Ｓ７１０）。
ステップＳ７１０の結果、すべて置換ボタンが選択入力された場合（Ｓ７１０→Ｙｅｓ）、文字列表示領域７２１で強調表示されている文字列１００１を置換文字表示領域１０１６に表示されている文字列で置換する（Ｓ７１１）。
次に、文字列置換部２２は、処理対象となっている文字列１００１と同じ文字列が、現在処理中の行から下の行に存在するか否かを判定することによって、次の検索文字列があるか否かを判定する（Ｓ７１２）。
【００７４】
ステップＳ７１２の結果、次の検索文字列がない場合（Ｓ７１２→Ｎｏ）、文字列置換部２２は、図１９ＡのステップＳ７０４へ処理を戻し、次の検索範囲情報から検索される文字列１００２を、置換ダイアログ１０１０ａの検索文字列表示領域１０１５ａに表示し、置換文字列表示領域１０１６ａに入力部１３から入力された文字列を表示している置換ダイアログ１０１０ａを表示部１４に表示し、ステップＳ７０４以降の処理を繰り返す。
【００７５】
ステップＳ７１２の結果、次の検索文字列がある場合（Ｓ７１２→Ｙｅｓ），文字列検索部２１は、処理対象となっている文字列と同一の次の検索文字列を抽出し、強調表示し（Ｓ７１３）、ステップＳ７１１の処理へ戻って、抽出した文字列に対しステップＳ７１１，Ｓ７１２の処理を行う。
ステップＳ７１１〜Ｓ７１３を繰り返すことにより、“ブロック別検索文字列２”において検索文字１０１０に該当するすべての文字列を置換文字表示領域１０１６に表示されている文字で置換する。
【００７６】
ステップＳ７１０の結果、すべて置換ボタンが選択入力されていないとき、文字列置換部２２は、キャンセルボタンが選択入力されたか否か（“キャンセル”？）を判定する（Ｓ７１４）。
ステップＳ７１４の結果、キャンセルボタンが選択入力されていない場合（Ｓ７１４→Ｎｏ）、文字列置換部２２は、図１９ＡのステップＳ７０４へ処理を戻す。
ステップＳ７１４の結果、キャンセルボタンが選択入力された場合（Ｓ７１４→Ｙｅｓ）、表示処理部２４は、置換ダイアログ１０１０を閉じて処理を終了する。
【００７７】
なお、“ブロック００２”の検索文字列の置換処理は、図１８、図１９Ａ、図１９Ｂに示したように、置換ダイアログ１０１０を使用することに限らず、“ブロック００１”のように、直接、入力文字で置換していってもよい。
【００７８】
このような置換ダイアログは、オブジェクト指向のプログラミング言語で簡単に作成することができるが、検索文字表示領域１０１５に表示される検索文字列を利用者が設定しなければならなかったため、利用者が、この検索文字列を間違えることによる検索ミスが生じることがある。本実施形態では、図１７の処理で検索した文字列を検索文字列として、自動で設定・表示するので、このような検索ミスが発生しない。
【００７９】
次に、編集画面７００における、ＣＡＬＬ文を含む行ボタンが選択入力されたときの処理を、図１４、図１５（ｂ）および図２１を参照して説明する。
図１４に示すように、“ブロック００２”の編集画面７００が表示された状態で、ＣＡＬＬ文を含む行ボタンが選択入力される（Ｓ８０１）と、文字列検索部２１は、“ブロック別文字列２”を検索範囲情報８１３に記述されている開始文字列および終了文字列で検索し（Ｓ８０２）、この開始文字列、終了文字列の位置情報（位置）を取得する（Ｓ８０３）。なお、“ＣＡＬＬ文を含む行ボタン”が選択入力されたときに参照される検索範囲情報８１３は、開始文字列（開始：＊＊＊で示される文字列）が“；”で、終了文字列（終了：＊＊＊で示される文字列）が“Ｒ［”となっている検索範囲情報である。このとき、検索される文字列は、図１５（ｂ）に示す符号９２１，９２２である。
【００８０】
なお、レジスタ、ＣＡＬＬ文ボタンが選択入力されたときに使用される検索範囲情報であるか、“ＣＡＬＬ文を含む行”ボタンが選択入力されたときに使用される検索範囲情報であるか、は予めユーザによって各検索範囲情報に設定されている情報である。
【００８１】
次に、文字列検索部２１は、開始文字列と終了文字列に挟まれる検索文字列を取得する（Ｓ８０４）。そして、文字列検索部２１は、ステップＳ８０４で取得した文字列の中に“ＣＡＬＬ”の文字列が連続して出現するか否かを判定する。
判定の結果、出現しない場合、文字列検索部２１は、処理を終了する。
判定の結果、出現する場合、表示処理部２４は、ステップＳ８０４で取得した検索文字列を色替えなどで強調表示する（Ｓ８０５）。ステップＳ８０５の段階における表示状態が図１５（ｂ）における符号９２３である。
【００８２】
（ＣＡＬＬ文を含む行の追加・削除）
次に、ＣＡＬＬ文を含む行（ＣＡＬＬ文含有行）の追加処理を、図２０および図２２を参照して説明する。
図２１のステップＳ８０５が終了した状態で、図２０に示すように編集画面７００の追加ボタンが選択入力される（Ｓ９０１）と、文字列処理部１９は、文字列表示領域７２１で強調表示している検索文字列１１０１の下の行の位置情報（位置）を取得する（Ｓ９０２）。次に、文字列処理部１９は、位置情報に該当する行に強調表示した文字列１１０１を複写・挿入する（Ｓ９０３）。ステップＳ９０３の段階での表示状態が、図２０右側の符号１１０２である。このように、ＣＡＬＬ文を含む行（サブプログラム５５の呼出行）の複写・追加が可能となる。
【００８３】
次に、ＣＡＬＬ文を含む行（ＣＡＬＬ文含有行）の削除処理を、図２０および図２３を参照して説明する。
図２０に示す編集画面７００における削除ボタンが選択入力された場合（Ｓ１００１）、表示部１４において強調表示された文字列１１０１が削除（Ｓ１００２）され、１つ手前の文字列１１０３（文字列１１０１の上に表示されていた文字列）が強調表示される（Ｓ１００３）。
【００８４】
このように、レジスタや、ＣＡＬＬ文を検索したり、ＣＡＬＬ文を含む行を検索するなど、検索文字列の範囲を変化させることで、定型的な行複写操作を効率良くおこなうことができる。
【００８５】
次に、他ブロックにおけるレジスタ修正処理の説明を図２４を参照して説明する。
図２４の処理は、レジスタはメインプログラム５６、およびメインプログラム５６で呼び出されるサブプログラム５５において共通である必要があるため、前記した手順によってレジスタの検索・置換などの修正が行われた際に、メインプログラム５６全体にわたってレジスタの値を修正するための処理である。
図１１〜図１９Ｂに示す処理で、レジスタの検索・置換が行われた際に、文字列処理部１９は、レジスタの命令文字列と、置換前と置換後のレジスタの値を記憶部５０に一時的に記憶させておく。
そして、図１４に示す編集画面７００における関連ブロック確認ボタンが選択入力されると、文字列処理部１９は、他のブロック別文字列５４を検索し（Ｓ１１０１）、当該他のブロック内に、記憶しておいたレジスタの命令文字列および置換前の値に一致する文字列があるか否かを判定する（Ｓ１１０２）。
ステップＳ１１０２の結果、一致する文字列がない場合（Ｓ１１０２→Ｎｏ）、文字列処理部１９は、処理を終了する。
ステップＳ１１０２の結果、一致する文字列がある場合（Ｓ１１０２→Ｙｅｓ）、文字列処理部１９は、当該他のブロックにおける編集画面を表示（Ｓ１１０３）する。ステップＳ１１０３で表示される編集画面は、図１１の編集画面５１０や、図１３の編集画面７００などである。そして、文字列処理部１９は、当該他のブロックのレジスタの値を、記憶しておいた置換後の値に変更することで、処理の対象となっている他のブロックのレジスタ修正（Ｓ１１０４）をおこなった後、処理を終了する。文字列検索部２１は、ステップＳ１１０１〜Ｓ１１０４の処理をすべてのブロック別文字列５４に対して行う。
【００８６】
図１４に示す編集画面７００におけるＯＫボタンが押下された場合、表示処理部２４は、編集画面７００を閉じて、“ブロック００２”の編集操作を終了し、文字列置換部２２が、メインプログラム編集領域２３１におけるメインプログラム５６中の文字列を置換すると同時に、記憶部５０におけるメインプログラム５６の文字列も置換し、メインプログラム編集領域２３１に戻る。
編集画面７００におけるキャンセルボタンが押下された場合、表示処理部２４は編集画面７００を閉じて、“ブロック００２”の編集操作を終了し、メインプログラム編集領域２３１の文字列を置換せずに（つまり、メインプログラム５６を変更せずに）、メインプログラム編集領域２３１に戻る。
なお、使用するブロックは、設備およびワーク毎に異なっていることが多い。本実施形態では、図２５に示すように、編集ボタンを選択入力したときに表示するプルダウンメニュー３０３の項目が、図５で選択された“設備選択”および“ワーク選択”により変化する構成になっている。つまり、“設備選択”および“ワーク選択”で選択された設備およびワーク毎に異なるブロック構成が項目として表示される。例えば、“設備Ａ”で“ワークＡ”であれば、“ブロック００１”〜“ブロック０１０”が予め設定されて、表示される（符号１２０１）。また、“設備Ａ”で“ワークＢ”であれば、“ブロック００１”〜“ブロック００４”、“ブロック００６”〜“ブロック００８”、“ブロック０１０” が予め設定され、表示される（符号１２０２）。これにより、メインプログラム５６を作成する場合に、その都度、ブロックの構成を確認することなく、設備およびワーク毎に異なる命令を間違えて作成することがない。
【００８７】
（メインプログラム確認処理）
次に作成したメインプログラム５６の確認処理を図２６〜図３１を用いて説明する。
【００８８】
（サブプログラム確認処理）
最初にサブプログラム確認処理について図２５、図２６、図２７を用いて説明する。
メインプログラム編集領域２３１にメインプログラム５６が表示された状態で、マウスの右ボタンが押下（Ｓ１２０１）されると、表示処理部２４は、図５に示すようなプルダウンメニュー３０１を表示する（Ｓ１２０２）。プルダウンメニュー３０１に表示されている“サブプログラム確認”が選択入力される（Ｓ１２０３）と、文字列検索部２１は、記憶部５０に記憶されているメインプログラム５６を読み込み（Ｓ１２０４）、読み込んだメインプログラム５６から文字列“ＣＡＬＬ”と文字“；”で挟まれているサブプログラム名を順番に抽出する（Ｓ１２０５）。
【００８９】
次に、プログラム展開部１８は、抽出したサブプログラム名をキーとして、記憶部５０において該当するサブプログラム５５があるか否かを判定する（ステップＳ１２０６）。
判定の結果、サブプログラム５５が記憶部５０にない場合(ステップＳ１２０６→Ｎｏ）、プログラム展開部１８は、記憶部５０のメインプログラム５６のＣＡＬＬ文の後ろに存在しない旨を判別するための文字列（“サブプログラム無し”）を挿入し（Ｓ１２０７）、ステップＳ１２１０へ処理を進める。
サブプログラム５５がない場合、ユーザは、ロボットからローディングするか、サブプログラム５５を作成したフォルダを探し、記憶部５０に格納する。または、サブプログラム名が誤っているかを調べ、誤っている場合はサブプログラム名を修正する。サブプログラム５５が未作成であれば、ロボットによるティーチングまたはロボットシミュレータによるオフラインティーチングで該当するサブプログラム５５を作成する。
【００９０】
判定の結果、該当するサブプログラム５５がある場合（Ｓ１２０６→Ｙｅｓ）、プログラム展開部１８は、記憶部５０から該当するサブプログラム５５を、すべて読み込み（Ｓ１２０８）、記憶部５０のメインプログラム５６のＣＡＬＬ文の行に、該当するサブプログラム５５を挿入する（Ｓ１２０９）ことで、展開プログラム５７を作成し、作成した展開プログラム５７を記憶部５０に保存する。そして、表示処理部２４は、作成した展開プログラム５７をメインプログラム編集領域２３１に表示（Ｓ１２１０）し、サブプログラム確認を終了する。
【００９１】
図２７は、ステップＳ１２０５の段階における表示画面例であり、メインプログラム編集領域２３１上のメインプログラム５６のＣＡＬＬ文（サブプログラム５５呼出文）１３０１，１３０２が強調表示されている。この後、この符号１３０１，１３０２がサブプログラム５５の文で置き換わるか、“サブプログラム無し”の情報で置き換わるかする。
【００９２】
このように、サブプログラム５５がない場合、その旨の表示を行うので、メインプログラム５６で使用するサブプログラム名を確認することができるので、サブプログラム名の指定誤りをすることがない。また、ユーザは、展開プログラム５７を確認することができ、処理の流れを確認することができる。
【００９３】
（レジスタ確認処理）
次に、レジスタ確認処理について図２５、図２８Ａ、図２８Ｂ、図２９を用いて説明する。
メインプログラム編集領域２３１にメインプログラム５６が表示された状態で、ユーザが、マウスの右ボタンを押下すると（図２８ＡのＳ１３０１）、表示処理部２４は、図２５に示すようなプルダウンメニュー３０１を表示する（Ｓ１３０２）。プルダウンメニュー３０１の“レジスタ確認”が選択入力される（Ｓ１３０３）と、文字列検索部２１が、記憶部５０に記憶されている展開プログラム５７を読み込み（Ｓ１３０４）、読み込んだ展開プログラム５７において文字列“Ｒ［”と、文字列“］”とで挟まれているレジスタ名を示す文字列を上から順番に１つ抽出する（Ｓ１３０５）。なお、展開プログラム５７がない場合、表示処理部２４が展開プログラム５７の作成を促す表示を行い、処理を終了する。
【００９４】
ここで、抽出したレジスタを“レジスタＡ”とすると、プログラム確認部２３は、抽出した“レジスタＡ”が数値を代入するレジスタ（数値定義）であるか、別のレジスタを参照するレジスタ（参照）であるかを調べる（Ｓ１３０６）。数値定義のレジスタであるか、参照のレジスタであるかは、該当するレジスタの後ろが“＝［数値］”となっているか否かで判定することができる。すなわち、レジスタの後ろに“＝［数値］”があるときは数値定義のレジスタであり、ない場合は参照のレジスタである。そして、プログラム確認部２３は、“レジスタＡ”が存在する行より前の行で“レジスタＡ”が出現するか判定する（図１９ＢのＳ１３０７）。例えば、“Ｒ［１１２］”が図２８ＡのステップＳ１３０５で抽出したレジスタ名である場合、展開プログラム５７で現在“Ｒ［１１２］”がある行から前の行に“Ｒ［１１２］”が出現するか否かを判定する。
【００９５】
判定の結果、レジスタが出現しない場合（Ｓ１３０７→Ｎｏ）、この“レジスタＡ”が数値定義のレジスタ（Ａ：数値定義）であるか否かを判定する（Ｓ１３０８）。数値定義のレジスタであるか否かは、前記した方法で判定される。
判定の結果、数値定義のレジスタではない場合（Ｓ１３０８→Ｎｏ）、このレジスタは参照されているが、数値定義がなされていないので、プログラム確認部２３は、“レジスタＡ”が未定義である旨の情報をレジスタ確認結果として記憶部５０に記憶し（Ａ：未定義：Ｓ１３０９）、ステップＳ１３１６へ処理を進める。
判定の結果、数値定義のレジスタである場合（Ｓ１３０８→Ｙｅｓ）、このレジスタは、最初のレジスタであり、かつ数値定義がなされているので、プログラム確認部２３は、“レジスタＡ”が正常である旨の情報をレジスタ確認結果として記憶部５０に記憶し（Ａ：正常：Ｓ１３１５）、プログラム確認部２３は、ステップＳ１３１６へ処理を進める。
【００９６】
ステップＳ１３０７の結果、レジスタが出現する場合（Ｓ１３０７→Ｙｅｓ）、検出したレジスタを“レジスタＢ”とすると、プログラム確認部２３は、この“レジスタＢ”が数値定義のレジスタ（数値定義）か、参照のレジスタ（参照）かを調べる（Ｓ１３１０）。
次に、プログラム確認部２３は、“レジスタＡ”が数値定義のレジスタであり、かつ“レジスタＢ”が参照のレジスタであるか（Ａ：数値定義，Ｂ：参照）を判定する（Ｓ１３１１）。
ステップＳ１３１１の結果、“レジスタＡ”が数値定義のレジスタであり、かつ“レジスタＢ”が参照のレジスタである場合（Ｓ１３１１→Ｙｅｓ）、レジスタが数値定義する前に参照されているので、プログラム確認部２３は、“レジスタＢ”が未定義である旨の情報をレジスタ確認結果として記憶部５０に記憶し（Ｂ：未定義：Ｓ１３１２）、プログラム確認部２３は、ステップＳ１３１６へ処理を進める。
【００９７】
ステップＳ１３１１の結果、“レジスタＡ”が数値定義のレジスタでないか、“レジスタＢ”が参照のレジスタでない場合（Ｓ１３１１→Ｎｏ）、プログラム確認部２３は、“レジスタＡ”が数値定義のレジスタであり、かつ“レジスタＢ”も数値定義のレジスタであるか（Ａ：数値定義，Ｂ：数値定義）を判定する（Ｓ１３１３）。
ステップＳ１３１３の結果、“レジスタＡ”が数値定義のレジスタであり、かつ“レジスタＢ”も数値定義のレジスタである場合（Ｓ１３１３→Ｙｅｓ）、レジスタに対し二重に数値が代入されている（二重定義）ので、プログラム確認部２３は、“レジスタＡ”が二重定義である旨の情報をレジスタ確認結果として記憶部５０に記憶し（Ａ：二重定義：Ｓ１３１４）、プログラム確認部２３は、ステップＳ１３１６へ処理を進める。
【００９８】
ステップＳ１３１３の結果、“レジスタＡ”が数値定義のレジスタでないか、“レジスタＢ”が数値定義のレジスタでない場合（Ｓ１３１３→Ｎｏ）、レジスタが数値定義された後に参照されているので、プログラム確認部２３は、“レジスタＡ”は正常である旨の情報をレジスタ確認結果として記憶部５０に記憶し（Ａ：正常：Ｓ１３１５）、プログラム確認部２３は、ステップＳ１３１６へ処理を進める。
【００９９】
ステップＳ１３０９、ステップＳ１３１２、ステップＳ１３１４またはステップＳ１３１５の処理の終了後、プログラム確認部２３は、記憶部５０のメインプログラム５６中の該当するレジスタ（“レジスタＡ”または“レジスタＢ”）行の後ろにレジスタ確認結果を書き込む。そして、表示処理部２４が、書き込んだレジスタ確認結果をメインプログラム編集領域２３１に表示（Ｓ１３１６）した後、プログラム確認部２３は、図２８ＡのステップＳ１３０５へ処理を戻し、次のレジスタについてステップＳ１３０５〜Ｓ１３１６の処理を行う。すべてのレジスタについて処理が終了するまで、プログラム確認部２３は、ステップＳ１３０５〜Ｓ１３１６の処理を繰り返す。なお、ステップＳ１３１６において、レジスタ確認結果を強調表示してもよい。
【０１００】
なお、プログラム確認部２３は、“レジスタＡ”の後ろが、「“レジスタＡ”＝“レジスタＡ”」の形式であれば“更新”であり、「“レジスタＡ”＝他の数値命令」であれば“置換”としてレジスタ確認結果を記憶部５０に格納してもよい。
【０１０１】
図２８Ａ，図２８Ｂの処理後のメインプログラム５６表示画面が、図２９に示す図である。図２９の符号１４０１〜１４０７に示すように、レジスタが記載されている行の後ろに、該当するレジスタが定義であるか、参照であるか、未定義であるかなどのレジスタ確認結果が強調表示されている。このとき、レジスタ確認結果の種類毎に色を変えるなどしてもよい。
【０１０２】
このような処理によって、ユーザはメインプログラム５６で使用するレジスタの利用状況を確認することができ、レジスタ名の重複、未定義による誤りを行うことを防止することができる。
【０１０３】
（ラベル確認処理）
次に、ラベル確認処理について図３０Ａ、図３０Ｂ、図３１を参照して説明する。
図２５に示すように、メインプログラム編集領域にメインプログラム５６が表示された状態で、ユーザがマウスの右ボタンを押下すると（Ｓ１４０１）、表示処理部２４がプルダウンメニュー３０１を表示する（Ｓ１４０２）。次に、プルダウンメニュー３０１の“ラベル確認”が選択入力される（Ｓ１４０３）と、文字列検索部２１が、記憶部５０に記憶されているメインプログラム５６を読み込み（Ｓ１４０４）、最初の文字列が“ＬＢＬ［” 、最後の文字列が“］”となるラベル名を示す文字列を抽出する（Ｓ１４０５）。
【０１０４】
抽出したラベルを“ラベルＡ”とすると、プログラム確認部２３は、この“ラベルＡ”が行を識別するラベル（定義）、別のラベルを参照するラベル（参照）かを調べる（Ｓ１４０６）。このとき、プログラム確認部２３は、該当するラベルが“ＪＭＰ”や“ＩＦ”などの命令と共に現れていれば参照のラベルであると判定し、それ以外は定義のラベルであると判定する。
【０１０５】
次に、プログラム確認部２３は、当該“ラベルＡ”がある行を除く他の行で“ラベルＡ”と同じラベルが出現するか否かを判定する（図３０ＢのＳ１４０７）。
ステップＳ１４０７の結果、出現しない場合（Ｓ１４０７→Ｎｏ）、プログラム確認部２３は“ラベルＡ”が定義のラベルである（Ａ：定義）か否かを判定する（Ｓ１４０８）。
ステップＳ１４０８の結果、定義のラベルでなければ（Ｓ１４０８→Ｎｏ）、ラベルは参照されているが、定義がなされていないので、プログラム確認部２３は、“ラベルＡ”が未定義である旨の情報をラベル確認結果として記憶部５０に格納し(Ａ：未定義：Ｓ１４０９）、プログラム確認部２３は、ステップＳ１４１６へ処理を進める。
ステップＳ１４０８の結果、定義のラベルであれば（Ｓ１４０８→Ｙｅｓ）、このラベルは１つだけ存在し、かつ定義であるので、プログラム確認部２３は、“ラベルＡ”が正常である旨のラベル確認結果を記憶部５０に記憶し（Ａ：正常：Ｓ１４１５）、プログラム確認部２３は、ステップＳ１４１６へ処理を進める。
【０１０６】
ステップＳ１４０７の結果、ラベルが出現する場合（Ｓ１４０７→Ｙｅｓ）、出現したラベルを“ラベルＢ”とし、プログラム確認部２３は、この“ラベルＢ”が定義のラベルか、参照のラベルかを調べる（Ｓ１４１０）。
そして、プログラム確認部２３は、“ラベルＡ”が定義のラベルであり、かつ“ラベルＢ”が参照のラベルであるか否か（Ａ：定義，Ｂ：参照）を判定する（Ｓ１４１１）。
ステップＳ１４１１の結果、“ラベルＡ”が定義のラベルであり、かつ“ラベルＢ”が参照のラベルである場合（Ｓ１４１１→Ｙｅｓ）、ラベルが定義され参照されているので、プログラム確認部２３は、ラベルＡが正常である旨の情報をラベル確認結果として記憶部５０に格納し（Ａ：正常：Ｓ１４１２）、プログラム確認部２３は、ステップＳ１４１６へ処理を進める。
【０１０７】
ステップＳ１４１１の結果、“ラベルＡ”が定義のラベルでないか、“ラベルＢ”が定義のラベルでない場合（Ｓ１４１１→Ｎｏ）、プログラム確認部２３は、“ラベルＡ”が定義のラベルであり、かつ“ラベルＢ”も定義のラベルであるか否か（Ａ：定義，Ｂ：定義）を判定する（Ｓ１４１３）。
ステップＳ１４１３の結果、“ラベルＡ”が定義のラベルであり、かつ“ラベルＢ”も定義のラベルである場合（Ｓ１４１３→Ｙｅｓ）、このラベルは二重に定義されているので、プログラム確認部２３は、ラベルＡが二重定義である旨の情報をラベル確認結果として記憶部５０に記憶し（Ａ：二重定義：Ｓ１４１４）、ステップＳ１４１６へ処理を進める。
ステップＳ１４１３の結果、“ラベルＡ”が定義のラベルでないか、“ラベルＢ”が定義のラベルでない場合（Ｓ１４１３→Ｎｏ）、ラベルは定義され、参照されているので、プログラム確認部２３は、ラベルＡが正常である旨の情報をラベル確認結果として記憶部５０に記憶し（Ａ：正常：Ｓ１４１５）、プログラム確認部２３は、ステップＳ１４１６へ処理を進める。
【０１０８】
ステップＳ１４０９、ステップＳ１４１２、ステップＳ１４１４またはステップＳ１４１５の処理の終了後、プログラム確認部２３は、記憶部５０のメインプログラム５６中の該当するラベル（“ラベルＡ”）行の後ろにラベル確認結果を書き込む。そして、表示処理部２４が、書き込んだラベル確認結果をメインプログラム編集領域２３１に表示（Ｓ１４１６）した後、プログラム確認部２３は、図３０ＡのステップＳ１４０５へ処理を戻し、次のラベルについてステップＳ１４０５〜Ｓ１４１６の処理を行う。すべてのラベルについて処理が終了するまで、プログラム確認部２３は、ステップＳ１４０５〜Ｓ１４１６の処理を繰り返す。なお、ステップＳ１４１６において、ラベル確認結果を強調表示してもよい。
【０１０９】
なお、本実施形態ではステップＳ１４０４においてメインプログラム５６を読み込んだが、これに限らず、サブプログラム５５を読み込んでもよい。そして、図３０Ａ、図３０Ｂの処理をサブプログラム５５に対して行ってもよい。
【０１１０】
図３０Ａ、図３０Ｂの処理後のメインプログラム編集領域２３１が、図３１に示す図である。図３１の符号１５０１〜１５０８に示すように、ラベルが記載されている行の後ろに、該当するラベルが正常（定義、参照で表記）であるかなどのラベル確認結果が強調表示されている。このとき、レジスタ確認結果の種類毎に色を変えるなどしてもよい。
【図面の簡単な説明】
【０１１１】
【図１】本実施形態に係るロボット動作プログラム作成装置の構成例を示すブロック図である。
【図２】本実施形態に係るロボット動作プログラム作成装置のハードウェア構成例を示すブロック図である。
【図３】本実施形態に係る初期画面の例を示す図である。
【図４】本実施形態に係る初期操作における画面遷移を示す図である。
【図５】本実施形態に係るブロック別テンプレート、ブロック別検索範囲、ブロック別文字列の選択処理における画面遷移を示す図である。
【図６】本実施形態に係るメインプログラム作成処理における画面遷移を示す図である。
【図７】本実施形態に係るメインプログラム作成処理の手順を示すフローチャートである。
【図８】本実施形態に係る編集画面表示処理の画面遷移を示す図である（その１）。
【図９】本実施形態に係るメインプログラム編集画面表示処理の手順を示すフローチャートである。
【図１０】本実施形態に係る“ブロック００１”の選択処理の手順を示すフローチャートである。
【図１１】本実施形態に係る検索文字列強調表示の画面遷移を示す図である（その１）。
【図１２】本実施形態に係る“ブロック００１”の文字列編集処理の手順を示すフローチャートである。
【図１３】本実施形態に係る編集画面表示処理の画面遷移を示す図である（その２）。
【図１４】本実施形態に係る検索文字列強調表示の画面遷移を示す図である（その１）。
【図１５】本実施形態に係る検索文字列強調表示の画面遷移を示す図である（その２）。
【図１６】本実施形態に係る“ブロック００２”の選択処理の手順を示すフローチャートである。
【図１７】本実施形態に係る“ブロック００２”の文字列編集処理の手順を示すフローチャートである。
【図１８】本実施形態に係る文字列置換処理の画面遷移を示す図である。
【図１９Ａ】本実施形態に係る文字列置換処理の手順を示すフローチャートである（その１）。
【図１９Ｂ】本実施形態に係る文字列置換処理の手順を示すフローチャートである（その２）。
【図２０】本実施形態に係るＣＡＬＬ分含有行選択、追加および削除処理の画面遷移を示す図である。
【図２１】本実施形態に係るＣＡＬＬ文含有行選択処理の手順を示すフローチャートである。
【図２２】本実施形態に係るＣＡＬＬ文含有行追加処理の手順を示すフローチャートである。
【図２３】本実施形態に係るＣＡＬＬ文含有行削除処理の手順を示すフローチャートである。
【図２４】本実施形態に係る他ブロックレジスタ修正処理の手順を示すフローチャートである。
【図２５】本実施形態に係るワーク毎のブロック構成例を示す図である。
【図２６】本実施形態に係るサブプログラム確認処理の手順を示すフローチャートである。
【図２７】本実施形態に係るサブプログラム呼出命令を強調している画面例を示す図である。
【図２８Ａ】本実施形態に係るレジスタ確認処理の手順を示すフローチャートである（その１）。
【図２８Ｂ】本実施形態に係るレジスタ確認処理の手順を示すフローチャートである（その２）。
【図２９】本実施形態に係るレジスタ確認結果の画面例を示す図である。
【図３０Ａ】本実施形態に係るラベル確認処理の手順を示すフローチャートである（その１）。
【図３０Ｂ】本実施形態に係るラベル確認処理の手順を示すフローチャートである（その２）。
【図３１】本実施形態に係るラベル確認結果の画面例を示す図である。
【図３２】テキストエディタにおけるロボットを動作せるメインプログラムの一例を示す図である。
【図３３】命令部の一例を示す図である。
【符号の説明】
【０１１２】
１      ロボット動作プログラム作成装置（プログラム作成支援装置）
１７    プログラム作成部
１８    プログラム展開部
１９    文字列処理部
２１    文字列検索部
２２    文字列置換部
２３    プログラム確認部
２４    表示処理部
５０    記憶部
５２    ブロック別テンプレート
５３    ブロック別検索範囲
５４    ブロック別文字列
５５    サブプログラム
５６    メインプログラム
５７    展開プログラム
【図１】
2010157155.tif 000003
【図２】
2010157155.tif 000004
【図３】
2010157155.tif 000005
【図４】
2010157155.tif 000006
【図５】
2010157155.tif 000007
【図６】
2010157155.tif 000008
【図７】
2010157155.tif 000009
【図８】
2010157155.tif 000010
【図９】
2010157155.tif 000011
【図１０】
2010157155.tif 000012
【図１１】
2010157155.tif 000013
【図１２】
2010157155.tif 000014
【図１３】
2010157155.tif 000015
【図１４】
2010157155.tif 000016
【図１５】
2010157155.tif 000017
【図１６】
2010157155.tif 000018
【図１７】
2010157155.tif 000019
【図１８】
2010157155.tif 000020
【図１９Ａ】
2010157155.tif 000021
【図１９Ｂ】
2010157155.tif 000022
【図２０】
2010157155.tif 000023
【図２１】
2010157155.tif 000024
【図２２】
2010157155.tif 000025
【図２３】
2010157155.tif 000026
【図２４】
2010157155.tif 000027
【図２５】
2010157155.tif 000028
【図２６】
2010157155.tif 000029
【図２７】
2010157155.tif 000030
【図２８Ａ】
2010157155.tif 000031
【図２８Ｂ】
2010157155.tif 000032
【図２９】
2010157155.tif 000033
【図３０Ａ】
2010157155.tif 000034
【図３０Ｂ】
2010157155.tif 000035
【図３１】
2010157155.tif 000036
【図３２】
2010157155.tif 000037
【図３３】
2010157155.tif 000038