(57)【要約】【課題】ソースプログラムのコンパイル時に出力されるエラーメッセージの数を抑止し、ソースプログラム作成者の修正作業負担を軽減する。【解決手段】外部から入力される出力制御情報に基づき出力許可・不許可となるエラーメッセージを判定し、各エラーメッセージに対して出力許可・不許可を表す情報を設定してエラー情報テーブル６を生成する動作モード判定部２と、コンパイル結果のエラーメッセージを出力するか否かをエラー情報テーブル６を参照して判定するエラー判定部４と、エラー判定部２の判定結果に基づきエラーメッセージの出力を抑止するエラー出力部５とを有し、特定の種類のエラーメッセージの出力を抑止する。【選択図】        図１
2004206501.tif 000002
【特許請求の範囲】
【請求項１】
コンパイル処理で検出されたエラーのメッセージの出力を制御するエラーメッセージ出力制御システムであって、
外部から入力される出力制御情報に基づき、出力許可もしくは出力不許可となるエラーメッセージを判定し、各エラーメッセージのそれぞれに対して出力の許可もしくは不許可を表す情報を設定してエラー情報テーブルを生成する第１の手段と、
コンパイル処理で検出されたエラーのメッセージを出力するか否かを、上記エラー情報テーブルを参照して判定する第２の手段と、
該第２の判定手段の判定結果に基づき、コンパイル処理で検出されたエラーのメッセージの出力抑止制御を行う第３の手段と
を有することを特徴とするエラーメッセージ出力制御システム。
【請求項２】
請求項１に記載のエラーメッセージ出力制御システムであって、上記エラー情報テーブルは複数からなり、
上記第１の手段は、各エラー情報テーブルにおける当該エラー番号に対する設定内容の組み合わせで上記各エラーメッセージの出力の許可もしくは不許可を表すように各エラー情報テーブルを生成することを特徴とするエラーメッセージ出力制御システム。
【請求項３】
コンピュータを、請求項１、もしくは、請求項２のいずれかに記載のエラーメッセージ出力制御システムにおける各手段として実行させるためのコンパイラ。
【請求項４】
コンパイル処理で検出されたエラーのメッセージの出力を制御するコンピュータシステムのエラーメッセージ出力制御方法であって、
予め各エラーメッセージを分類して各エラーメッセージのエラー番号に分類番号を対応付けた分類情報を参照し、各エラーメッセージのエラー番号に対応付けて、当該エラーメッセージが外部から指定された第１の分類番号もしくは該第１の分類番号に関連する第２の分類番号の少なくともいずれか一方に関するエラーメッセージであることを明示する第１の識別情報をエラー情報テーブルに設定する第１の手順と、
上記分類情報を参照し、上記エラー情報テーブルにおいて各エラーメッセージのエラー番号に対応付けて、当該エラーメッセージが上記第１の分類番号と上記第２の分類番号のいずれに属するかを明示する第２の識別情報を設定する第２の手順と、
コンパイル処理でエラー検出されたエラーメッセージのエラー番号が上記エラー情報テーブルにおいて上記第１の識別情報が設定されていなけば当該エラー番号のエラーメッセージを出力する第３の手順と、
コンパイル処理でエラー検出されたエラーメッセージのエラー番号が上記エラー情報テーブルにおいて上記第１の識別情報が設定されており且つ上記第２の識別情報として上記第１の分類番号に属するエラーメッセージが設定されていれば当該エラー番号にエラー対象のデータ名を対応付けて第１の関連用テーブルに登録して、当該エラー番号のエラーメッセージを出力する第４の手順と、
コンパイル処理でエラー検出されたエラーメッセージのエラー番号が上記エラー情報テーブルにおいて上記第１の識別情報が設定されており且つ上記第２の識別情報として上記第２の分類番号に属するエラーメッセージが設定されていれば当該エラー番号にエラー対象のデータ名を対応付けて第２の関連用テーブルに登録する第５の手順と、
上記第１の関連用テーブルと上記第２の関連用テーブルとの各々の登録内容を比較して、上記第２の関連用テーブルにおいてのみ明示されているデータ名に対応するエラー番号のエラーメッセージを出力し、上記第１の関連用テーブルと上記第２の関連用テーブルの両方で明示されているデータ名であれば、上記第２の関連用テーブルに基づく当該データ名に対応するエラー番号のエラーメッセージの出力を抑止して上記第１の関連用テーブルに基づく当該データ名に対応するエラー番号のエラーメッセージを出力する第６の手順と
を有することを特徴とするエラーメッセージ出力制御方法。
【請求項５】
コンパイル処理で検出されたエラーのメッセージの出力を制御するコンピュータシステムのエラーメッセージ出力制御方法であって、
外部から入力される、ソースプログラム中のデータ定義の誤りに起因して当該データの参照毎に出力されるデータ参照のエラーメッセージの出力抑止指示に基づき、各エラーメッセージのエラー番号に対応付けて、当該エラーメッセージが定義もしくは参照の少なくともいずれか一方に関するエラーメッセージであることを明示する第１の識別情報と、当該エラーメッセージが定義に関するエラーメッセージと参照に関するエラーメッセージのいずれであるかを明示する第２の識別情報とをエラー情報テーブルに設定する第１の手順と、
コンパイル処理でエラー検出されたエラーメッセージのエラー番号が上記エラー情報テーブルにおいて上記第１の識別情報が設定されていなけば当該エラー番号のエラーメッセージを出力する第２の手順と、
コンパイル処理でエラー検出されたエラーメッセージのエラー番号が上記エラー情報テーブルにおいて上記第１の識別情報が設定されており且つ上記第２の識別情報として定義に関するエラーメッセージが設定されていれば当該エラー番号にエラー対象のデータ名を対応付けて定義用テーブルに登録して、当該エラー番号のエラーメッセージを出力する第３の手順と、
コンパイル処理でエラー検出されたエラーメッセージのエラー番号が上記エラー情報テーブルにおいて上記第１の識別情報が設定されており且つ上記第２の識別情報として参照に関するエラーメッセージが設定されていれば当該エラー番号にエラー対象のデータ名を対応付けて参照用テーブルに登録する第４の手順と、
上記定義用テーブルと上記参照用テーブルとの各々の登録内容を比較して、上記参照用テーブルにおいてのみ明示されているデータ名に対応するエラー番号のエラーメッセージを出力し、上記参照用テーブルと上記定義用テーブルの両方で明示されているデータ名であれば、上記参照用テーブルに基づく当該データ名に対応するエラー番号のエラーメッセージの出力を抑止して上記定義用テーブルに基づく当該データ名に対応するエラー番号のエラーメッセージを出力する第５の手順と
を有することを特徴とするエラーメッセージ出力制御方法。
【請求項６】
コンピュータに、請求項４、もしくは、請求項５のいずれかに記載のエラーメッセージ出力制御方法における各手順を実行させるためのコンパイラ。
【請求項７】
コンピュータに、ソースプログラムをコンパイルさせ、検出したエラーのメッセージを出力させるコンパイラであって、
エラーメッセージの種類別に設定された分類番号を各エラーメッセージのエラー番号に対応付けた分類テーブル情報を有し、
上記コンピュータに、外部から入力される指示情報に対応する分類番号を特定して上記分類テーブルから当該分類番号が対応付けられた各エラー番号を判定し、判定した各エラー番号を明示したエラー情報テーブルを生成する手順と、
エラー検出したエラーメッセージのエラー番号が上記エラー情報テーブルに明示されているか否かにより当該エラーメッセージを出力するか否かを判定する手順と、
該手順での判定結果に基づき、エラー検出したエラーメッセージを出力もしくは出力抑止する手順と
を実行させるためのコンパイラ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンパイラによるプログラムにおけるエラーの検出とエラー内容（メッセージ）の表示技術に係わり、特に、エラー原因の調査を効率化するのに好適なエラーメッセージ出力制御技術に関するものである。
【０００２】
【従来の技術】
従来のコンパイラによるプログラムにおけるエラーの検出とエラー内容表示技術として、例えば、特許文献１に記載のものがある。この技術では、コンパイラは、エラーを検出してエラーメッセージを画面出力する際、そのエラーメッセージの出力形態を、エラー重度の段階別に変更することができる。
【０００３】
これにより、プログラム作成者は、必要とするエラー重度のエラーだけを容易に認識することが可能であり、エラー原因調査に要する作業負荷を軽減できる。
【０００４】
しかし、この技術は、コンパイラが出力するエラーメッセージの出力形態をエラー重度の段階別に変更することはできても、特定のエラーメッセージ出力のみを抑止する効率的な機構を備えていないため、ソースプログラムの修正が不要である事が既知なエラーメッセージも毎回出力され、修正要否を判定する必要があり、作業効率が悪かった。
【０００５】
【特許文献１】
特開平０５−０９４２７１号公報
【０００６】
【発明が解決しようとする課題】
解決しようとする問題点は、従来の技術では、ソースプログラムの修正が不要である事が既知なエラーメッセージの出力を効率的に回避することができない点である。
【０００７】
本発明の目的は、これら従来技術の課題を解決し、ソースプログラムの修正が必要なエラーに関してのメッセージのみの出力を効率的に制御可能とし、ソースプログラムのエラー原因の調査作業に要する負荷を軽減することである。
【０００８】
【課題を解決するための手段】
上記目的を達成するため、本発明では、以下の各構成要素を具備することで、コンパイル処理で検出したエラーのメッセージの内、コンパイル操作時の指示に動的に応じて、特定の種類のエラーメッセージの出力を抑止することを特徴とする。（イ）全てのエラーメッセージのそれぞれを、例えば定義に関するエラーメッセージあるいは参照に関するエラーメッセージ等、種類別に分類し、各エラーメッセージのエラー番号と分類番号とを対応付けた分類テーブル、（ロ）外部（コンパイル操作する操作者等）からの指示情報に対応する分類番号をキーに分類テーブルを参照して、指摘された分類番号が対応付けられた各エラー番号を特定し、特定した各エラー番号を明示したエラー情報テーブルを生成する手段、（ハ）エラー検出したエラーメッセージのエラー番号をキーにエラー情報テーブルを参照して、当該エラー番号がエラー情報テーブルに明示されているか否かにより、エラー検出したエラーメッセージの出力・非出力を決定する手段。そして、このような構成により、例えばソースプログラム中のデータ定義の誤りに起因して、当該データの参照毎に出力されるデータ参照のエラーメッセージの出力を抑止するために、エラー情報テーブルにおいて、各エラー番号毎に、定義もしくは参照の少なくともいずれか一方に関するエラーメッセージであることを明示するフラグを第１の欄に設定すると共に、定義に関するエラーメッセージと参照に関するエラーメッセージのいずれであるかを明示するフラグを第２の欄に設定しておき、エラー検出したエラーメッセージのエラー番号をキーに当該エラー情報テーブルを検索して、定義に関するエラーメッセージであれば当該エラー番号にエラー対象のデータ名を対応付けて明示した定義用テーブルを生成し、参照に関するエラーメッセージであれば当該エラー番号にエラー対象のデータ名を対応付けて明示した参照用テーブルを生成し、参照用テーブルにおいて明示されていても定義用テーブルにおいても明示されているデータ名に対応するエラー番号のエラーメッセージの出力は抑止する。
【０００９】
【発明の実施の形態】
以下、本発明の実施の形態を、図面により詳細に説明する。
【００１０】
図１は、本発明に係わるエラーメッセージ出力制御システムの第１の構成例を示すブロック図であり、図２は、図１のエラーメッセージ出力制御システムにおける分類テーブルの構成例を示す説明図、図３は、図１のエラーメッセージ出力制御システムにおけるエラー情報テーブルの構成例を示す説明図、図４は、図１のエラーメッセージ出力制御システムにおける関連エラーテーブルの構成例を示す説明図、図５は、図１におけるエラーメッセージ出力制御システムの第１の処理動作例を示すＰＡＤ図、図６は、図１におけるエラーメッセージ出力制御システムの第２の処理動作例を示すＰＡＤ図、図７は、図１におけるエラーメッセージ出力制御システムの第３の処理動作例を示すＰＡＤ図、図８は、図５における第１の処理動作の具体例を示す説明図、図９は、図６における第２の処理動作の具体例を示す説明図、図１０は、図７における第３の処理動作の具体例を示す説明図、図１１は、図１におけるエラーメッセージ出力制御システムを動作させるコンピュータのハードウェア構成例を示すブロック図、図１２は、図１におけるエラーメッセージ出力制御システムを具備したコンパイラの構成例を示すブロック図、図１３は、本発明に係わるエラーメッセージ出力制御システムの第２の構成例を示すブロック図である。
【００１１】
図１１において、２１はＣＲＴ（Cathode Ray Tube）やＬＣＤ（Liquid Crystal Display）等からなる表示装置、２２はキーボードやマウス等からなる入力装置、２３はＨＤＤ（Hard Disk Drive）等からなる外部記憶装置、２４はＣＰＵ（Central Processing Unit）２４ａや主メモリ２４ｂおよび入出力インタフェース２４ｃ等を具備してコンピュータ処理を行なう情報処理装置、２５は本発明に係わるプログラムやデータを記録したＣＤ−ＲＯＭ（Compact Disc-Read OnlyMemory）もしくはＤＶＤ（Digital Video Disc/Digital Versatile Disc）等からなる光ディスク、２６は光ディスク２５に記録されたプログラムおよびデータを読み出すための駆動装置、２７はＬＡＮ（Local Area Network）カードやモデム等からなる通信装置である。
【００１２】
光ディスク２５に格納されたプログラムおよびデータを情報処理装置２４により駆動装置２６を介して外部記憶装置２３内にインストールした後、外部記憶装置２３から主メモリ２４ｂに読み込みＣＰＵ２４ａで処理することにより、情報処理装置２４内に図１に示すエラーメッセージ出力制御システムおよび図１２に示すコンパイラの各機能が構成される。
【００１３】
例えば、図１２に示す構成のコンパイラにおける各処理機能部は、主メモリ２４ｂにロードされたコンパイル用プログラムをＣＰＵ２４ａで処理することにより実現される。
【００１４】
図１２においては、コンパイラの一般的な構成を示しており、このコンパイラは、読込部１１０２、字句解析部１１０３、構文解析部１１０４、中間語生成部１１０５、最適化部１１０６、目的コード生成部１１０７からなり、ソースプログラム１１０１を目的プログラム１１０８に変換（コンパイル）する。
【００１５】
以下、その一般的なコンパイル動作を説明する。読込部１１０２は、ソースプログラム１１０１を通常レコード単位で読み込む。尚、この読込部１１０２をコンパイラの一部ではなく、オペレーティングシステムの一部としても良い。
【００１６】
字句解析部１１０３は、読込部１１０２によりメモリに読み込まれたソースプログラム１１０１の文字の列を一文字ずつ調べながら基本的要素を切り出し、その結果を、テーブル１１０９に格納する。
【００１７】
構文解析部１１０４は、字句解析部１１０３の処理結果をテーブル１１０９から読み出して、単語から文がどのように構成されているかを調べる。すなわち、プログラムのどの部分が、文法のどの規則に対応するかを解析して、プログラムが文法的に正しい形をしているかどうかを判定する。この構文解析の結果としてソースプログラムに近い形での中間語（解析木）が生成され、テーブル１１０９に格納される。
【００１８】
中間語生成部１１０５は、構文解析部１１０４で生成されたソースプログラムに近い形の中間語（解析木）をテーブル１１０９から読み出して、実行すべき演算の列としての中間語列を生成し、テーブル１１０９に格納する。尚、中間語生成部１１０５と構文解析部１１０４を一緒にし、構文解析して直ちに中間語列を生成する構成としても良い。
【００１９】
最適化部１１０６は、目的プログラム１１０８を、実行時の効率を良くするものであり、中間語生成部１１０５で生成された中間語列をテーブル１１０９から読み出し、当該中間語列の中の無駄なものを削除したり、順序を入れ換える等してテーブル１１０９に格納する。尚、最適化は、中間語生成部１１０５や構文解析部１１０４での処理でも行われる。
【００２０】
目的コード生成部１１０７は、最適化部１１０６で最適化された中間語をテーブル１１０９から読み出して、目的プログラム１１０８を生成する。この目的プログラム１１０８は、磁気ディスク等の記憶装置・記憶媒体に出力され格納される。
【００２１】
このようなコンパイル動作を行う際、コンパイラは、ソースプログラム１１０１の誤りを検出すると、当該エラーに対応するメッセージ（エラーメッセージ）を出力する。
【００２２】
本例のコンパイラでは、このようなエラーメッセージの出力を制御するために、構文解析部１１０４に、図１における構文解析部１に示すように、エラーメッセージ出力制御システムを設ける。
【００２３】
すなわち、図１に示すように、構文解析部１には、動作モード判定部２と、分類テーブル２ａ、構文規則解析部３、エラー判定部４、エラー出力部５、エラー情報テーブル６、関連エラーテーブル７からなるエラーメッセージ出力制御システムが設けられている。
【００２４】
分類テーブル２ａは、コンパイラの作成時に人手により予め作成され、当該コンパイラが出力する各エラーメッセージのエラー番号に対して、コンパイラの作成者が分類した各エラーメッセージの種類を特定する分類番号が割り当てられる。図２に示す構成例では、エラー番号「０００１」と「０００３」に対して、定義に関するエラーメッセージの分類番号「１」が、また、エラー番号「０００４」に対しては、参照に関するエラーメッセージの分類番号「２」が対応付けられており、エラー番号「０００１」のエラーメッセージは、定義に関するエラーであること、エラー番号「０００４」のエラーメッセージは、参照に関するエラーであること等が示されている。
【００２５】
動作モード判定部２は、外部から与えられた動作モードを判定し、分類テーブル２ａを参照してエラー情報テーブル６を生成する。構文規則解析部３は、入力ソースプログラムが文法上、正しいかを判定する。
【００２６】
エラー情報テーブル６は、エラー番号別に、当該エラー番号のエラーメッセージの出力の許可・不許可を明示した情報（ステータス）を保持する。関連エラーテーブル７は、定義用テーブル７ａと参照用テーブル７ｂの２種類あり、それぞれエラー番号とエラー対象のデータ名を保持する。
【００２７】
エラー判定部４は、エラー情報テーブル６や関連エラーテーブル７を参照し、動作モードの指定の有無や種類に応じて各エラーメッセージの出力要否を判定する。エラー出力部５は、エラー判定部４の判定に従い、該当するエラーメッセージを出力する。
【００２８】
エラー情報テーブル６は、図３に示すように、エラー番号別にステータスを保持するものであり、エラー番号およびステータスを示す欄（Ａ、Ｂ、Ｃ、Ｄ、・・・等）で構成される。ステータスは、動作モードの指定の有無、指定された動作モードの種類、エラーメッセージの属性等を表す。
【００２９】
関連エラーテーブル７は、図４に示すように、定義用テーブル７ａと参照用テーブル７ｂの２種類があり、定義用テーブル７ａは、データの定義エラーに対して出力されるエラーメッセージのエラー番号とエラー対象のデータ名を保持し、参照用テーブル７ｂは、データの参照エラーに対して出力されるエラーメッセージのエラー番号とエラー対象のデータ名を保持する。
【００３０】
この参照用テーブル７ｂに登録されているエラー対象のデータ名が、定義用テーブル７ａに登録されている場合、そのエラー対象のデータ名に対してデータの参照のエラーメッセージ出力を抑止するために、これらの２つのテーブル（７ａ，７ｂ）を用いる。
【００３１】
以下、このような構成のメッセージ出力制御システムの動作例を、（I）特定の種類のエラーメッセージのみを出力する場合、（II）プログラム作成者が指定した特定のエラー番号のエラーメッセージ出力を抑止する場合、（III）ソースプログラム中のデータ定義の誤りに起因して、該当データの参照毎に出力されてしまうデータ参照のエラーメッセージを抑止する場合の３つのケースに分けて説明する。
【００３２】
まず、（I）特定の種類のエラーメッセージのみを出力する際の動作を説明する。
【００３３】
ソースプログラムをコンパイルする際に、特定の種類のエラーメッセージ（この例では、定義に関係のあるエラーメッセージ）のみを出力する動作モードＡが指定された場合の例を図５の処理の流れに沿って説明する。
【００３４】
まず、図１の動作モード判定部２において、外部からの動作モードＡの指定の有無を判定する（ステップ４０１）。動作モードＡの指定があった場合、定義に関係のあるエラーメッセージのみを出力する指定であると判定し、分類テーブル２ａを参照して「定義」に関係のあるエラー番号を特定し、エラー情報テーブル６における「定義」に関係のあるエラー番号のステータスＡ欄をＯＮ（「１」）に設定し（ステップ４０２）、定義に関係しないエラー番号のステータスＡ欄をＯＦＦ（「０」）に設定する（ステップ４０３）。ここで、エラー情報テーブル６におけるステータスＡ欄がＯＮの設定状態は、当該エラー番号のエラーメッセージを出力することを表す。
【００３５】
次に、構文規則解析部３において、ソースプログラムの構文規則の解析を行い（ステップ４０４）、構文エラーの有無を判定する（ステップ４０５）。構文エラーがあった場合、エラー判定部４において、出力すべきエラー番号でエラー情報テーブル６の検索を行い（ステップ４０６）、そのエラー番号のステータスＡ欄がＯＮ（「１」）であるかＯＦＦ（「０」）であるかを判定する（ステップ４０７）。
【００３６】
エラー判定部４における判定結果で、当該エラー番号のＡ欄がＯＮであれば、エラー出力部５において、エラーメッセージを出力し（ステップ４０８）、ＯＦＦであれば、出力を抑止する（ステップ４０９）。
【００３７】
このような処理により、図８に示すようにして、具体的なエラーメッセージの出力抑止制御が行われる。
【００３８】
例えば、図８においては、ソースプログラム中に、「ｉの定義の誤り（変数ｉが未定義）」、「ピリオドなしの誤り（〜の後ろにピリオドがない）」、「；なしの誤り（〜の後ろに；がない）」、「ｊの定義の誤り（変数ｊは２重に定義できない）」という４つのエラーがあるものとしている。
【００３９】
この場合、動作モードＡ適用前は、コンパイル時に、「変数ｉは未定義です。（エラー番号：０００１）」、「〜の後ろにピリオドがありません。（エラー番号：０００６）」、「〜の後ろに；がありません。（エラー番号：０００７）」、「変数ｊは２重に定義できません。（エラー番号：０００８）」という４つのエラーメッセージが出力される。
【００４０】
しかし、同じソースプログラムを、動作モードＡを指定してコンパイルする場合、まず、その指定に基づき、動作モード判定部２において、図３に示すエラー情報テーブル６におけるエラー番号「０００１」、「０００８」のＡ欄のように、定義に関係のあるエラー番号のステータスＡ欄をＯＮにし、定義に関係しないエラー番号のステータスＡ欄をＯＦＦに設定する。
【００４１】
この設定状態で、構文規則解析部３において、図８に示すソースプログラム例の様なエラーを検出した場合、図３のエラー情報テーブル６中のエラー番号０００１、０００８のＡ欄がＯＮであるので、エラー判定部４およびエラー出力部５の処理により、エラー番号「０００１」、「０００８」のエラーメッセージ（「変数ｉは未定義」、「変数ｊは２重に定義できない」）を出力するが、同エラー情報テーブル６中のエラー番号「０００６」、「０００７」のＡ欄はＯＦＦであるので、エラー番号「０００６」、「０００７」のエラーメッセージは出力しない。
【００４２】
このように、図８に示す例のような、従来のコンパイルでは４つのエラーメッセージが出力されるソースプログラムを、動作モードＡを指定してコンパイルすると、図８の動作モードＡ適用後に示すように、「変数ｉは未定義」、「変数ｊは２重に定義できない」といった、定義に関する特定の種類（「０００１」、「０００８」）のエラーメッセージのみを出力するように制御することができる。
【００４３】
このようにして、図１に示す構文解析部１の構成とすることにより、外部から与えられる動作モードに応じて、特定の種類のエラーメッセージのみを出力するコンパイラを作成することができる。
【００４４】
次に、（II）プログラム作成者が指定した特定のエラー番号のエラーメッセージ出力を抑止する際の動作を説明する。
【００４５】
ソースプログラムをコンパイルする際に、プログラム作成者が指定した特定のエラー番号のエラーメッセージ出力を抑止する動作モードＢが指定された場合の例を図６の処理の流れに沿って説明する。尚、動作モードＢにおいては、Ｂ（エラー番号１、 エラー番号２、 ...）のように、動作モードＢの引数にエラーメッセージの出力を抑止したいエラー番号を指定する。
【００４６】
まず、動作モード判定部２により、外部からの動作モードＢの指定の有無を判定する（ステップ５０１）。そして、動作モードＢの指定があった場合、特定のエラー番号のエラーメッセージに対する出力抑止が指定されているものと判定し、図３のエラー情報テーブル６において、動作モードＢの引数に指定されたエラー番号のステータスＢ欄をＯＮに設定し（ステップ５０２）、引数に指定されないエラー番号のステータスＢ欄をＯＦＦに設定する（ステップ５０３）。尚、Ｂ欄がＯＮの設定状態は、当該エラーメッセージ出力を抑止することを表す。
【００４７】
この設定状態で、構文規則解析部３において、ソースプログラムの構文規則の解析を行い（ステップ５０４）、構文エラーの有無を判定する（ステップ５０５）。構文エラーがあった場合、エラー判定部４において、出力すべきエラー番号でエラー情報テーブル６の検索を行い（ステップ５０６）、そのエラー番号のＢ欄の設定がＯＮであるかＯＦＦであるかを判定する（ステップ５０７）。
【００４８】
エラー判定部４の判定結果において、当該エラー番号のＢ欄がＯＮの設定であれば、エラー出力部５において、当該エラーメッセージの出力を抑止し（ステップ５０８）、Ｂ欄がＯＦＦの設定であれば、当該エラーメッセージを出力する（ステップ５０９）。
【００４９】
このような処理により、図９に示すようにして、具体的なメッセージ出力制御が行われる。
【００５０】
例えば、図９においては、ソースプログラム中に、「誤り１」、「誤り２」、「誤り３」、「誤り４」という４つのエラーがあるものとする。
【００５１】
この場合、動作モードＢ適用前は、コンパイル時に、エラー番号「０００２」、「０００５」、「０００９」、「００１０」の４つのエラーメッセージが出力される。
【００５２】
しかし、同じソースプログラムを、動作モードＢを指定してコンパイルする場合、まず、その指定に基づき、動作モード判定部２において、図３に示すエラー情報テーブル６におけるエラー番号「０００２」、「０００５」のＢ欄のように、動作モードＢの引数に指定されたエラー番号「０００２」、「０００５」のステータスＢ欄をＯＮに設定し、引数に指定されないエラー番号のステータスＢ欄をＯＦＦに設定する。
【００５３】
この設定状態で、構文規則解析部３において、図９に示すソースプログラム例の様な４つのエラーを検出した場合、図３のエラー情報テーブル６中のエラー番号０００２、０００５のＢ欄がＯＮであるので、エラー判定部４およびエラー出力部５の処理により、エラー番号「０００２」、「０００５」のエラーメッセージは出力せず、同エラー情報テーブル６中のエラー番号「０００９」、「００１０」のＢ欄はＯＦＦであるので、エラー番号「０００９」、「００１０」のエラーメッセージを出力する。
【００５４】
このように、図９に示す例のような、従来のコンパイルでは４つのエラーメッセージが出力されるソースプログラムを、動作モードＢ（０００２，０００５）を指定してコンパイルすると、図９の動作モードＢ適用後に示すように、「エラー番号０００２」と「エラー番号０００５」のエラーメッセージの出力を抑止することができる。
【００５５】
このようにして、図１に示す構文解析部１の構成とすることにより、外部から与えられる動作モードの引数で指定されたエラー番号のエラーメッセージの出力を抑止するコンパイラを作成することができる。
【００５６】
この動作モードＢをコンパイル時に指定することにより、例えば、ソースプログラムの作成者がそのソースプログラムのコンパイルを行う際、文法上は正しくないがコンパイラが仮定してくれる等により動作として問題がなく、ソースプログラムの修正が不要であることが分かっているエラーに関しては、その出力を抑止することができる。
【００５７】
次に、（III）ソースプログラム中のデータ定義の誤りに起因して、該当データの参照毎に出力されるデータ参照のエラーメッセージの出力を抑止する際の動作を説明する。
【００５８】
ソースプログラムをコンパイルする際に、データ定義の誤りに起因して、該当データの参照毎に出力されるデータ参照のエラーメッセージを抑止する動作モードＣが指定された場合の例を図７の処理の流れに沿って説明する。
【００５９】
まず、動作モード判定部２により、外部からの動作モードＣの指定の有無を判定する（ステップ６０１）。そして、動作モードＣの指定があった場合、ソースプログラム中のデータ定義の誤りに起因して該当データの参照毎に出力されるデータ参照のエラーメッセージの出力を抑止する指定であると判定し、分類テーブル２ａを参照して「定義」、「参照」に関係のあるエラー番号を特定し、図３におけるエラー情報テーブル６のステータスＣ欄、Ｄ欄を次の通りに設定する。
【００６０】
すなわち、定義・参照に関係のあるエラー番号のステータスＣ欄をＯＮに設定し（ステップ６０２）、さらに、定義に関係あるものはＤ欄をＯＮ（ステップ６０３）、参照に関係あるものはＯＦＦに設定する（ステップ６０４）。また、定義・参照に関係しないエラー番号のステータスＣ欄はＯＦＦに設定する（ステップ６０５）。
【００６１】
ここでは、ステータスＣ欄がＯＮの設定状態は、データの定義または参照に関係のあるエラーメッセージであることを表し、また、ステータスＤ欄がＯＮの設定状態はデータの定義、ＯＦＦの設定状態はデータの参照に関係のあるエラーメッセージであることを表す。
【００６２】
このような設定状態で、構文規則解析部３において、ソースプログラムの構文規則の解析を行い（ステップ６０６）、構文エラーの有無を判定する（ステップ６０７）。構文エラーがあった場合、エラー判定部４において、エラー情報テーブル６を検索し、そのエラー番号のステータスＣ欄がＯＮの設定であるかを判定し（ステップ６０８）、ステータスＣ欄がＯＮ設定であれば、ステータスＤ欄がＯＮ設定であるかを判定する（ステップ６０９）。
【００６３】
エラー判定部４においての判定で、当該エラー番号のステータスＣ欄およびＤ欄の両方がＯＮ設定になっていれば、関連エラーテーブル７の定義用テーブル７ａにエラー番号とエラー対象のデータ名を登録し（ステップ６１０）、定義のエラーメッセージを出力する（ステップ６１１）。
【００６４】
また、ステータスＣ欄がＯＮ設定で且つＤ欄がＯＦＦ設定になっていれば、関連エラーテーブル７における参照用テーブル７ｂにエラー番号とエラー対象のデータ名を登録する（ステップ６１２）。また、ステータスＣ欄がＯＦＦ設定になっていれば、そのエラー番号のエラーメッセージを、そのまま出力する（ステップ６１３）。
【００６５】
エラー判定部４において、まず参照用テーブル７ｂを検索して（ステップ６１４）、次に定義用テーブル７ａを検索し（ステップ６１５）、定義用テーブル７ａに同じデータ名が登録されているか否か判定する（ステップ６１６）。
【００６６】
定義用テーブル７ａに同じデータ名が登録されていれば、参照のエラーメッセージの出力は抑止するが（ステップ６１７）、同じデータ名が登録されていなければ、エラー出力部５において、参照のエラーメッセージを出力する（ステップ６１８）。
【００６７】
このような処理により、図１０に示すようにして、具体的なメッセージ出力制御が行われる。
【００６８】
例えば、図１０においては、ソースプログラム中に、「ｄａｔａ１の定義の誤り」、「ｄａｔａ２の定義の誤り」の箇所があり、さらに、この定義の誤りがある「ｄａｔａ１」と「ｄａｔａ２」を参照する箇所が４つ（「ｄａｔａ１の参照」、「ｄａｔａ２の参照」、「ｄａｔａ１の参照」、「ｄａｔａ１の参照」）あるものとする。
【００６９】
この場合、エラー番号０００３を「ｘｘｘ（データ名）の定義の誤り」、エラー番号０００４を「ｘｘｘ（データ名）の未定義」とのエラーメッセージであるとすると、動作モードＣ適用前は、コンパイル時に、「ｄａｔａ１の定義の誤り（エラー番号：０００３）」、「ｄａｔａ２の定義の誤り（エラー番号：０００３）」、「ｄａｔａ１は未定義（エラー番号：０００４）」、「ｄａｔａ２は未定義（エラー番号：０００４）」、「ｄａｔａ１は未定義（エラー番号：０００４）」、「ｄａｔａ１は未定義（エラー番号：０００４）」という６つのエラーメッセージが出力される。
【００７０】
しかし、同じソースプログラムを、動作モードＣを指定してコンパイルする場合、まず、その指定に基づき、動作モード判定部２において、図３に示すエラー情報テーブル６におけるエラー番号「０００３」、「０００４」のＣ欄のように、定義・参照に関係のあるエラー番号のステータスＣ欄をＯＮに設定し、さらに、定義に関係のあるエラー番号０００３のステータスＤ欄をＯＮ、参照に関係のあるエラー番号０００４のステータスＤ欄をＯＦＦに設定する。定義・参照に関係しないエラー番号のステータスＣ欄はＯＦＦに設定する。
【００７１】
この設定状態で、構文規則解析部３において、図１０に示すソースプログラム例の様な６つのエラーを検出した場合、図３のエラー情報テーブル６中のエラー番号０００３のＣ欄およびＤ欄がＯＮ設定であるので、エラー判定部４により、図４に示すように、定義用テーブル７ａに、エラー番号「０００３」とデータ名「ｄａｔａ１」、および、エラー番号「０００３」とデータ名「ｄａｔａ２」を登録し、エラー番号「０００３」のエラーメッセージ「ｄａｔａ１の定義の誤り（エラー番号：０００３）」と「ｄａｔａ２の定義の誤り（エラー番号：０００３）」を出力する。
【００７２】
また、図３のエラー情報テーブル６中のエラー番号０００４のＣ欄がＯＮ設定で且つＤ欄がＯＦＦ設定であるので、エラー判定部４により、図４に示すように、参照用テーブル７ｂに、エラー番号「０００４」とデータ名「ｄａｔａ１」、および、エラー番号「０００４」とデータ名「ｄａｔａ２」、エラー番号「０００４」とデータ名「ｄａｔａ１」、エラー番号「０００４」とデータ名「ｄａｔａ１」を登録する。
【００７３】
図４において、参照用テーブル７ｂに登録されているデータ名「ｄａｔａ１」、「ｄａｔａ２」は、定義用テーブル７ａにも登録されているので、エラー判定部４およびエラー出力部５の処理により、エラー番号「０００４」のエラーメッセージ出力を抑止する。
【００７４】
このように、図１０に示す例のような、従来のコンパイルでは６つのエラーメッセージが出力されるソースプログラムを、動作モードＣを指定してコンパイルすると、図１０の動作モードＣ適用後に示すように、原因となっている定義のエラーメッセージのみを出力するように制御できる。
【００７５】
このようにして、図１に示す構文解析部１の構成とすることにより、外部から与えられる動作モードに応じて、ソースプログラム中のデータ定義の誤りに起因して該当データの参照毎に出力されるデータ参照のエラーメッセージの出力を抑止するコンパイラを作成することができる。
【００７６】
以上に説明した例では、既存のコンパイラ自体に、本発明に係わるエラーメッセージ出力制御システムの各機能を設けた構成としているが、図１３に示すように、エラーメッセージ出力制御システムを既存のコンパイラの外部に設け、既存のコンパイラから出力されるエラーメッセージを、外部の表示装置や印刷装置等に出力することを抑止する構成としても良い。
【００７７】
すなわち、図１３における構成では、ソースプログラム１２０１を目的プログラム１２０３にコンパイルする既存のコンパイラ１２０２とは別に、エラーメッセージ出力制御システム１２０４を設け、このエラーメッセージ出力制御システム１２０４に、キーボード等を介して入力される動作モード（Ａ，Ｂ，Ｃ，…）に対応し、分類テーブルを参照して、出力許可もしくは出力不許可となるエラーメッセージを判定し、各エラーメッセージのそれぞれに付与されたエラー番号に対して出力の許可もしくは不許可を表す情報（１，０）を設定してエラー情報テーブルを生成する機能と、このエラー情報テーブルを参照して、コンパイラ１２０２で検出されたエラーのメッセージを、表示装置やプリンタ装置からなる出力装置１２０５に出力するか否かを判定する機能と、この判定結果に基づき、コンパイラ１２０２で検出されたエラーのメッセージの出力抑止制御を行う機能とを設けた構成とする。
【００７８】
尚、分類テーブルは、コンパイラ１２０２からエラーメッセージ出力制御システム１２０４にコピーしても良いし、エラーメッセージ出力制御システム１２０４からコンパイラ１２０２に適宜にアクセスして参照することでも良い。また、動作モードＣに対応して、関連エラーテーブル（定義用テーブル、参照用テーブル）を生成する機能、および、この関連エラーテーブルに基づきコンパイラ１２０２が検出したエラーメッセージの出力抑止の要否を判定する機能と出力抑止制御を行う機能を設ける構成としても良い。
【００７９】
以上、図１〜図１０を用いて説明したように、本例では、以下の各構成要素を具備することで、コンパイル処理で検出したエラーのメッセージの内、コンパイル操作時の指示（動作モードＡ，Ｂ，Ｃ，…）に動的に応じて、特定の種類のエラーメッセージの出力を抑止することを特徴とする。（イ）全てのエラーメッセージのそれぞれを、例えば定義に関するエラーメッセージあるいは参照に関するエラーメッセージ等、種類別に分類し、各エラーメッセージのエラー番号と分類番号とを対応付けた分類テーブル２ａ、（ロ）コンパイル操作する操作者等の外部からの指示情報に対応する分類番号をキーに分類テーブル２ａを参照して、指摘された分類番号が対応付けられた各エラー番号を特定し、特定した各エラー番号を明示したエラー情報テーブル６を生成する動作モード判定部２、（ハ）構文規則解析部３でエラー検出したエラーメッセージのエラー番号をキーにエラー情報テーブル６を参照して、当該エラー番号がエラー情報テーブル６に明示されているか否かにより、エラー検出したエラーメッセージの出力・非出力を決定するエラー判定部４。
【００８０】
例えば動作モードＣの指定があれば、動作モード判定部２は、ソースプログラム中のデータ定義の誤りに起因して当該データの参照毎に出力されるデータ参照のエラーメッセージの出力を抑止する指定であると判定し、分類テーブル２ａを参照して「定義」、「参照」に関係のあるエラー番号を特定し、エラー情報テーブル６において、各エラー番号毎に、定義もしくは参照の少なくともいずれか一方に関するエラーメッセージであることを明示するフラグをステータスＣ欄に設定すると共に、定義に関するエラーメッセージと参照に関するエラーメッセージのいずれであるかを明示するフラグをステータスＤ欄に設定する。
【００８１】
さらに、構文規則解析部３において、エラー検出したエラーメッセージのエラー番号をキーに当該エラー情報テーブル６を検索して、定義に関するエラーメッセージであれば当該エラー番号にエラー対象のデータ名を対応付けて明示した定義用テーブル７ａを生成し、参照に関するエラーメッセージであれば当該エラー番号にエラー対象のデータ名を対応付けて明示した参照用テーブル７ｂを生成する。
【００８２】
そして、エラー判定部４は、この参照用テーブル７ｂにおいて明示されていても定義用テーブル７ａにおいても明示されているデータ名に対応するエラー番号のエラーメッセージの出力は抑止するものと判定する。この判定結果に基づき、エラー出力部５は、当該エラー番号のエラーメッセージの出力は抑止する。
【００８３】
このように、本例では、ソースプログラム中のデータ定義の誤りに起因して当該データの参照毎に出力されるデータ参照のエラーメッセージ等、特定のエラーメッセージに関して、その出力を抑止することが可能であり、ソースプログラムの修正作業における原因調査作業を軽減できる。
【００８４】
尚、本発明は、図１〜図１０を用いて説明した例に限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能である。例えば、本例では、分類テーブル２ａを予めコンパイラ内に設けた構成としているが、ソースプログラムのコンパイル時に、コンパイラ操作者が指定する情報に基づき、各エラーメッセージの内容を解析して動的に生成することでも良い。
【００８５】
また、本例では、複数のテーブル情報の組み合わせで、出力抑止するエラーメッセージを特定する技術例として、ソースプログラム中のデータ定義の誤りに起因して当該データの参照毎に出力されるデータ参照のエラーメッセージの出力を抑止するために、エラー情報テーブル６においてステータスＣ欄とＤ欄を用いた例を示したが、このような「定義」および「参照」の例に限定されるものではなく、他の組み合わせにも適用可能である。
【００８６】
また、エラー情報テーブル６に関しても、１つのテーブル上で各エラー番号に対応付けて複数のステータス欄（Ａ，Ｂ，Ｃ，Ｄ，…）のＯＮ，ＯＦＦ設定を行う構成としているが、各ステータス欄（Ａ，Ｂ，Ｃ，Ｄ，…）毎に、別々のエラー情報テーブルを設ける構成としても良い。
【００８７】
また、エラーメッセージので抑止のための外部からの指定に関しても、本例のようにソースプログラムの作成者かその検証のために当該コンパイラを用いる際にオプションとして動作モード（Ａ，Ｂ，Ｃ，…）を指定することでも、各操作者別あるいはスキル別に予め用意された情報に応じて、エラー情報テーブル６の設定を変える構成としても良い。
【００８８】
特に、スキル別とする場合、本例で例示したように、分類テーブル２ａからエラー情報テーブル６を動的に生成するのではなく、予めスキル別のエラー情報テーブル６を作成しておき、コンパイラ自体に設けておくことでも良い。
【００８９】
また、本例では、動作モードＢにおいてエラー番号そのものを２つ、引数として指定しているが、その引数としてはのエラー番号の個数は特に制限されるものではなく、また、引数としてもエラー番号に制限されるものではない。
【００９０】
また、本例のコンピュータ構成例としては、キーボードや光ディスクの駆動装置の無いコンピュータ構成としても良い。また、本例では、光ディスクを記録媒体として用いているが、ＦＤ（Flexible Disk）等を記録媒体として用いることでも良い。また、プログラムのインストールに関しても、通信装置を介してネットワーク経由でプログラムをダウンロードしてインストールすることでも良い。
【００９１】
【発明の効果】
本発明によれば、特定の種類のエラーメッセージのみの出力、あるいは、プログラム作成者が指定した特定のエラー番号のエラーメッセージの出力抑止、さらに、ソースプログラム中のデータ定義の誤りに起因して該当データの参照毎に出力されるデータ参照のエラーメッセージの出力抑止等が可能であり、例えば、ソースプログラムの修正が不要である事が既知なエラーメッセージの出力を効率的に回避することができ、ソースプログラムのエラー原因の調査作業に要する作業者の負荷を軽減し、ソースプログラムの修正作業を効率化できる。
【図面の簡単な説明】
【図１】本発明に係わるエラーメッセージ出力制御システムの第１の構成例を示すブロック図である。
【図２】図１のエラーメッセージ出力制御システムにおける分類テーブルの構成例を示す説明図である。
【図３】図１のエラーメッセージ出力制御システムにおけるエラー情報テーブルの構成例を示す説明図である。
【図４】図１のエラーメッセージ出力制御システムにおける関連エラーテーブルの構成例を示す説明図である。
【図５】図１におけるエラーメッセージ出力制御システムの第１の処理動作例を示すＰＡＤ図である。
【図６】図１におけるエラーメッセージ出力制御システムの第２の処理動作例を示すＰＡＤ図である。
【図７】図１におけるエラーメッセージ出力制御システムの第３の処理動作例を示すＰＡＤ図である。
【図８】図５における第１の処理動作の具体例を示す説明図である。
【図９】図６における第２の処理動作の具体例を示す説明図である。
【図１０】図７における第３の処理動作の具体例を示す説明図である。
【図１１】図１におけるエラーメッセージ出力制御システムを動作させるコンピュータのハードウェア構成例を示すブロック図である。
【図１２】図１におけるエラーメッセージ出力制御システムを具備したコンパイラの構成例を示すブロック図である。
【図１３】本発明に係わるエラーメッセージ出力制御システムの第２の構成例を示すブロック図である。
【符号の説明】
１：構文解析部、２：動作モード判定部、２ａ：分類テーブル、３：構文規則解析部、４：エラー判定部、５：エラー出力部、６：エラー情報テーブル、７：関連エラーテーブル、７ａ：定義用テーブル、７ｂ：参照用テーブル、２１：表示装置、２２：入力装置、２３：外部記憶装置、２４：情報処理装置、２４ａ：ＣＰＵ、２４ｂ：主メモリ、２４ｃ：入出力インタフェース、２５：光ディスク、２６：駆動装置、２７：通信装置、１１０１：ソースプログラム、１１０２：読込部、１１０３：字句解析部、１１０４：構文解析部、１１０５：中間語生成部、１１０６：最適化部、１１０７：目的コード生成部、１１０８：目的プログラム、１１０９：テーブル、１２０１：ソースプログラム、１２０２：コンパイラ、１２０３：目的プログラム、１２０４：メッセージ出力制御システム、１２０５：出力装置。
【図１】
2004206501.tif 000003
【図２】
2004206501.tif 000004
【図３】
2004206501.tif 000005
【図４】
2004206501.tif 000006
【図５】
2004206501.tif 000007
【図６】
2004206501.tif 000008
【図７】
2004206501.tif 000009
【図８】
2004206501.tif 000010
【図９】
2004206501.tif 000011
【図１０】
2004206501.tif 000012
【図１１】
2004206501.tif 000013
【図１２】
2004206501.tif 000014
【図１３】
2004206501.tif 000015