JPH036619A - 手続きの再帰呼出し検査処理方式 - Google Patents
手続きの再帰呼出し検査処理方式Info
- Publication number
- JPH036619A JPH036619A JP1140829A JP14082989A JPH036619A JP H036619 A JPH036619 A JP H036619A JP 1140829 A JP1140829 A JP 1140829A JP 14082989 A JP14082989 A JP 14082989A JP H036619 A JPH036619 A JP H036619A
- Authority
- JP
- Japan
- Prior art keywords
- state
- state variable
- subprogram
- called
- call
- 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.)
- Pending
Links
- 238000012545 processing Methods 0.000 title claims abstract description 49
- 238000000034 method Methods 0.000 title claims abstract description 26
- 230000000306 recurrent effect Effects 0.000 title abstract 5
- 238000007689 inspection Methods 0.000 claims description 15
- 238000003672 processing method Methods 0.000 claims description 3
- 230000002159 abnormal effect Effects 0.000 abstract description 3
- IVQOFBKHQCTVQV-UHFFFAOYSA-N 2-hydroxy-2,2-diphenylacetic acid 2-(diethylamino)ethyl ester Chemical compound C=1C=CC=CC=1C(O)(C(=O)OCCN(CC)CC)C1=CC=CC=C1 IVQOFBKHQCTVQV-UHFFFAOYSA-N 0.000 description 4
- 238000013519 translation Methods 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Landscapes
- Executing Machine-Instructions (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
〔概要〕
各副プログラムごとに、副プログラムの再帰呼出しを許
可する記述と、再帰呼出しを許可しない記述とを選択可
能な言語仕様を持つ計算機言語を処理する計算機システ
ムにおける手続きの再帰呼出し検査処理方式に関し。
可する記述と、再帰呼出しを許可しない記述とを選択可
能な言語仕様を持つ計算機言語を処理する計算機システ
ムにおける手続きの再帰呼出し検査処理方式に関し。
再帰呼出しの許可されていない副プログラムが。
再帰的に呼出された場合に、それを自動的に検出する手
段を提供することを目的とし。
段を提供することを目的とし。
再帰呼出し不可の副プログラムごとに、既に呼出し状態
であるか、呼出し状態でないかを示す状態変数記憶部と
、再帰呼出し不可の副プログラムにおける入口部で5上
記状態変数を調べ、状態変数が既に呼出し状態を示すと
きエラー処理を行い未呼出し状態を示すとき、状態変数
を呼出し状態に変更する処理手段と、再帰呼出し不可の
副プロダラムにおける出口部で、上記状態変数を未呼出
し状態に戻す処理手段とを備えるように構成する。
であるか、呼出し状態でないかを示す状態変数記憶部と
、再帰呼出し不可の副プログラムにおける入口部で5上
記状態変数を調べ、状態変数が既に呼出し状態を示すと
きエラー処理を行い未呼出し状態を示すとき、状態変数
を呼出し状態に変更する処理手段と、再帰呼出し不可の
副プロダラムにおける出口部で、上記状態変数を未呼出
し状態に戻す処理手段とを備えるように構成する。
〔産業上の利用分野]
本発明は、各副プログラムごとに、副プログラムの再帰
呼出しを許可する記述と5再帰呼出しを許可しない記述
とを選択可能な言語仕様を持つ計算機言語を処理する計
算機システムにおける手続きの再帰呼出し検査処理方式
に関する。
呼出しを許可する記述と5再帰呼出しを許可しない記述
とを選択可能な言語仕様を持つ計算機言語を処理する計
算機システムにおける手続きの再帰呼出し検査処理方式
に関する。
ある処理手続きから、直接的に、または他の処理手続き
を経て間接的に1同し処理手続きを呼び出すことを、再
帰呼出しという。従来の計算機言語では、この再帰呼出
しがすべての副プログラムに対して許可されているか、
許可されていないかの何れかであった。
を経て間接的に1同し処理手続きを呼び出すことを、再
帰呼出しという。従来の計算機言語では、この再帰呼出
しがすべての副プログラムに対して許可されているか、
許可されていないかの何れかであった。
従来、科学技術計算などに多く用いられている計算機言
語の1つであるFORTRAN処理系では、この手続き
の再帰呼出しは、許可されていなかった。しかしながら
、柔軟なプログラミングを可能とするため、FORTR
ANにおいても、再帰呼出しを可能とする仕様が検討さ
れている。
語の1つであるFORTRAN処理系では、この手続き
の再帰呼出しは、許可されていなかった。しかしながら
、柔軟なプログラミングを可能とするため、FORTR
ANにおいても、再帰呼出しを可能とする仕様が検討さ
れている。
この新しいFORT RA Nの言語仕様では、すべて
の副プログラムについて、−律に再帰呼出しを許可する
のではなく5各副プログラムごとに副プログラムの再帰
呼出しを許可する記述と、再帰呼出しを許可しない記述
とを、プログラム作成者が選択できるようになっている
。
の副プログラムについて、−律に再帰呼出しを許可する
のではなく5各副プログラムごとに副プログラムの再帰
呼出しを許可する記述と、再帰呼出しを許可しない記述
とを、プログラム作成者が選択できるようになっている
。
なお、従来のFORTRANでは1手続きの再帰呼出し
は許可されていなかったが、誤って再帰呼出しが行われ
た場合に、それを検査する手段はなかった。
は許可されていなかったが、誤って再帰呼出しが行われ
た場合に、それを検査する手段はなかった。
1つのプログラムの中に、再帰呼出しを許可する手続き
の記述と、再帰呼出しを許可しない手続きの記述とが混
在する場合、再帰呼出し不可の副プログラムを、再帰的
に呼出してしまう誤りを起こしやすくなると考えられる
。
の記述と、再帰呼出しを許可しない手続きの記述とが混
在する場合、再帰呼出し不可の副プログラムを、再帰的
に呼出してしまう誤りを起こしやすくなると考えられる
。
再帰呼出し不可の副プログラムを、誤って再帰的に呼出
してしまうと、プログラムが無限ループに陥ったり、異
常な出力が行われたりすることになる。
してしまうと、プログラムが無限ループに陥ったり、異
常な出力が行われたりすることになる。
しかし、従来3 このような再帰呼出し誤りを自動的に
検出する手段はなかったので、プログラムの異常動作に
対する原因追求が困難であるという問題があった。
検出する手段はなかったので、プログラムの異常動作に
対する原因追求が困難であるという問題があった。
本発明は上記問題点の解決を図り、再帰呼出しの許可さ
れていない副プログラムが、再帰的に呼出された場合に
、それを自動的に検出する手段を提供することを目的と
している。
れていない副プログラムが、再帰的に呼出された場合に
、それを自動的に検出する手段を提供することを目的と
している。
第1図は本発明の構成例を示す。
第1図において、10は高級言語で記述されたソースプ
ログラム 11はCPUおよびメモリなどからなる処理
装置、12はソースプログラム10を低レベルの計算機
言語に翻訳するコンパイラ。
ログラム 11はCPUおよびメモリなどからなる処理
装置、12はソースプログラム10を低レベルの計算機
言語に翻訳するコンパイラ。
13は再帰呼出し可/不可判定部、14は状態変数設定
部、15は入口処理設定部、16は出口処理設定部、1
7はコンパイラ12の翻訳結果であるオブジェクトプロ
グラム、18は副プログラム部、19は状態変数検査・
更新処理部、20は状態変数初期化処理部、21は再帰
呼出し不可の副プログラムごとに設けられる状態変数記
憶部を表す。
部、15は入口処理設定部、16は出口処理設定部、1
7はコンパイラ12の翻訳結果であるオブジェクトプロ
グラム、18は副プログラム部、19は状態変数検査・
更新処理部、20は状態変数初期化処理部、21は再帰
呼出し不可の副プログラムごとに設けられる状態変数記
憶部を表す。
ソースプログラム10は、各副プログラムごとに、副プ
ログラムの再帰呼出しを許可する記述と再帰呼出しを許
可しない記述とを選択可能な言語仕様を持つ計算機言語
により作成されたプログラムである。
ログラムの再帰呼出しを許可する記述と再帰呼出しを許
可しない記述とを選択可能な言語仕様を持つ計算機言語
により作成されたプログラムである。
コンパイラ12は、ソースプログラム10を解析し、オ
ブジェクトプログラム17を出力する。
ブジェクトプログラム17を出力する。
再帰呼出し可/不可判定部13は、ソースプログラムl
Oの各副プログラムごとに、再帰呼出しの可または不可
を判定する。再帰呼出しが不可であれば、状態変数設定
部14により、オブジェクトプログラム17中に、状L
Fi変数記憶部21を設ける。人口処理設定部15は、
副プログラム部18の人口部に状態変数検査・更新処理
部19のテキストを設定し、出口処理設定部16は、副
プログラム部18の出口部に状態変数初期化処理部20
のテキストを設定する。
Oの各副プログラムごとに、再帰呼出しの可または不可
を判定する。再帰呼出しが不可であれば、状態変数設定
部14により、オブジェクトプログラム17中に、状L
Fi変数記憶部21を設ける。人口処理設定部15は、
副プログラム部18の人口部に状態変数検査・更新処理
部19のテキストを設定し、出口処理設定部16は、副
プログラム部18の出口部に状態変数初期化処理部20
のテキストを設定する。
状態変数記憶部21は、再帰呼出し不可の副プログラム
ごとに、既に呼出し状態であるか、呼出し状態でないか
を示す状態変数を記憶するものである。
ごとに、既に呼出し状態であるか、呼出し状態でないか
を示す状態変数を記憶するものである。
状態変数検査・更新処理部19は、再帰呼出し不可の副
プログラムにおける人口部で、状態変数記憶部21に格
納された状態変数を調べ、状B変数が既に呼出し状態を
示すときエラー処理を行い。
プログラムにおける人口部で、状態変数記憶部21に格
納された状態変数を調べ、状B変数が既に呼出し状態を
示すときエラー処理を行い。
未呼出し状態を示すとき5状態変数を呼出し状態に変更
する処理を行うものである。
する処理を行うものである。
状態変数初期化処理部20は、再帰呼出し不可の副プロ
グラムにおける出口部で、上記状態変数を未呼出し状態
に戻す処理を行うものである。
グラムにおける出口部で、上記状態変数を未呼出し状態
に戻す処理を行うものである。
なお、この例では、状態変数検査・更新処理部19、状
態変数初期化処理部20.状態変数記憶部21は、コン
パイラ12の起動時における翻訳オプションにより、デ
バッグ指定が行われたときだけ5設けられるようになっ
ている。
態変数初期化処理部20.状態変数記憶部21は、コン
パイラ12の起動時における翻訳オプションにより、デ
バッグ指定が行われたときだけ5設けられるようになっ
ている。
〔作用]
手続きの再帰呼出しが許可されている副プログラムに対
しては、状態変数検査・更新処理部19状態変数初期化
処理部20.状態変数記憶部21が設けられないので、
再帰呼出しが行われてもエラーになることはない。
しては、状態変数検査・更新処理部19状態変数初期化
処理部20.状態変数記憶部21が設けられないので、
再帰呼出しが行われてもエラーになることはない。
再帰呼出しが許可されていない副プログラムが最初に1
回呼出されると、状態変数検査 更新処理部19により
、状態変数記憶部21に呼出し状態が記憶される。この
副プログラムの処理が終了するとき、状態変数初期化処
理部20により、状態変数が初期状態に戻される。しか
し、この副プログラムの処理が終了する前に、直接的に
または間接的に、再度この副プログラムの呼出しが行わ
れると、状態変数検査・更新処理部19によって。
回呼出されると、状態変数検査 更新処理部19により
、状態変数記憶部21に呼出し状態が記憶される。この
副プログラムの処理が終了するとき、状態変数初期化処
理部20により、状態変数が初期状態に戻される。しか
し、この副プログラムの処理が終了する前に、直接的に
または間接的に、再度この副プログラムの呼出しが行わ
れると、状態変数検査・更新処理部19によって。
呼出し状態が検出されるので2エラー処理が行われるこ
とになる。
とになる。
〔実施例]
第2図は本発明の詳細な説明するための再帰呼出しを行
う副プログラムの例、第3図は本発明の一実施例に係る
副プログラムの処理の例、第4図は副プログラムによっ
て呼出される再帰呼出し検査ライブラリの処理の例を示
す。
う副プログラムの例、第3図は本発明の一実施例に係る
副プログラムの処理の例、第4図は副プログラムによっ
て呼出される再帰呼出し検査ライブラリの処理の例を示
す。
本発明は2例えば新しい仕様のFORTRAN°処理系
において適用される。この言語仕様では。
において適用される。この言語仕様では。
副プログラムの記述について、第2図(イ)に示す記述
と、第2図(ロ)に示す記述とを使い分けることができ
るようになっている。
と、第2図(ロ)に示す記述とを使い分けることができ
るようになっている。
例えば、第2図(イ)に示すソースプログラム10のよ
うに、副プログラム5UBIが、他の副プログラム5U
B2を呼び、一方、副プログラム5UB2が 副プログ
ラム5UBIを呼出すような場合1間接的に副プログラ
ムSUB iから同じ副プログラム5UBIを、または
副プログラム5UB2から同し副プログラム5UB2を
呼出すことになる。
うに、副プログラム5UBIが、他の副プログラム5U
B2を呼び、一方、副プログラム5UB2が 副プログ
ラム5UBIを呼出すような場合1間接的に副プログラ
ムSUB iから同じ副プログラム5UBIを、または
副プログラム5UB2から同し副プログラム5UB2を
呼出すことになる。
二の第2図(イ)に示す記述の場合、従来の言語仕様と
同様であり、再帰呼出しは不可である。
同様であり、再帰呼出しは不可である。
そのため2 もし再帰呼出しになった場合には、エラー
としなければならない。
としなければならない。
一方、第2図(ロ)に示す記述の場合には、再帰呼出し
は、可能になっている。
は、可能になっている。
第2図(イ)に示すソースプログラムlOについて、再
帰呼出しのエラーを自動検出するために翻訳オプション
により1本発明では、副プログラム5UBI、5UB2
のそれぞれに対して、第1図に示す状態変数検査・更新
処理部19.状態変数初期化処理部20.状態変数記憶
部21を組み込む。
帰呼出しのエラーを自動検出するために翻訳オプション
により1本発明では、副プログラム5UBI、5UB2
のそれぞれに対して、第1図に示す状態変数検査・更新
処理部19.状態変数初期化処理部20.状態変数記憶
部21を組み込む。
この副プログラム5UBIまたは5UB2の処理の流れ
は1例えば第3図(a)〜(C)に示すようになる。
は1例えば第3図(a)〜(C)に示すようになる。
(a) 人口処理として、あらかしめ用意された再帰
呼出し検査ライブラリをコールする。
呼出し検査ライブラリをコールする。
(b) その後、この副プログラムの本来の処理を実
行する。
行する。
(C) この副プログラムからの出口処理で、第1図
に示す状態変数記憶部21に記憶されている状態変数か
ら°゛1”°を減算し、呼出し元へ復帰する。
に示す状態変数記憶部21に記憶されている状態変数か
ら°゛1”°を減算し、呼出し元へ復帰する。
第3図(a)で呼出される再帰呼出し検査ライブラリー
は1例えば第4図に示す■〜■の処理を行う。
は1例えば第4図に示す■〜■の処理を行う。
■ 副プログラムごとに用意された状態変数が。
“0°゛であるかどうかを8周へる。“0゛°であれば
処理■へ、“0″°でなければ、処理■へ移る。なお、
この状態変数の初期値は“0″“である。
処理■へ、“0″°でなければ、処理■へ移る。なお、
この状態変数の初期値は“0″“である。
■ 状態変数が“0°゛であれば、現副プログラムの呼
出しが、最初の呼出しであるので、状態変数に“1′°
を加算することにより、呼出し状態に変更する。その後
、このライブラリの呼出し元へ復帰する。
出しが、最初の呼出しであるので、状態変数に“1′°
を加算することにより、呼出し状態に変更する。その後
、このライブラリの呼出し元へ復帰する。
■ 状態変数が0°゛でない場合、再帰呼出しされたこ
とになるので、エラーメツセージを出力し。
とになるので、エラーメツセージを出力し。
異常終了させる。または、ライブラリの呼出し元へ、エ
ラー復帰コードを設定して復帰するなどの処理を行う。
ラー復帰コードを設定して復帰するなどの処理を行う。
〔発明の効果]
以上説明したように、従来方式では、再帰呼出し不可の
手続きが再帰呼出しされて、異常が起きた場合に、ソー
スプログラムを目で追って、プログラムの走行経路を調
べなければならなかったが。
手続きが再帰呼出しされて、異常が起きた場合に、ソー
スプログラムを目で追って、プログラムの走行経路を調
べなければならなかったが。
本発明によれば、自動的に再帰呼出しのエラーが検出さ
れるので、少ない労力で、容易に異常個所を発見できる
ことになる。特に、翻訳オプションでデバッグ指定がさ
れたときにだけ、再帰呼出しの検査を行う手段を組み込
むようにすれば2通常の走行におけるオーバヘッドはな
い。
れるので、少ない労力で、容易に異常個所を発見できる
ことになる。特に、翻訳オプションでデバッグ指定がさ
れたときにだけ、再帰呼出しの検査を行う手段を組み込
むようにすれば2通常の走行におけるオーバヘッドはな
い。
第1図は本発明の構成例。
第2図は本発明の詳細な説明するための再帰呼出しを行
う副プログラムの例 第3図は本発明の一実施例に係る副プログラムの処理の
例。 第4図は副プログラムによって呼出される再帰呼出し検
査ライブラリの処理の例を示す。 図中、10はソースプログラム、11は処理装置、12
はコンパイラ、13は再帰呼出し可/不可判定部、14
は状態変数設定部、15は入口処理設定部、16は出口
処理設定部、17はオブジェクトプログラム、18は副
プログラム部、19は状態変数検査・更新処理部、20
は状態変数初期化処理部、21は状態変数記憶部を表す
。 ソースプログラム
う副プログラムの例 第3図は本発明の一実施例に係る副プログラムの処理の
例。 第4図は副プログラムによって呼出される再帰呼出し検
査ライブラリの処理の例を示す。 図中、10はソースプログラム、11は処理装置、12
はコンパイラ、13は再帰呼出し可/不可判定部、14
は状態変数設定部、15は入口処理設定部、16は出口
処理設定部、17はオブジェクトプログラム、18は副
プログラム部、19は状態変数検査・更新処理部、20
は状態変数初期化処理部、21は状態変数記憶部を表す
。 ソースプログラム
Claims (1)
- 【特許請求の範囲】 各副プログラムごとに、副プログラムの再帰呼出しを許
可する記述と、再帰呼出しを許可しない記述とを選択可
能な言語仕様を持つ計算機言語を処理する計算機システ
ムにおいて、 再帰呼出し不可の副プログラムごとに、既に呼出し状態
であるか、呼出し状態でないかを示す状態変数を記憶す
る記憶部(21)と、 再帰呼出し不可の副プログラムにおける入口部で、上記
状態変数を調べ、状態変数が既に呼出し状態を示すとき
エラー処理を行い、未呼出し状態を示すとき、状態変数
を呼出し状態に変更する処理手段(19)と、 再帰呼出し不可の副プログラムにおける出口部で、上記
状態変数を未呼出し状態に戻す処理手段(20)とを備
えたことを特徴とする手続きの再帰呼出し検査処理方式
。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP1140829A JPH036619A (ja) | 1989-06-02 | 1989-06-02 | 手続きの再帰呼出し検査処理方式 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP1140829A JPH036619A (ja) | 1989-06-02 | 1989-06-02 | 手続きの再帰呼出し検査処理方式 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH036619A true JPH036619A (ja) | 1991-01-14 |
Family
ID=15277690
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP1140829A Pending JPH036619A (ja) | 1989-06-02 | 1989-06-02 | 手続きの再帰呼出し検査処理方式 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH036619A (ja) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS62274341A (ja) * | 1986-05-21 | 1987-11-28 | Nec Corp | プログラム呼出し制御方式 |
-
1989
- 1989-06-02 JP JP1140829A patent/JPH036619A/ja active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS62274341A (ja) * | 1986-05-21 | 1987-11-28 | Nec Corp | プログラム呼出し制御方式 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6470493B1 (en) | Computer method and apparatus for safe instrumentation of reverse executable program modules | |
US5551051A (en) | Isolated multiprocessing system having tracking circuit for verifyng only that the processor is executing set of entry instructions upon initiation of the system controller program | |
JPH036619A (ja) | 手続きの再帰呼出し検査処理方式 | |
US20040015876A1 (en) | Method and structure of implementing a safe pointer | |
JPS63245738A (ja) | プログラム未定義デ−タ項目の自動修正方式 | |
JPS58181160A (ja) | 緊急動作制御方式 | |
JPH04205144A (ja) | マイクロプロセッサ | |
JP2853774B2 (ja) | プログラマブルコントローラ | |
JP3102568B2 (ja) | ソフトウエア開発装置 | |
JPH03235135A (ja) | プログラムの自動検査方式 | |
JPS61213936A (ja) | 高級言語プログラムのステツプ実行方式 | |
JPH01214934A (ja) | プログラムの間接再帰呼出し検出方式 | |
JP2871429B2 (ja) | 暴走監視機能を有するプロセッサ | |
JP2581446B2 (ja) | アプリケーションプログラム実行中における配列領域外アクセスの検出方法 | |
JPS61180344A (ja) | 高級言語のステツプ実行システム | |
JPH0377541B2 (ja) | ||
KR100393985B1 (ko) | 메모리 영역 보호 장치 및 방법 | |
JPS6218054B2 (ja) | ||
JPH0628015A (ja) | プログラマブルコントローラ | |
JPS604492B2 (ja) | 計算機 | |
JPS62177632A (ja) | デ−タ処理装置の異常処理方式 | |
JPH0665941U (ja) | プログラム動作装置 | |
KR850002910A (ko) | 데이타 처리 시스템 | |
JPS60254251A (ja) | デバツク方式 | |
JPH02263243A (ja) | コンピュータの暴走処理装置 |