JPH0377541B2 - - Google Patents
Info
- Publication number
- JPH0377541B2 JPH0377541B2 JP59035800A JP3580084A JPH0377541B2 JP H0377541 B2 JPH0377541 B2 JP H0377541B2 JP 59035800 A JP59035800 A JP 59035800A JP 3580084 A JP3580084 A JP 3580084A JP H0377541 B2 JPH0377541 B2 JP H0377541B2
- Authority
- JP
- Japan
- Prior art keywords
- array
- size
- actual
- subprogram
- argument
- 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 - Lifetime
Links
Landscapes
- Devices For Executing Special Programs (AREA)
- Executing Machine-Instructions (AREA)
- Debugging And Monitoring (AREA)
Description
【発明の詳細な説明】
〔発明の技術分野〕
本発明は、プログラム処理におけるエラー検出
方式に関し、特にFORTRANプログラム等のプ
ログラム処理において、サブルーチンの呼び出し
が行われた場合に、サブルーチン側のデータの仮
配列の大きさと実引数で渡されたデータの配列の
大きさとの間の整合性をチエツクする方式に関す
る。
方式に関し、特にFORTRANプログラム等のプ
ログラム処理において、サブルーチンの呼び出し
が行われた場合に、サブルーチン側のデータの仮
配列の大きさと実引数で渡されたデータの配列の
大きさとの間の整合性をチエツクする方式に関す
る。
たとえば、主副構造のFORTRANプログラム
では、本体の主プログラムから副プログラムのサ
ブルーチンを呼び出し(CALL)したり、関数を
引用したりする場合、副プログラムの仮引数に対
してプログラム実行段階で主プログラムから実引
数の配列が引き渡され、副プログラムの処理が行
われる。
では、本体の主プログラムから副プログラムのサ
ブルーチンを呼び出し(CALL)したり、関数を
引用したりする場合、副プログラムの仮引数に対
してプログラム実行段階で主プログラムから実引
数の配列が引き渡され、副プログラムの処理が行
われる。
ところで従来のコンパイラは、主プログラムも
副プログラムも連係させずに別々にコンパイルす
るようになつており、主副相互間の配列不整合は
チエツクしていない。このため、副プログラムの
仮配列の大きさが不定のものであつた場合に、副
プログラムが、少なくとも主プログラムから引き
渡された実配列の大きさを超える処理を行うもの
であつたとしてもこれを知ることができず、プロ
グラム実行の結果、許容されていない他の領域を
破壊してしまうことがあつた。
副プログラムも連係させずに別々にコンパイルす
るようになつており、主副相互間の配列不整合は
チエツクしていない。このため、副プログラムの
仮配列の大きさが不定のものであつた場合に、副
プログラムが、少なくとも主プログラムから引き
渡された実配列の大きさを超える処理を行うもの
であつたとしてもこれを知ることができず、プロ
グラム実行の結果、許容されていない他の領域を
破壊してしまうことがあつた。
第1図は、このようなプログラム処理の1例を
示したものである。図中、1は主プログラム、2
はサブルーチン副プログラム、3は実引数テーブ
ル、4は仮引数テーブルを示す。
示したものである。図中、1は主プログラム、2
はサブルーチン副プログラム、3は実引数テーブ
ル、4は仮引数テーブルを示す。
実引数テーブル3および仮引数テーブル4は、
それぞれ主プログラム1およびサブルーチン副プ
ログラム2のソースをコンパイルする際に、オブ
ジエクトと一緒に作成されるものであり、対応す
るプログラムの引数の属性を示している。
それぞれ主プログラム1およびサブルーチン副プ
ログラム2のソースをコンパイルする際に、オブ
ジエクトと一緒に作成されるものであり、対応す
るプログラムの引数の属性を示している。
実引数テーブル3の内容は図示のように、配
列名:A、1要素の長さ:4Bytes、配列の
大きさ:20Bytes、1次元の下限:1、1次
元の上限:5となり、第2図に斜線部分で示すよ
うに、実行時に定まるの配列の先頭番地から
20Bytesの領域が、配列Aの領域となる。
列名:A、1要素の長さ:4Bytes、配列の
大きさ:20Bytes、1次元の下限:1、1次
元の上限:5となり、第2図に斜線部分で示すよ
うに、実行時に定まるの配列の先頭番地から
20Bytesの領域が、配列Aの領域となる。
これに対して仮引数テーブル4では、配列
名:Bとなるが、の項目は使用されず、配列
の大きさ:不定、1次元の下限:1、1次元
の上限:不定、となる。このため、サブルーチン
副プログラム2のB(10)=Cが実行されると、第2
図に示すように、主プログラム1から渡された実
配列の領域外に“C”を書き込むことになり、許
容されていない他の領域を破壊することになる。
名:Bとなるが、の項目は使用されず、配列
の大きさ:不定、1次元の下限:1、1次元
の上限:不定、となる。このため、サブルーチン
副プログラム2のB(10)=Cが実行されると、第2
図に示すように、主プログラム1から渡された実
配列の領域外に“C”を書き込むことになり、許
容されていない他の領域を破壊することになる。
しかも、このような他の領域の破壊は実行段階
で直ちに知ることができないため、システムの信
頼性において問題があつた。
で直ちに知ることができないため、システムの信
頼性において問題があつた。
本発明の目的は、主、副構造のプログラムの処
理において、大きさ不定の仮配列をもつ副プログ
ラムが主プログラムから渡された実配列の大きさ
を超えた処理を行つたとき、これをエラーとして
直ちに検出できるようにすることにあり、そのた
めの構成として、実引数をもつ主プログラムと該
主プログラムによつて呼ばれる仮引数をもつ副プ
ログラムとからなり、前記実引数および仮引数の
それぞれの属性を示すテーブル手段をそなえたプ
ログラム処理システムにおいて、前記テーブル手
段は少なくとも実引数についての実配列の大きさ
を表すデータと仮引数についての仮配列が大きさ
不定であるか否かの表示とを含み、前記副プログ
ラムの実行に際して前記テーブル手段より当該副
プログラムの仮配列が大きさ不定であるか否かの
表示を読み出し、大きさ不定である場合にさらに
主プログラムから引き渡された実引数の実配列の
大きさを読み出すとともに、副プログラムで使用
している配列の大きさを計算し、これら双方の大
きさを比較して、副プログラムで使用している配
列の大きさが実施例の大きさを超えている場合に
エラー表示を行うことを特徴とするものである。
理において、大きさ不定の仮配列をもつ副プログ
ラムが主プログラムから渡された実配列の大きさ
を超えた処理を行つたとき、これをエラーとして
直ちに検出できるようにすることにあり、そのた
めの構成として、実引数をもつ主プログラムと該
主プログラムによつて呼ばれる仮引数をもつ副プ
ログラムとからなり、前記実引数および仮引数の
それぞれの属性を示すテーブル手段をそなえたプ
ログラム処理システムにおいて、前記テーブル手
段は少なくとも実引数についての実配列の大きさ
を表すデータと仮引数についての仮配列が大きさ
不定であるか否かの表示とを含み、前記副プログ
ラムの実行に際して前記テーブル手段より当該副
プログラムの仮配列が大きさ不定であるか否かの
表示を読み出し、大きさ不定である場合にさらに
主プログラムから引き渡された実引数の実配列の
大きさを読み出すとともに、副プログラムで使用
している配列の大きさを計算し、これら双方の大
きさを比較して、副プログラムで使用している配
列の大きさが実施例の大きさを超えている場合に
エラー表示を行うことを特徴とするものである。
以下に、本発明の詳細を実施例にしたがつて説
明する。
明する。
第3図は、本発明の1実施例によるデータ処理
装置の構成図である。図中、5はデータ処理装
置、6はプログラム処理部、7はメモリ、8は主
プログラム、9はサブルーチン副プログラム、1
0は実引数テーブル、11は仮引数テーブル、1
2はデバツク情報である。また乃至は制御ス
テツプを表している。
装置の構成図である。図中、5はデータ処理装
置、6はプログラム処理部、7はメモリ、8は主
プログラム、9はサブルーチン副プログラム、1
0は実引数テーブル、11は仮引数テーブル、1
2はデバツク情報である。また乃至は制御ス
テツプを表している。
本実施例の主プログラム8、サブルーチン副プ
ログラム9、実引数テーブル10は、それぞれ第
1図に示した従来例の主プログラム1、サブルー
チン副プログラム2、実引数テーブル3と同じも
のとして示されている。しかし、本実施例の仮引
数テーブル11には、第1図の仮引数テーブル4
で使用されていなかつた。“1要素の長さ”の
項目の代わりには、デバツク情報12の項目が設
けられ、仮配列が大きさ不定である場合に、コン
パイル処理時にその表示が設定されるようになつ
ている。
ログラム9、実引数テーブル10は、それぞれ第
1図に示した従来例の主プログラム1、サブルー
チン副プログラム2、実引数テーブル3と同じも
のとして示されている。しかし、本実施例の仮引
数テーブル11には、第1図の仮引数テーブル4
で使用されていなかつた。“1要素の長さ”の
項目の代わりには、デバツク情報12の項目が設
けられ、仮配列が大きさ不定である場合に、コン
パイル処理時にその表示が設定されるようになつ
ている。
動作において、プログラム処理部6は、主プロ
グラム8がサブルーチン副プログラム9を呼び出
したとき、まずステツプで仮引数テーブル11
を参照し、そのデバツク情報12から、仮配列の
大きさが不定であるか否かを識別する。仮配列の
大きさが不定である場合には、ステツプで実引
数テーブル10中の“配列の大きさ”の値A1
(20Bytes)を仮引数テーブル11の“配列の大
きさ”の値として取り込み、次にステツプでサ
ブルーチン副プログラム9を実行する。その際配
列を使用する命令を実行するごとにその配列要素
の位置A2を計算し、ステツプでその値A2が仮
引数テーブル11中の“配列の大きさ”の値A1
(20Bytes)の内にあるか否かを判定する。図示
のB(10)=Cの例では、A2が40Bytesとなるため、
A1<A2となる。このようなA1<A2の場合には他
領域破壊のおそれがあるため、ステツプでエラ
ーメツセージを出力し、使用者に通知する。
グラム8がサブルーチン副プログラム9を呼び出
したとき、まずステツプで仮引数テーブル11
を参照し、そのデバツク情報12から、仮配列の
大きさが不定であるか否かを識別する。仮配列の
大きさが不定である場合には、ステツプで実引
数テーブル10中の“配列の大きさ”の値A1
(20Bytes)を仮引数テーブル11の“配列の大
きさ”の値として取り込み、次にステツプでサ
ブルーチン副プログラム9を実行する。その際配
列を使用する命令を実行するごとにその配列要素
の位置A2を計算し、ステツプでその値A2が仮
引数テーブル11中の“配列の大きさ”の値A1
(20Bytes)の内にあるか否かを判定する。図示
のB(10)=Cの例では、A2が40Bytesとなるため、
A1<A2となる。このようなA1<A2の場合には他
領域破壊のおそれがあるため、ステツプでエラ
ーメツセージを出力し、使用者に通知する。
使用者は、このエラーメツセージによりサブル
ーチン副プログラムの配列の大きさの不整合を知
り、その適切な対応をとるときに、破壊が生じた
場合の他領域の復元を行うことができる。
ーチン副プログラムの配列の大きさの不整合を知
り、その適切な対応をとるときに、破壊が生じた
場合の他領域の復元を行うことができる。
以上のように、本発明によれば、使用者は実引
数と仮引数との間で不整合が生じた場合を確実に
チエツクできるので、信頼性を向上できるととも
に、エラー処理が容易となる。
数と仮引数との間で不整合が生じた場合を確実に
チエツクできるので、信頼性を向上できるととも
に、エラー処理が容易となる。
第1図は大きさ不定の仮配列が実配列の大きさ
を超えるプログラム処理例の説明図、第2図は第
1図のプログラム処理例における配列の説明図、
第3図は本発明の1実施例データ処理装置の構成
図である。 図中、1および8は主プログラム、2および9
はサブルーチン副プログラム、3および10は実
引数テーブル、4および11は仮引数テーブル、
5はデータ処理装置、6はプログラム処理部、7
はメモリ、12はデバツク情報を示す。
を超えるプログラム処理例の説明図、第2図は第
1図のプログラム処理例における配列の説明図、
第3図は本発明の1実施例データ処理装置の構成
図である。 図中、1および8は主プログラム、2および9
はサブルーチン副プログラム、3および10は実
引数テーブル、4および11は仮引数テーブル、
5はデータ処理装置、6はプログラム処理部、7
はメモリ、12はデバツク情報を示す。
Claims (1)
- 1 実引数をもつ主プログラムと該主プログラム
によつて呼ばれる仮引数をもつ副プログラムとか
らなり、前記実引数および仮引数のそれぞれの属
性を示すテーブル手段をそなえたプログラム処理
システムにおいて、前記テーブル手段は少なくと
も実引数についての実配列の大きさを表すデータ
と仮引数についての仮配列が大きさ不定であるか
否かの表示とを含み、前記副プログラムの実行に
際して前記テーブル手段より当該副プログラムの
仮配列が大きさ不定であるか否かの表示を読み出
し、大きさ不定である場合にさらに主プログラム
から引き渡された実引数の実配列の大きさを読み
出すとともに、副プログラムで使用している配列
の大きさを計算し、これら双方の大きさを比較し
て、副プログラムで使用している配列の大きさが
実配列の大きさを超えている場合にエラー表示を
行うことを特徴とする実配列および仮配列間の整
合性チエツク方式。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP59035800A JPS60179847A (ja) | 1984-02-27 | 1984-02-27 | 実配列および仮配列間の整合性チエツク方式 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP59035800A JPS60179847A (ja) | 1984-02-27 | 1984-02-27 | 実配列および仮配列間の整合性チエツク方式 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPS60179847A JPS60179847A (ja) | 1985-09-13 |
| JPH0377541B2 true JPH0377541B2 (ja) | 1991-12-10 |
Family
ID=12451991
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP59035800A Granted JPS60179847A (ja) | 1984-02-27 | 1984-02-27 | 実配列および仮配列間の整合性チエツク方式 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPS60179847A (ja) |
Families Citing this family (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2507314B2 (ja) * | 1986-03-26 | 1996-06-12 | 株式会社日立製作所 | リンケ−ジコンベンシヨン方法 |
| JPS63147232A (ja) * | 1986-12-10 | 1988-06-20 | Nec Corp | 整合性検査方式 |
| JP2008145135A (ja) * | 2006-12-06 | 2008-06-26 | Shimadzu Corp | 粒度分布測定装置 |
Family Cites Families (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS57113149A (en) * | 1980-12-29 | 1982-07-14 | Fujitsu Ltd | Interprogram control system |
-
1984
- 1984-02-27 JP JP59035800A patent/JPS60179847A/ja active Granted
Also Published As
| Publication number | Publication date |
|---|---|
| JPS60179847A (ja) | 1985-09-13 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US8972794B2 (en) | Method and apparatus for diagnostic recording using transactional memory | |
| US7353500B2 (en) | Suppressing execution of monitoring measurement program pointed to by inserted branch after threshold number of coverage to reduce instruction testing overhead | |
| JPH0377541B2 (ja) | ||
| JP3432734B2 (ja) | Dma制御装置及びdma制御方法 | |
| JPH0731617B2 (ja) | プログラム暴走検知方法 | |
| JPS57164347A (en) | Undefined instruction detector for one chip microcomputer | |
| JP2581446B2 (ja) | アプリケーションプログラム実行中における配列領域外アクセスの検出方法 | |
| JPH01205348A (ja) | プログラムデバッグ方式 | |
| JPH0283749A (ja) | マイクロプロセッサの内部割込み制御方式 | |
| JPH0314148A (ja) | プログラム破壊検出装置 | |
| JP2686801B2 (ja) | マイクロコンピュータのプログラム開発ツール | |
| JPS6243789A (ja) | Icカ−ドの試験方法 | |
| JPS60167043A (ja) | 情報処理装置 | |
| JPH0480860A (ja) | プログラムロード方式 | |
| JPH0244432A (ja) | 電子計算機制御方式 | |
| JPS6270947A (ja) | デバグ割込み制御方式 | |
| JPS60110045A (ja) | 自動トレ−スダンプ方法 | |
| JPS6373437A (ja) | パリテイ回路検査方式 | |
| JPS62241041A (ja) | 情報処理装置 | |
| JPH01320547A (ja) | プログラム実行情報の収集方式 | |
| JPS6031650A (ja) | 計算機 | |
| JPS6356742A (ja) | 割込要求信号発生回路 | |
| JPS60100230A (ja) | 実時間主記憶部検査装置 | |
| JPH07271605A (ja) | C言語プログラムデバッグ方式 | |
| JPS6051135B2 (ja) | パリテイビツト付加による命令語の検定方式 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| LAPS | Cancellation because of no payment of annual fees |