JP2820937B2 - 高級言語におけるエラー発生行番号探索装置 - Google Patents
高級言語におけるエラー発生行番号探索装置Info
- Publication number
- JP2820937B2 JP2820937B2 JP62318994A JP31899487A JP2820937B2 JP 2820937 B2 JP2820937 B2 JP 2820937B2 JP 62318994 A JP62318994 A JP 62318994A JP 31899487 A JP31899487 A JP 31899487A JP 2820937 B2 JP2820937 B2 JP 2820937B2
- Authority
- JP
- Japan
- Prior art keywords
- program
- address
- error
- line number
- control table
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Landscapes
- Debugging And Monitoring (AREA)
- Devices For Executing Special Programs (AREA)
Description
【発明の詳細な説明】
〔概 要〕
目的プログラム実行過程でエラーが発生したとき対応
する原始プログラム上のエラー発生行番号を求めるエラ
ー発生行番号探索方式に関し、 エラーの発生した目的プログラムのアドレスが通知さ
れない場合に対応する原始プログラム上のエラー発生行
番号を求めることを目的とし、 目的プログラム実行過程でエラー発生時に原始プログ
ラム上のエラー発生番号を求める高級言語におけるエラ
ー発生行番号探索方式であって、目的プログラムを実行
する各プログラムをリンケージ規約に従ってリンケージ
し、原始プログラムの各行番号の目的プログラムのアド
レスの対応を示すエラー制御テーブルを生成してそのア
ドレスを別のテーブルに設定し、エラー処理を行うプロ
グラムの復帰アドレスに基づいてエラーの発生した目的
プログラムアドレスを求め、エラー制御テーブルより原
始プログラム上のエラー発生番号を求めるように構成す
る。 〔産業上の利用分野〕 本発明は、高級言語で記述された原始プログラムを翻
訳して生成された目的プログラムの実行過程でエラーが
発生した場合に、対応する原始プログラム上のエラー発
生行番号を求める高級言語におけるエラー発生行番号探
索方式に関する。 〔従来の技術〕 COBOL等の高級言語で記述された原始プログラムは、
目的プログラムに翻訳されて実行される。この原始プロ
グラムを翻訳して生成された目的プログラムの実行過程
でエラーが発生した場合は、その原始プログラム上のエ
ラーの発生行番号を求めることがデバック等を行うため
に必要である。 エラーによるプログラム割込み発生時のプログラムカ
ウンタの値すなわち目的プログラムを実行しているプロ
グラムのアドレスがオペレーティング・システム(OS)
より通知された場合は、そのプログラムのアドレスに基
づいて目的プログラム上のエラーの発生したプログラム
アドレスを求め、更にその原始プログラム上に対応する
エラー発生行番号を求めることができる。 しかしながら、高級語の論理エラー等はOSにとっての
エラーではない。したがってOSは正常動作であり、エラ
ー通知は行わない。この場合は、他にエラーの発生した
目的プログラム上の位置を知る手段がないため、それに
対応する原始プログラム上のエラー発生行番号を求め有
効な方法がなかった。 〔発明が解決しようとする問題点〕 高級言語で記述された原始プログラムを翻訳して生成
された目的プログラムを実行するシステムにおいて、そ
の目的プログラムの実行過程でエラーが発生したとき、
システムのOSよりエラーによるプログラム割込み発生時
のプログラムのアドレスが通知されない場合、従来は対
応する原始プログラム上の行番号を求めることができな
いという問題があった。 本発明は、目的プログラムの実行過程でエラーを発生
したプログラムのアドレスがOSより通知されない場合
に、エラーの発生した目的プログラム上のアドレスに対
応する原始プログラム上のエラー発生行番号を容易かつ
確実に求めることのできる高級言語におけるエラー発生
行番号探索方式を提供することを目的とする。 〔問題点を解決するための手段〕 高級言語で記述された原始プログラムを翻訳して生成
された目的プログラムの実行過程でエラーが発生した場
合に、対応する原始プログラム上のエラー発生行番号を
求める高級言語におけるエラー発生行番号探索装置にお
いて、 原始プログラムの翻訳時、子プログラムから親プログ
ラムへの復帰アドレスを設定すると共に、親プログラム
の原始プログラム上の各行番号と、目的プログラム上の
プログラムアドレスとの対応を示すエラー制御テーブル
を備える目的プログラムを生成する手段と、 実行中の目的プログラムの先頭アドレス、最終アドレ
ス、及びエラー制御テーブルのアドレスを管理する実行
単位制御テーブルを生成する手段と、 子プログラムの命令を実行中にエラーが発生したと
き、前記子プログラムから親プログラムへの復帰アドレ
スが前記実行単位制御テーブルの先頭アドレスと最終ア
ドレスとの範囲に含まれるか否かの判定を、親プログラ
ムが目的プログラムとなるまで順次上位のプログラムに
対して繰返し、判定がYESとなったとき復帰アドレスに
対応する原始プログラム上のエラー発生行番号を前記エ
ラー制御テーブルから検索する手段と、 を有することを特徴とする。 〔作用〕 本発明の作用を第1図を参照して説明する。第1図は
本発明を処理フローチャートで示したものである。 処理S1では、目的プログラムを実行する各プログラム
を、子プログラムを呼び出した親プログラムの作業域ア
ドレスが子プログラム側から分るようにリンクし、親プ
ログラムはその子プログラムの作業域内に子からの復帰
アドレスを設定するリンケージ規約に従ってリンケージ
処理が行われる。 処理S2では、原始プログラムの翻訳単位毎に、原始プ
ログラム上の各行番号とその目的プログラム上の各プロ
グラムアドレスとの対応を示すエラー制御テーブルを目
的プログラム内に生成する処理が行われる。 処理S3では、実行のために呼び出された目的プログラ
ムが、自身の初期処理によりそのエラー制御テーブルの
アドレスを実行単位制御テーブルに設定する処理が行わ
れる。 処理S4では、目的プログラムの命令を実行中にプログ
ラムにエラーが発生したとき、そのエラー処理を行う子
プログラムの作業域にある復帰アドレスに基づいて目的
プログラムのエラーの発生したプログラムアドレスを求
める処理が行われる。 処理S5では、実行単位作業域にあるエラー制御テーブ
ルアドレスより実行中の目的プログラムのエラー制御テ
ーブルを求め、該エラー制御テーブルと前記プログラム
アドレスより、目的プログラム上のエラーを発生したプ
ログラムアドレスに対応する原始プログラムのエラー発
生行番号を求める処理が行われる。 更に本発明の作用を、第2図に示す処理の流れを参照
して説明する。 第2図において、SPGは原始プログラムで、行番号1,2
等にMOVE,ADD等の命令が記述されている。 10はシステムメモリで、目的プログラムや各種サブル
ーチン等が格納され、それらの作業域及び各種の制御テ
ーブルが設けられる。 システムメモリ10において、11は目的プログラム域
で、原始プログラムSPGを各翻訳単位毎に翻訳して生成
された各目的プログラムが格納される。111はこの目的
プログラムOBPGのエラー制御テーブルで、行番号欄には
原始プログラムSPGの行番号が格納され、プログラムア
ドレス欄には各行番号の命令に対応する目的プログラム
のプログラムアドレス(すなわち、次に説明する復帰ア
ドレス)がテキスト相対アドレス又は絶対アドレスで設
定される。 なお、目的プログラム域11及びそのエラー制御テーブ
ル111は、各翻訳単位毎に生成された各目的プログラム
毎に設けられるが、図にはその1つの目的プログラムOB
PGのものが示されている。 12は目的プログラムOBPGの1つの命令を実行するサブ
ルーチンPSBRを格納するサブルーチン域で、サブルーチ
ンPSBRは、目的プログラムOBPGを親プログラムとすると
その子プログラムの関係にある。121はその作業域で、
リンクアドレス域121L及び復帰アドレス域121Rが設けら
れている。 13はエラー出力サブルーチンESBRを格納するエラー出
力サブルーチン域で、エラー出力サブルーチンESBRは、
サブルーチンPSBRを親とすると子プログラムの関係にあ
り、エラーの発生した目的プログラムOBPG上のアドレス
に対応する原始プログラムSPG上のエラー発生行番号を
探索し、エラーメッセージとして出力する処理を行う。
131はその作業域で、リンクアドレス域131及び復帰アド
レス域131Rが設けられている。 なお、サブルーチンPSBRとエラー出力サブルーチンES
BRの間には更にサブルーチンが入り得るが、エラー発生
行番号探索動作は各サブルーチンに共通であるので、1
個のサブルーチンの場合が示されている。 14は実行単位制御サブルーチン域で、実行単位制御サ
ブルーチンECSBRが格納される。実行単位制御サブルー
チンECSBRは、目的プログラムの1つの実行単位を実行
する互いに親子の関係にある一連のサブルーチンプログ
ラム系を管理、制御するプログラムである。141は、実
行単位制御サブルーチンECSBRの作業域で、現在実行中
であるすなわち有効な目的プログラムのエラー制御テー
ブルのアドレスが設定される。 15は実行単位制御テーブルで、実行単位制御サブルー
チンECSBRにより獲得、管理され、現在実行中の有効な
目的プログラムOBPGの先頭ADPs、最終アドレスADPf及び
そのエラー制御テーブルアドレスが格納される。 以上の構成において、実行単位制御サブルーチンECSB
Rが起動すると、実行単位制御サブルーチンECSBRは、原
始プログラムSPGを翻訳して生成された各目的プログラ
ム中の1つ(目的プログラムOBPGとする)を、メモリシ
ステムの目的プログラム域11に読み込み、それを実行さ
せる。 以下の各処理も実行単位制御サブルーチンECSBRによ
って制御されて実行されるが、必要のない限り特に言及
しない。 次いで、リンケージ規約に従って、目的プログラムOB
PGが使用する各プログラムをリンクし、子プログラムを
呼び出した親プログラムが使用している作業域のアドレ
スが子プログラム側から分るようにされる(処理S1)。 この処理は、親子の関係にあるプログラムの子プログ
ラムのリンクアドレス域に親プログラムの作業域のアド
レスを格納することにより行われる。すなわち、エラー
出力サブルーチンESBRのリンクアドレス域131Lに、その
親プログラムであるサブルーチンPSBRの作業域121のア
ドレスが格納される。 同じくリンケージ規約に従って、親プログラムの作業
域内の固定的な位置(すなわち復帰アドレス域)に子プ
ログラムからの復帰アドレスが設定される(処理S1)。 この処理は、親プログラム内で子プログラムに制御を
移した命令の次の命令のアドレス(すなわち復帰アドレ
ス)を子プログラムの復帰アドレス域に設定することに
より行われる。 いま、目的プログラムOBPGがアドレスADPi(復帰アド
レスはADPi+1)でその子プログラムであるサブルーチン
PSBRに制御を移したとすると、その復帰アドレスADPi+1
が、サブルーチンPSBRの復帰アドレス域121Lに設定され
る。また、サブルーチンPSBRに実行途中でエラーを発生
し、アドレスADSjでその子プログラムであるエラー出力
サブルーチンESBRに制御を移したとすると、その復帰ア
ドレスADSj+1がエラー出力サブルーチンESBRの復帰アド
レス域131Rに設定される。 一方、原始プログラムSPGの翻訳単位毎に、原始プロ
グラムの各桁番号とその目的プログラムの各アドレスと
の対応を示すエラー制御テーブルが、目的プログラム内
に生成される(処理S2)。第2図において、111は目的
プログラムOBPGのエラー制御テーブルである。 目的プログラムOBPGが実行のために呼び出されると、
目的プログラムOBPG自身の初期処理により、そのエラー
制御テーブル111のアドレスを実行単位制御テーブル15
に設定する(処理S3)。これにより、複数の目的プログ
ラムが交互に実行される実行単位中で、現在有効なエラ
ー制御テーブルのアドレスが分かる。 目的プログラムOBPGの実行途中のアドレスADPiにおい
てサブルーチンPSBRに制御が移り、サブルーチンPSBRの
実行途中でエラーが発生し、アドレスADSj(復帰アドレ
スADSj+1)においてエラー出力サブルーチンESBRに制御
が移ったとする。 エラー出力サブルーチンESBRは、その復帰アドレス域
131Rにある復帰アドレスADSj+1に基づいて、目的プログ
ラムOBPGのエラー発生時のプログラムアドレス(すなわ
ち復帰ADPi+1)を求める(処理S4、なお、この処理S4の
具体的な内容は〔実施例〕の項で説明する)。 目的プログラムOBPGのエラー発生時のプログラムアド
レスが求まると、実行単位制御テーブル15に設定されて
ある目的プログラムアドレスより目的プログラムOBPGの
エラー制御テーブル111を求める。このエラー制御テー
ブル111にある各プログラムアドレスをサーチし、前述
の処理S4で求められた復帰アドレスADPi+1に合致するプ
ログラムアドレスを求めると、対応する行番号よりエラ
ーの発生した目的プログラム上のアドレスに対応する原
始プログラムSPG上のエラー発生行番号を求めることが
できる(処理S5)。 以上のようにして、目的プログラムの実行過程でエラ
ーを発生したプログラムのアドレスがOSより通知されな
い場合でも、目的プログラム上のエラーを発生したプロ
グラムアドレスに対応する原始プログラム上の行番号を
容易かつ確実に求めることができる。 〔実施例〕 本発明の実施例を、第2図及び第3図を参照して説明
する。第3図は、同実施例のエラー発生行番号探索処理
フローチャートである。 第2図で行われる実施例の各処理中、リンケージ処理
(処理S1)、エラー制御テーブルを目的プログラム内に
生成する処理(処理S2)、実行のために呼び出された目
的プログラムOBPGが自身の初期処理によりそのエラー制
御テーブル111のアドレスを実行単位制御テーブル14に
設定する処理(処理S3)までの各処理は、前述の〔作
用〕の項すなわち第2図で説明した処理S1〜処理S3と同
じである。なお、目的プログラムOBPGの先頭アドレスAD
Ps及び最終アドレスADPfは、目的プログラムOBPGのロー
ディング時にOSにより実行単位制御テーブル15に設定さ
れる。また、各リングアドレスは、呼ぶプログラムが呼
ばれるプログラムを呼ぶ直前と呼ばれるプログラムに制
御が渡った直後にそれぞれのプログラムが設定する。 以下、サブルーチンPSBRが実行途中でエラーを発生
し、アドレスADSj(復帰アドレスADSj+1)においてエラ
ー出力サブルーチンESBRに制御が移り、そこで行われる
処理S4及びS5の処理、すなわちエラー発生行番号探索処
理を、第3図を参照し、その処理ステップに従って説明
する。なお、第3図において、処理S41〜S44は処理S4の
内部処理であり、処理S51及びS52は処理S5の内部処理で
ある。 処理S41 エラー出力サブルーチンESBRは、実行単位制御サブル
ーチンECSBRに実行単位制御テーブルアドレスの通知を
依頼する。実行単位制御サブルーチンECSBRは、その作
業域141にある実行単位制御テーブル15のアドレスを通
知する。 エラー出力サブルーチンESBRは、実行単位制御テーブ
ル15をサーチして、現在実行中で有効な目的プログラム
OBPGの先頭アドレスADPsと最終アドレスADPfを求める。 処理S42,S43,S44 エラー出力サブルーチンESBRは、その作業域131の復
帰アドレス域131Rより復帰アドレスADSj+1を取り出し
(処理S42)、このADSj+1が処理S41で求めた目的プログ
ラムOBPGの先頭アドレスADPsの最終アドレスADPfの範囲
内にあるか、すなわちADPs≦ADSj+1≦ADPfの条件を満足
するか判別する(処理S43)。満足した場合は、その復
帰アドレスがエラーの発生した目的プログラムOBPGのプ
ログラムアドレスとして求められる。 復帰アドレスADSj+1については、前記条件は満足され
ない。この場合は、エラー出力サブルーチンESBRのリン
クアドレス域131Lにあるリンクアドレスより、エラー出
力サブルーチンESBRの親プログラムであるサブルーチン
PSBRの作業域121を求める(処理S44)。 次に、サブルーチンPSBRの作業域121を現作業域とし
て、前述の処理S42及びS43の処理を行う。すなわち、そ
の復帰アドレス域121Rより復帰アドレスADPi+1を取り出
し(処理S42)、ADSs≦ADPi+1≦ADPfの条件を満足する
かを判別する(処理S43)。 ADPi+1の場合は、当然前記条件は満足するので、この
ADPi+1がエラーの発生した目的プログラムOBPGのプログ
ラムアドレスとして求められる。 なお、サブルーチンが複数個存在し、それらが親と子
プログラムの関係で順番にリンクされているときは、エ
ラー出力サブルーチンESBRを出発点として親となるサブ
ルーチンの作業域を順番にたどって行き、前述の条件が
満足される復帰アドレスが得られるまで、前述の処理S
42〜S44が繰り返される。 処理S51,S52 エラー出力サブルーチンESBRは、実行単位制御テーブ
ル15にあるエラー制御テーブルアドレスより、目的プロ
グラムOBPGのエラー制御テーブル111を求め、処理S43で
求めた復帰アドレスADPi+1に合致するプログラムアドレ
スを求める(処理S51)。 復帰アドレスADPi+1に合致するプログラムアドレスが
求まると、それに対応する行番号より、エラーの発生し
た目的プログラム上のアドレスに対応する原始プログラ
ムSPG上のエラー発生行番号が求められる(処理S52)。 エラー出力サブルーチンESBRは、求められた原始プロ
グラムSPGのエラー発生行番号を画面に表示又はプリン
トアウトする。 以上1つの目的プログラムOBPGの実行過程でエラーが
発生した場合の対応する原始プログラムのエラー発生行
番号探索処理について説明したが、この目的プログラム
OBPGと並行して交互に実行されている他の目的プログラ
ムの実行過程にエラーが発生した場合も、同様にして対
応する原始プログラムのエラー発生行番号を探索するこ
とができる。 〔発明の効果〕 以上説明したように、本発明によれば、目的プログラ
ムの実行過程でエラーを発生したプログラムアドレスが
OSより通知されない場合でも、目的プログラム上のエラ
ーを発生したプログラムアドレスに対応する原始プログ
ラム上の行番号を容易かつ確実に求めることができる。
する原始プログラム上のエラー発生行番号を求めるエラ
ー発生行番号探索方式に関し、 エラーの発生した目的プログラムのアドレスが通知さ
れない場合に対応する原始プログラム上のエラー発生行
番号を求めることを目的とし、 目的プログラム実行過程でエラー発生時に原始プログ
ラム上のエラー発生番号を求める高級言語におけるエラ
ー発生行番号探索方式であって、目的プログラムを実行
する各プログラムをリンケージ規約に従ってリンケージ
し、原始プログラムの各行番号の目的プログラムのアド
レスの対応を示すエラー制御テーブルを生成してそのア
ドレスを別のテーブルに設定し、エラー処理を行うプロ
グラムの復帰アドレスに基づいてエラーの発生した目的
プログラムアドレスを求め、エラー制御テーブルより原
始プログラム上のエラー発生番号を求めるように構成す
る。 〔産業上の利用分野〕 本発明は、高級言語で記述された原始プログラムを翻
訳して生成された目的プログラムの実行過程でエラーが
発生した場合に、対応する原始プログラム上のエラー発
生行番号を求める高級言語におけるエラー発生行番号探
索方式に関する。 〔従来の技術〕 COBOL等の高級言語で記述された原始プログラムは、
目的プログラムに翻訳されて実行される。この原始プロ
グラムを翻訳して生成された目的プログラムの実行過程
でエラーが発生した場合は、その原始プログラム上のエ
ラーの発生行番号を求めることがデバック等を行うため
に必要である。 エラーによるプログラム割込み発生時のプログラムカ
ウンタの値すなわち目的プログラムを実行しているプロ
グラムのアドレスがオペレーティング・システム(OS)
より通知された場合は、そのプログラムのアドレスに基
づいて目的プログラム上のエラーの発生したプログラム
アドレスを求め、更にその原始プログラム上に対応する
エラー発生行番号を求めることができる。 しかしながら、高級語の論理エラー等はOSにとっての
エラーではない。したがってOSは正常動作であり、エラ
ー通知は行わない。この場合は、他にエラーの発生した
目的プログラム上の位置を知る手段がないため、それに
対応する原始プログラム上のエラー発生行番号を求め有
効な方法がなかった。 〔発明が解決しようとする問題点〕 高級言語で記述された原始プログラムを翻訳して生成
された目的プログラムを実行するシステムにおいて、そ
の目的プログラムの実行過程でエラーが発生したとき、
システムのOSよりエラーによるプログラム割込み発生時
のプログラムのアドレスが通知されない場合、従来は対
応する原始プログラム上の行番号を求めることができな
いという問題があった。 本発明は、目的プログラムの実行過程でエラーを発生
したプログラムのアドレスがOSより通知されない場合
に、エラーの発生した目的プログラム上のアドレスに対
応する原始プログラム上のエラー発生行番号を容易かつ
確実に求めることのできる高級言語におけるエラー発生
行番号探索方式を提供することを目的とする。 〔問題点を解決するための手段〕 高級言語で記述された原始プログラムを翻訳して生成
された目的プログラムの実行過程でエラーが発生した場
合に、対応する原始プログラム上のエラー発生行番号を
求める高級言語におけるエラー発生行番号探索装置にお
いて、 原始プログラムの翻訳時、子プログラムから親プログ
ラムへの復帰アドレスを設定すると共に、親プログラム
の原始プログラム上の各行番号と、目的プログラム上の
プログラムアドレスとの対応を示すエラー制御テーブル
を備える目的プログラムを生成する手段と、 実行中の目的プログラムの先頭アドレス、最終アドレ
ス、及びエラー制御テーブルのアドレスを管理する実行
単位制御テーブルを生成する手段と、 子プログラムの命令を実行中にエラーが発生したと
き、前記子プログラムから親プログラムへの復帰アドレ
スが前記実行単位制御テーブルの先頭アドレスと最終ア
ドレスとの範囲に含まれるか否かの判定を、親プログラ
ムが目的プログラムとなるまで順次上位のプログラムに
対して繰返し、判定がYESとなったとき復帰アドレスに
対応する原始プログラム上のエラー発生行番号を前記エ
ラー制御テーブルから検索する手段と、 を有することを特徴とする。 〔作用〕 本発明の作用を第1図を参照して説明する。第1図は
本発明を処理フローチャートで示したものである。 処理S1では、目的プログラムを実行する各プログラム
を、子プログラムを呼び出した親プログラムの作業域ア
ドレスが子プログラム側から分るようにリンクし、親プ
ログラムはその子プログラムの作業域内に子からの復帰
アドレスを設定するリンケージ規約に従ってリンケージ
処理が行われる。 処理S2では、原始プログラムの翻訳単位毎に、原始プ
ログラム上の各行番号とその目的プログラム上の各プロ
グラムアドレスとの対応を示すエラー制御テーブルを目
的プログラム内に生成する処理が行われる。 処理S3では、実行のために呼び出された目的プログラ
ムが、自身の初期処理によりそのエラー制御テーブルの
アドレスを実行単位制御テーブルに設定する処理が行わ
れる。 処理S4では、目的プログラムの命令を実行中にプログ
ラムにエラーが発生したとき、そのエラー処理を行う子
プログラムの作業域にある復帰アドレスに基づいて目的
プログラムのエラーの発生したプログラムアドレスを求
める処理が行われる。 処理S5では、実行単位作業域にあるエラー制御テーブ
ルアドレスより実行中の目的プログラムのエラー制御テ
ーブルを求め、該エラー制御テーブルと前記プログラム
アドレスより、目的プログラム上のエラーを発生したプ
ログラムアドレスに対応する原始プログラムのエラー発
生行番号を求める処理が行われる。 更に本発明の作用を、第2図に示す処理の流れを参照
して説明する。 第2図において、SPGは原始プログラムで、行番号1,2
等にMOVE,ADD等の命令が記述されている。 10はシステムメモリで、目的プログラムや各種サブル
ーチン等が格納され、それらの作業域及び各種の制御テ
ーブルが設けられる。 システムメモリ10において、11は目的プログラム域
で、原始プログラムSPGを各翻訳単位毎に翻訳して生成
された各目的プログラムが格納される。111はこの目的
プログラムOBPGのエラー制御テーブルで、行番号欄には
原始プログラムSPGの行番号が格納され、プログラムア
ドレス欄には各行番号の命令に対応する目的プログラム
のプログラムアドレス(すなわち、次に説明する復帰ア
ドレス)がテキスト相対アドレス又は絶対アドレスで設
定される。 なお、目的プログラム域11及びそのエラー制御テーブ
ル111は、各翻訳単位毎に生成された各目的プログラム
毎に設けられるが、図にはその1つの目的プログラムOB
PGのものが示されている。 12は目的プログラムOBPGの1つの命令を実行するサブ
ルーチンPSBRを格納するサブルーチン域で、サブルーチ
ンPSBRは、目的プログラムOBPGを親プログラムとすると
その子プログラムの関係にある。121はその作業域で、
リンクアドレス域121L及び復帰アドレス域121Rが設けら
れている。 13はエラー出力サブルーチンESBRを格納するエラー出
力サブルーチン域で、エラー出力サブルーチンESBRは、
サブルーチンPSBRを親とすると子プログラムの関係にあ
り、エラーの発生した目的プログラムOBPG上のアドレス
に対応する原始プログラムSPG上のエラー発生行番号を
探索し、エラーメッセージとして出力する処理を行う。
131はその作業域で、リンクアドレス域131及び復帰アド
レス域131Rが設けられている。 なお、サブルーチンPSBRとエラー出力サブルーチンES
BRの間には更にサブルーチンが入り得るが、エラー発生
行番号探索動作は各サブルーチンに共通であるので、1
個のサブルーチンの場合が示されている。 14は実行単位制御サブルーチン域で、実行単位制御サ
ブルーチンECSBRが格納される。実行単位制御サブルー
チンECSBRは、目的プログラムの1つの実行単位を実行
する互いに親子の関係にある一連のサブルーチンプログ
ラム系を管理、制御するプログラムである。141は、実
行単位制御サブルーチンECSBRの作業域で、現在実行中
であるすなわち有効な目的プログラムのエラー制御テー
ブルのアドレスが設定される。 15は実行単位制御テーブルで、実行単位制御サブルー
チンECSBRにより獲得、管理され、現在実行中の有効な
目的プログラムOBPGの先頭ADPs、最終アドレスADPf及び
そのエラー制御テーブルアドレスが格納される。 以上の構成において、実行単位制御サブルーチンECSB
Rが起動すると、実行単位制御サブルーチンECSBRは、原
始プログラムSPGを翻訳して生成された各目的プログラ
ム中の1つ(目的プログラムOBPGとする)を、メモリシ
ステムの目的プログラム域11に読み込み、それを実行さ
せる。 以下の各処理も実行単位制御サブルーチンECSBRによ
って制御されて実行されるが、必要のない限り特に言及
しない。 次いで、リンケージ規約に従って、目的プログラムOB
PGが使用する各プログラムをリンクし、子プログラムを
呼び出した親プログラムが使用している作業域のアドレ
スが子プログラム側から分るようにされる(処理S1)。 この処理は、親子の関係にあるプログラムの子プログ
ラムのリンクアドレス域に親プログラムの作業域のアド
レスを格納することにより行われる。すなわち、エラー
出力サブルーチンESBRのリンクアドレス域131Lに、その
親プログラムであるサブルーチンPSBRの作業域121のア
ドレスが格納される。 同じくリンケージ規約に従って、親プログラムの作業
域内の固定的な位置(すなわち復帰アドレス域)に子プ
ログラムからの復帰アドレスが設定される(処理S1)。 この処理は、親プログラム内で子プログラムに制御を
移した命令の次の命令のアドレス(すなわち復帰アドレ
ス)を子プログラムの復帰アドレス域に設定することに
より行われる。 いま、目的プログラムOBPGがアドレスADPi(復帰アド
レスはADPi+1)でその子プログラムであるサブルーチン
PSBRに制御を移したとすると、その復帰アドレスADPi+1
が、サブルーチンPSBRの復帰アドレス域121Lに設定され
る。また、サブルーチンPSBRに実行途中でエラーを発生
し、アドレスADSjでその子プログラムであるエラー出力
サブルーチンESBRに制御を移したとすると、その復帰ア
ドレスADSj+1がエラー出力サブルーチンESBRの復帰アド
レス域131Rに設定される。 一方、原始プログラムSPGの翻訳単位毎に、原始プロ
グラムの各桁番号とその目的プログラムの各アドレスと
の対応を示すエラー制御テーブルが、目的プログラム内
に生成される(処理S2)。第2図において、111は目的
プログラムOBPGのエラー制御テーブルである。 目的プログラムOBPGが実行のために呼び出されると、
目的プログラムOBPG自身の初期処理により、そのエラー
制御テーブル111のアドレスを実行単位制御テーブル15
に設定する(処理S3)。これにより、複数の目的プログ
ラムが交互に実行される実行単位中で、現在有効なエラ
ー制御テーブルのアドレスが分かる。 目的プログラムOBPGの実行途中のアドレスADPiにおい
てサブルーチンPSBRに制御が移り、サブルーチンPSBRの
実行途中でエラーが発生し、アドレスADSj(復帰アドレ
スADSj+1)においてエラー出力サブルーチンESBRに制御
が移ったとする。 エラー出力サブルーチンESBRは、その復帰アドレス域
131Rにある復帰アドレスADSj+1に基づいて、目的プログ
ラムOBPGのエラー発生時のプログラムアドレス(すなわ
ち復帰ADPi+1)を求める(処理S4、なお、この処理S4の
具体的な内容は〔実施例〕の項で説明する)。 目的プログラムOBPGのエラー発生時のプログラムアド
レスが求まると、実行単位制御テーブル15に設定されて
ある目的プログラムアドレスより目的プログラムOBPGの
エラー制御テーブル111を求める。このエラー制御テー
ブル111にある各プログラムアドレスをサーチし、前述
の処理S4で求められた復帰アドレスADPi+1に合致するプ
ログラムアドレスを求めると、対応する行番号よりエラ
ーの発生した目的プログラム上のアドレスに対応する原
始プログラムSPG上のエラー発生行番号を求めることが
できる(処理S5)。 以上のようにして、目的プログラムの実行過程でエラ
ーを発生したプログラムのアドレスがOSより通知されな
い場合でも、目的プログラム上のエラーを発生したプロ
グラムアドレスに対応する原始プログラム上の行番号を
容易かつ確実に求めることができる。 〔実施例〕 本発明の実施例を、第2図及び第3図を参照して説明
する。第3図は、同実施例のエラー発生行番号探索処理
フローチャートである。 第2図で行われる実施例の各処理中、リンケージ処理
(処理S1)、エラー制御テーブルを目的プログラム内に
生成する処理(処理S2)、実行のために呼び出された目
的プログラムOBPGが自身の初期処理によりそのエラー制
御テーブル111のアドレスを実行単位制御テーブル14に
設定する処理(処理S3)までの各処理は、前述の〔作
用〕の項すなわち第2図で説明した処理S1〜処理S3と同
じである。なお、目的プログラムOBPGの先頭アドレスAD
Ps及び最終アドレスADPfは、目的プログラムOBPGのロー
ディング時にOSにより実行単位制御テーブル15に設定さ
れる。また、各リングアドレスは、呼ぶプログラムが呼
ばれるプログラムを呼ぶ直前と呼ばれるプログラムに制
御が渡った直後にそれぞれのプログラムが設定する。 以下、サブルーチンPSBRが実行途中でエラーを発生
し、アドレスADSj(復帰アドレスADSj+1)においてエラ
ー出力サブルーチンESBRに制御が移り、そこで行われる
処理S4及びS5の処理、すなわちエラー発生行番号探索処
理を、第3図を参照し、その処理ステップに従って説明
する。なお、第3図において、処理S41〜S44は処理S4の
内部処理であり、処理S51及びS52は処理S5の内部処理で
ある。 処理S41 エラー出力サブルーチンESBRは、実行単位制御サブル
ーチンECSBRに実行単位制御テーブルアドレスの通知を
依頼する。実行単位制御サブルーチンECSBRは、その作
業域141にある実行単位制御テーブル15のアドレスを通
知する。 エラー出力サブルーチンESBRは、実行単位制御テーブ
ル15をサーチして、現在実行中で有効な目的プログラム
OBPGの先頭アドレスADPsと最終アドレスADPfを求める。 処理S42,S43,S44 エラー出力サブルーチンESBRは、その作業域131の復
帰アドレス域131Rより復帰アドレスADSj+1を取り出し
(処理S42)、このADSj+1が処理S41で求めた目的プログ
ラムOBPGの先頭アドレスADPsの最終アドレスADPfの範囲
内にあるか、すなわちADPs≦ADSj+1≦ADPfの条件を満足
するか判別する(処理S43)。満足した場合は、その復
帰アドレスがエラーの発生した目的プログラムOBPGのプ
ログラムアドレスとして求められる。 復帰アドレスADSj+1については、前記条件は満足され
ない。この場合は、エラー出力サブルーチンESBRのリン
クアドレス域131Lにあるリンクアドレスより、エラー出
力サブルーチンESBRの親プログラムであるサブルーチン
PSBRの作業域121を求める(処理S44)。 次に、サブルーチンPSBRの作業域121を現作業域とし
て、前述の処理S42及びS43の処理を行う。すなわち、そ
の復帰アドレス域121Rより復帰アドレスADPi+1を取り出
し(処理S42)、ADSs≦ADPi+1≦ADPfの条件を満足する
かを判別する(処理S43)。 ADPi+1の場合は、当然前記条件は満足するので、この
ADPi+1がエラーの発生した目的プログラムOBPGのプログ
ラムアドレスとして求められる。 なお、サブルーチンが複数個存在し、それらが親と子
プログラムの関係で順番にリンクされているときは、エ
ラー出力サブルーチンESBRを出発点として親となるサブ
ルーチンの作業域を順番にたどって行き、前述の条件が
満足される復帰アドレスが得られるまで、前述の処理S
42〜S44が繰り返される。 処理S51,S52 エラー出力サブルーチンESBRは、実行単位制御テーブ
ル15にあるエラー制御テーブルアドレスより、目的プロ
グラムOBPGのエラー制御テーブル111を求め、処理S43で
求めた復帰アドレスADPi+1に合致するプログラムアドレ
スを求める(処理S51)。 復帰アドレスADPi+1に合致するプログラムアドレスが
求まると、それに対応する行番号より、エラーの発生し
た目的プログラム上のアドレスに対応する原始プログラ
ムSPG上のエラー発生行番号が求められる(処理S52)。 エラー出力サブルーチンESBRは、求められた原始プロ
グラムSPGのエラー発生行番号を画面に表示又はプリン
トアウトする。 以上1つの目的プログラムOBPGの実行過程でエラーが
発生した場合の対応する原始プログラムのエラー発生行
番号探索処理について説明したが、この目的プログラム
OBPGと並行して交互に実行されている他の目的プログラ
ムの実行過程にエラーが発生した場合も、同様にして対
応する原始プログラムのエラー発生行番号を探索するこ
とができる。 〔発明の効果〕 以上説明したように、本発明によれば、目的プログラ
ムの実行過程でエラーを発生したプログラムアドレスが
OSより通知されない場合でも、目的プログラム上のエラ
ーを発生したプログラムアドレスに対応する原始プログ
ラム上の行番号を容易かつ確実に求めることができる。
【図面の簡単な説明】
第1図は本発明の基本構成の説明図、
第2図は本発明及び実施例における処理の流れ説明図、
第3図は同実施例のエラー発生行番号探索処理フローチ
ャートである。 第2図において、 10……システムメモリ、11……目的プログラム(OBPG)
域、111……エラー制御テーブル、12……サブルーチン
(PSBR)域、121……作業域、121L……リンクアドレス
域、121R……復帰アドレス域、13……エラー出力サブル
ーチン(ESBR)域、131……作業域、131L……リンクア
ドレス域、131R……復帰アドレス域、14……実行単位制
御サブルーチン(ECSBR)域、141……作業域、15……実
行単位制御テーブル。
ャートである。 第2図において、 10……システムメモリ、11……目的プログラム(OBPG)
域、111……エラー制御テーブル、12……サブルーチン
(PSBR)域、121……作業域、121L……リンクアドレス
域、121R……復帰アドレス域、13……エラー出力サブル
ーチン(ESBR)域、131……作業域、131L……リンクア
ドレス域、131R……復帰アドレス域、14……実行単位制
御サブルーチン(ECSBR)域、141……作業域、15……実
行単位制御テーブル。
Claims (1)
- (57)【特許請求の範囲】 1.高級言語で記述された原始プログラムを翻訳して生
成された目的プログラムの実行過程でエラーが発生した
場合に、対応する原始プログラム上のエラー発生行番号
を求める高級言語におけるエラー発生行番号探索装置に
おいて、 原始プログラムの翻訳時、子プログラムから親プログラ
ムへの復帰アドレスを設定すると共に、親プログラムの
原始プログラム上の各行番号と、目的プログラム上のプ
ログラムアドレスとの対応を示すエラー制御テーブルを
備える目的プログラムを生成する手段と、 実行中の目的プログラムの先頭アドレス、最終アドレ
ス、及びエラー制御テーブルのアドレスを管理する実行
単位制御テーブルを生成する手段と、 子プログラムの命令を実行中にエラーが発生したとき、
前記子プログラムから親プログラムへの復帰アドレスが
前記実行単位制御テーブルの先頭アドレスと最終アドレ
スとの範囲に含まれるか否かの判定を、親プログラムが
目的プログラムとなるまで順次上位のプログラムに対し
て繰返し、判定がYESとなったとき復帰アドレスに対応
する原始プログラム上のエラー発生行番号を前記エラー
制御テーブルから検索する手段と、 を有することを特徴とする高級言語におけるエラー発生
行番号探索装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP62318994A JP2820937B2 (ja) | 1987-12-18 | 1987-12-18 | 高級言語におけるエラー発生行番号探索装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP62318994A JP2820937B2 (ja) | 1987-12-18 | 1987-12-18 | 高級言語におけるエラー発生行番号探索装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH01161543A JPH01161543A (ja) | 1989-06-26 |
JP2820937B2 true JP2820937B2 (ja) | 1998-11-05 |
Family
ID=18105310
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP62318994A Expired - Fee Related JP2820937B2 (ja) | 1987-12-18 | 1987-12-18 | 高級言語におけるエラー発生行番号探索装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2820937B2 (ja) |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS58129557A (ja) * | 1982-01-27 | 1983-08-02 | Hitachi Ltd | デ−タ処理システムにおけるプログラムのデバツグ用デ−タ収集処理方法 |
JPS58191047A (ja) * | 1982-04-30 | 1983-11-08 | Fujitsu Ltd | プログラム・ダウン箇所検出方式 |
-
1987
- 1987-12-18 JP JP62318994A patent/JP2820937B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH01161543A (ja) | 1989-06-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5193191A (en) | Incremental linking in source-code development system | |
EP0406602B1 (en) | Method and apparatus for debugging parallel programs by serialization | |
US5201050A (en) | Line-skip compiler for source-code development system | |
JPH04247536A (ja) | オブジェクトの実行時データ形式の識別を支援するコンピュータソフトウェアコンパイルシステム及びデバッガ | |
JPH0630066B2 (ja) | テーブル型言語翻訳方法 | |
Teitelman | Automated programmering: the programmer's assistant | |
JP2820937B2 (ja) | 高級言語におけるエラー発生行番号探索装置 | |
EP0406028A2 (en) | Incremental compiler for source code development system | |
CN108664238A (zh) | 一种解释型脚本语言c-sub的执行方法及装置 | |
JPH08194611A (ja) | プログラム修正による影響範囲を解析する装置 | |
Zhu | Formal specifications of debuggers | |
JPS6022373B2 (ja) | プログラマブル制御装置のプログラム変換機構 | |
JPH07311679A (ja) | プログラム作成システム | |
EP0252229B1 (en) | Apl-to-fortran translator | |
JPH10207738A (ja) | 言語処理システム | |
JPS61213935A (ja) | 高級言語プログラムのデバック装置及びそのステップ方式 | |
JPS58109947A (ja) | シミユレ−ト装置 | |
JPH11184680A (ja) | ファイル編集方法及びこれを用いたプログラム開発方法及び装置並びに記憶媒体 | |
JP3240647B2 (ja) | コンピュータ言語の構造化処理方式 | |
JP2751423B2 (ja) | プログラムデバッグ処理方式 | |
JPH03179529A (ja) | 言語翻訳システム | |
JPH06314193A (ja) | 構造図記号表記リストのコンパイル方法 | |
JPH05143356A (ja) | コンパイラ装置 | |
JPH04270422A (ja) | プリコンパイル処理方式 | |
JPH0240720A (ja) | 目的プログラム出力指示方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
LAPS | Cancellation because of no payment of annual fees |