JPH1115694A - 関数インタフェースのチェック方法 - Google Patents

関数インタフェースのチェック方法

Info

Publication number
JPH1115694A
JPH1115694A JP9167089A JP16708997A JPH1115694A JP H1115694 A JPH1115694 A JP H1115694A JP 9167089 A JP9167089 A JP 9167089A JP 16708997 A JP16708997 A JP 16708997A JP H1115694 A JPH1115694 A JP H1115694A
Authority
JP
Japan
Prior art keywords
function
parameter
key information
name
receiving
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.)
Granted
Application number
JP9167089A
Other languages
English (en)
Other versions
JP3141817B2 (ja
Inventor
Tamaru Fukushima
田丸 福島
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP09167089A priority Critical patent/JP3141817B2/ja
Publication of JPH1115694A publication Critical patent/JPH1115694A/ja
Application granted granted Critical
Publication of JP3141817B2 publication Critical patent/JP3141817B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Executing Machine-Instructions (AREA)
  • Debugging And Monitoring (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 【課題】 プログラムモジュール間で関数名の使用、関
数パラメータ名の使用及び関数パラメータの設定に誤り
があった場合、その誤りを容易に検出する。 【解決手段】 送信側関数11では関数コール時にコー
ルする関数名から生成した関数キー情報12をコールさ
れる受信側関数21に送信し、受信側関数21では受信
した関数キー情報12と受信側関数名から生成した関数
キー情報22とを関数キー情報チェックルーチン23に
より比較し、双方が一致する場合は処理を続行し、不一
致の場合はその場で直ちにプログラムの障害通知を行
う。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、本発明はプログラ
ム論理の合理性チェックに関し、特にリンカー処理が行
われない各部分ロードモジュール間のプログラム関数イ
ンターフェースの合理性をチェックする関数インタフェ
ースのチェック方法に関する。
【0002】
【従来の技術】従来は、異なる部分ロードモジュール上
に存在する関数間の関数コール時の関数名使用の合理性
のチェックは、リンカーで行うことが出来ないため、タ
ーゲットマシン上で実際に検査対象のプログラムを走行
させ、矛盾により生した異常現象から、逆に関数名使用
の誤りを検出すると言う方法が取られていた。また、タ
ーゲットマシン上で実際に検査対象のプログラムを走行
させ、矛盾により生した異常現象から、逆に関数パラメ
ータ名使用の誤りを検出すると言う方法が取られてい
た。
【0003】また、関数間の関数コール時の関数パラメ
ータの設定有無の合理性のチェックは、コンパイラ、リ
ンカーによるチェックが複雑になってしまうことから、
ターゲットマシン上で実際に検査対象のプログラムを走
行させ、矛盾により生した異常現象から、逆に関数パラ
メータ設定有無の誤りを検出すると言う方法が取られて
いた。図6は、従来の関数間の関数コール時の状況を示
す説明図であり、送信側部分ロードモジュール80の送
信側関数81において関数コールを行った場合、送信側
パラメータ情報82が受信側ロードモジュール90の受
信側関数91に転送されるようになっている。したがっ
て、関数インタフェースに関するチェック、即ちコール
する関数に対する関数名、パラメータ名及びパラメータ
の設定に関する合理性のチェックは行われていない。
【0004】
【発明が解決しようとする課題】このように従来は、関
数名の使用誤り、関数パラメータ名の使用誤り及び関数
パラメータ設定の誤りをそれぞれ検出する場合は、ター
ゲットマシン上で実際に検査対象のプログラムを走行さ
せ、矛盾により生じた現象から、逆に関数名の使用誤
り、関数パラメータ名の使用誤り及び関数パラメータ設
定の誤りを検出する方法が取られている。しかしこの方
法では、矛盾により生じた異常現象は、プログラムの実
行が誤りの存在する地点を通過してから相当数のステッ
プ分を走行した後、異常現象が発現するため、発現した
異常現象からその原因となった誤り箇所を容易に探索す
ることができない。このため、関数名の使用、関数パラ
メータ名の使用及び関数パラメータの設定に誤りがあっ
た場合、その誤りの検出は、単純な誤りであるにもかか
わらず困難な作業を伴い、かつ手間がかかるという問題
があった。したがって本発明は、関数名の使用、関数パ
ラメータ名の使用及び関数パラメータの設定に誤りがあ
った場合、その誤りを容易に検出することを目的とす
る。
【0005】
【課題を解決するための手段】このような課題を解決す
るために本発明は、関数名の使用、関数パラメータ名の
使用及び関数パラメータの設定に誤りがあった場合、直
ちにその誤りを検出して通知することで誤り検出を容易
にするものであり、次のような手段を有する。即ち、送
信側関数では関数コール時にコールする関数名から生成
した関数キー情報をコールされる受信側関数に送信し、
受信側関数では受信した関数キー情報と受信側関数名か
ら生成した関数キー情報とを関数キー情報チェックルー
チンにより比較し、不一致が検出されるとプログラムの
障害通知を行う方法である。また、送信側関数では関数
コール時にコールする関数のパラメータ名より生成した
パラメータキー情報をコールされる受信側関数に送信
し、受信側関数では受信したパラメータキー情報と受信
側関数のパラメータ名から生成したパラメータキー情報
とをパラメータキー情報チェックルーチンにより比較
し、障害通知を行う方法である。また、送信側関数では
関数コール時に、パラメータが設定されたときフラグが
オンとなるパラメータ設定キー情報をコールされる受信
側関数に送信し、受信側関数では受信したパラメータ設
定キー情報と受信側関数のパラメータ定義より生成した
パラメータ設定キー情報とをパラメータ設定キー情報チ
ェックルーチンにより比較し、障害通知を行う方法であ
る。また、送信側関数から関数コールされると受信側関
数は、関数コールの終了時に、送信側関数宛に返信パラ
メータが設定されたときフラグがオンとなるパラメータ
設定キー情報を送信側関数に返信し、送信側関数は返信
されたパラメータ設定キー情報とコール対象関数のパラ
メータ定義より生成したパラメータ設定キー情報とをパ
ラメータ設定キー情報チェックルーチンにより比較し、
障害通知を行う方法である。
【0006】
【発明の実施の形態】以下、本発明について図面を参照
して説明する。図1は、本発明に係る関数インタフェー
スのチェック方法を説明する説明図であり、2つの部分
ロードモジュール10,20を用い、送信側部分ロード
モジュール10上の送信側関数11が受信側部分ロード
モジュール20上の受信側関数21をコールする場合の
例を示すものである。
【0007】送信側関数11は受信側関数21をコール
する場合、関数間インタフェースの正常性をチェックす
るために、送信側パラメータ情報13のみならず、正常
性をチェックするための送信側キー情報12を受信側関
数21に引き渡す。受信側関数21では送信側関数キ一
情報12を受けとると、送信側関数キー情報12と自分
で保持している受信側キー情報22とをキー情報チェッ
クルーチン23を用いて比較し、一致すれば、関数間イ
ンタフェースは正常として処理を続行し、不一致であれ
ば、関数間インタフェースを異常として、その場でプロ
グラムの障害情報を試験者に端末等を通して通知する。
【0008】さらに、関数コール終了時、受信側関数2
1は返信情報として受信側キー情報22を送信側関数1
1に返信する。送信側関数11では、返信された受信側
キー情報22と、送信側キー情報12をキー情報チェッ
クルーチン15を用いて比較し、一致すれば関数間イン
タフェースは正常として処理を続行し、不一致であれ
ば、関数間インタフェースを異常として、その場でプロ
グラムの障害情報を試験者に端末等を通して通知する。
【0009】図2は、送信側関数11が関数をコールす
る場合の、キー情報、パラメータ情報、キー設定ルーチ
ン及びキーチェックルーチンの詳細な例を示す図であ
る。また、図3は、関数コールされる場合の受信側関数
21でのキー情報、キーチエックルーチン及びキー設定
ルーチンの詳細の例を示す図である。また、図4は、関
数コールを行う送信側関数50のコーディング例を示す
図である。また、図5は、関数コールされる受信側関数
70のコーディング例を示す図である。
【0010】ここで、図4の送信側関数50は、図5の
受信側関数70を関数コールする場合の例を示し、図5
の受信関数70は、図4の送信側関数50に関数コール
される場合の例を示している。また、図2に示すキー情
報及びルーチン情報は、図4の送信側関数50が図5の
受信側関数70を関数コールする場合のキー情報、ルー
チン情報の例を示し、また図3に示すキー情報、ルーチ
ン情報は、図5の受信側関数70が図4の送信側関数5
0に関数コールされる場合のキー情報、ルーチン情報の
例を示している。
【0011】以下、図2〜図5を用いてキー情報の作成
方法の詳細について説明する。キー情報の値と、受け側
設定キー情報と、キー情報のチェックルーチンと、キー
情報の設定ルーチンはコンパイラによって生成される。
即ち、コンパイラによるプログラムのコンパイル時、コ
ンパイラはコーディングされたステートメントからキー
情報の値と、受け側設定キー情報の値と、キー情報のチ
ェックルーチンと、キー情報の設定ルーチンを生成す
る。
【0012】送り側設定キー情報はコンパイラにより生
成されない。送り側設定キー情報値は、コンパイラによ
り生成されたキー情報設定ルーチンによってプログラム
が実際に走行する時に設定される。キー情報は、キー情
報に対応する情報について、それらの間の同一性をチェ
ックするためのものである。従って、キー情報に対応す
る情報からのキー情報の生成は、同一の方法、同一の規
則で生成されればよい。
【0013】ここでの例では、キー情報の生成は、全て
キー情報の対応となる名称の各文字のASCIIコード
値を全加算することによってキー情報の生成を行ってい
る。関数キーは関数名称文字のASCIIコードを加算
して生成する。パラメータキーはパラメータフィールド
名称文字のASCIIコードとパラメータ属性名称文字
のASCIIコードを全加算して生成する。
【0014】図2において、送信側関数キー30は、図
4の行位置62で指定したコール先の関数名「func
2」より生成される。行位置62の「func2」の各
文字のASCIIコードを全加算してキー情報値「47
8」を得る。図2において、送信側パラメータキー31
は図4の行位置52、58、55、56のパラメータ定
義名を用いて生成される。ここでのキー情報は、チェッ
クの精度を向上させるため、単にフィールド名称のみで
なくパラメータの属性定義も合わせてキー情報を生成す
る。
【0015】第1パラメータ「p1d」のキー情報値
は、行位置52のパラメータ名「p1d」の加算値「2
61」と属性定義「int」の加算値「331」を加算
してキー情報値「592」を得る。同様にして、第2パ
ラメータ「p2d」のキー情報値は、行位置58のパラ
メータ名「p2d」の加算値「262」と属性定義
「*」の加算値「42」を加算して「304」を得る。
第3パラメータ「p3d」のキー情報値は、行位置55
のパラメータ名「p3d」の加算値「263」と属性定
義「char」の加算値「414」を加算して「67
7」を得る。第4パラメータ「p4d」のキー情報値
は、行位置56のパラメータ名「p4d」の加算値「2
64」と属性定義「char」の加算値「414」を加
算して「678」を得る。
【0016】このようにパラメータキー情報では、パラ
メータ名称のみではなく属性定義も加味してキー情報を
作成するため、パラメータ名称の誤りのみではなく、属
性定義の誤りも検出することが出来ることになる。図3
において、受信側関数キー40は図5の行位置71での
受信側関数名「func2」より生成される。行位置7
1の「func2」の各文字のASCIIコードを加算
してキー情報値「478」を得る。
【0017】図3において、受信側パラメータキー41
は図5の行位置72、77、75、76のパラメータ定
義名、及びパラメータ属性定義名より生成される。第1
パラメータ「p1d」のキー情報値は、行位置72のパ
ラメータ名「p1d」の加算値「261」と属性定義
「int」の加算値「331」を加算してキー情報値
「592」を得る。同様にして、第2パラメータ「p2
d」のキー情報値は、行位置77のパラメータ名「p2
d」の加算値「262」と属性定義「*」の加算値「4
2」を加算して「304」を得る。第3パラメータ「p
3d」のキー情報値は、行位置75のパラメータ名「p
3d」の加算値「263」と属性定義「char」の加
算値「414」を加算して「677」を得る。第4パラ
メータ「p4d」のキー情報値は、行位置76のパラメ
ータ名「P4d」の加算値「264」と属性定義「ch
ar」の加算値「414」を加算して「678」を得
る。
【0018】図2において、送信側パラメータ設定キー
32の「p1」、「p2」、「p3」の「son」はコ
ンパイラでは生成されない。コンパイラでは、設定キー
を設定するための設定ルーチンが生成される。送信側パ
ラメータ設定キー32の「p1」、「p2」、「p3」
の「son」は、プログラム実行時、図4の行位置5
9、60、61の各ステートメントの直後に埋め込まれ
た設定キー設定ルーチンによって生成される。
【0019】第1パラメータ「p1」の「son」は行
位置59のステートメント「p1=10」が実行された
後、その直後に埋め込まれた設定キー設定ルーチンによ
って生成される。同様にして、第2パラメータ「p2」
の「son」は行位置60のステートメント「p2=&
p2a」が実行された後、その直後に埋め込まれた設定
キー設定ルーチンによって生成される。第3パラメータ
「p3」の「son」は行位置61のステートメント
「p2−>p3d=30」が実行された後、その直後に
埋め込まれた設定キー設定ルーチンによって生成され
る。ここで、「son」は送信パラメータ情報が設定さ
れたことを意味する。
【0020】図2において、送信側パラメータ設定キー
32の「p4」の「ron」は、図4の行位置56のパ
ラメータ定義の入出力指定を基にして、コンパイラによ
り生成される。ここでは、第4パラメータ「p4」は行
位置56で「in」指定されているため、「ron」が
生成される。「ron」は返信パラメータ情報が設定さ
れてくること意味する。
【0021】図3において、受信側パラメータ設定キー
42の「p1」、「p2」、「p3」の「son」は、
図5の行位置73、77、75のパラメータ定義の入出
力指定を基にして、コンパイラにより生成される。第1
パラメータ「p1」は行位置73で「in」指定されて
いるため、「son」が生成される。第2パラメータ
「p2」は行位置77で「in」指定されているため、
「son」が生成される。第3パラメータ「p3」は行
位置75で「in」指定されているため、「son」が
生成される。ここで、「son」は送信パラメータ情報
が設定されてくることを意味する。
【0022】図3において、受信側パラメータ設定キー
42の「p4」の「ron」は、コンパイラでは生成さ
れない。コンパイラでは、設定キーを設定するための設
定ルーチンが生成される。受信側パラメータ設定キー4
2の「p4」の「ron」は、プログラム実行時、行位
置78のステートメント「p2−>p4d=40」が実
行された後に、その直後に埋め込まれた設定キー設定ル
ーチンによって生成される。なお、図2において、送信
側パラメータ33は、関数コール時、送信側関数50と
受信側関数70とで送受信される実際のパラメータ情報
である。
【0023】次に、キー設定ルーチン、キーチェックル
ーチンの生成方法の詳細を、図2〜図5を用いて説明す
る。ここで、キー設定ルーチンはパラメータ情報が設定
された時、対応するパラメータ設定キー情報を設定する
機能を持つ。また、キーチェックルーチンは双方のチェ
ック対象のキー情報が一致しているか否かを判定する機
能を持つ。
【0024】図2において、パラメータ設定キー設定ル
ーチン34は、図4で行位置59、60、61の各ステ
ートメントがそれぞれ実行されると、送信側パラメータ
設定キー32の「P1」、「P2」、「P3」のパラメ
ータ設定キーフラグがそれぞれ「son」となるような
ルーチンで、コンパイラによって生成される。設定ルー
チンは、「p1」を「son」とする機能部分が行位置
59の直後に、「p2」を「son」とする機能部分が
行位置60の直後に、「p3」を「son」とする機能
部分が行位置61の直後に、それぞれ埋め込まれる。こ
こで、「son」フラグは、送信パラメータが設定され
たことを意味する。
【0025】図2において、パラメータ設定キーチェッ
クルーチン35は、図4で行位置62の関数コールの実
行終了時、コール先の受信側関数70からの返信情報で
ある受信側パラメータ設定キー42の「p4d」の「r
on」をチェックするためのルーチンで、コンパイラー
により生成される。チェックルーチンは送信側関数50
内の行位置62の関数コールステートメントの直後の位
置に埋め込まれる。
【0026】図3において、関数キーチエックルーチン
43は、図5の受信側関数70が関数コールされて実行
される時、送信されてきた送信側側関数キー30をチェ
ックするためのルーチンで、コンパイラにより生成され
る。チェックルーチンは受信側関数70内の処理先頭位
置に埋め込まれる。図3において、パラメータキーチェ
ックルーチン44は、図5の受信側関数70が関数コー
ルされて実行される時、送信されてきた送信側パラメー
タキー31をチェックするためのルーチンで、コンパイ
ラーにより生成される。チェックルーチンは受信側関数
70内の処理先頭位置に埋め込まれる。
【0027】図3において、パラメータ設定キーチエッ
クルーチン45は、図5の受信側関数70が関数コール
されて実行される時、送信されてきた送信側パラメータ
設定キー32をチェックするためのルーチンで、コンパ
イラーにより生成される。チェックルーチンは受信側関
数70内の処理先頭位置に埋め込まれる。図3におい
て、パラメータ設定キー設定ルーチン46は、図5で行
位置78のステートメントが実行されると、受信側パラ
メータ設定キー42の「P4」のパラメータ設定キーフ
ラグが「ron」となるようなルーチンで、コンパイラ
によって生成される。設定ルーチンは、受信側関数70
内の行位置78のステートメントの直後に埋め込まれ
る。ここで、「ron」フラグは返信パラメータが設定
されたことを意味する。
【0028】次に、関数コール時のキー情報のチェック
処理の流れの詳細を図2〜図5を用いて説明する。図4
において、送信側関数50の実行が開始されたとする。
関数の実行が進行し行位置59の「p1=10」ステー
トメントが実行されると、その直後に埋め込まれた設定
ルーチンにより、図2の送信側パラメータ設定キー32
の「p1」に[son」フラグが設定される。同様に、
行位置60の「p2=&p2a」のステートメントが実
行されると、その直後に埋め込まれた設定ルーチンによ
り、送信側パラメータ設定キー32の「p2」に[so
n」フラグが設定される。行位置61の「p2−>p3
d=30」のステートメントが実行されると、その直後
に埋め込まれた設定ルーチンにより、送信側パラメータ
設定キー32の「p3」に[son」フラグが設定され
る。以上のように、パラメータ設定キーは、実際に対応
するパラメータが設定された時に設定される。
【0029】ここでもし、図4の行位置59の「p1=
10」のステートメントの作成が漏れていたとすれば、
それに対応する設定ルーチンは生成されないため、図2
の送信側パラメータ設定キー32の「p1」の「so
n」が設定されないことになり、関数コール実行時、コ
ール先関数でのパラメータ設定キーチェックにより「s
on」のチェックがなされ、「son」不一致によりチ
ェック異常となり、プログラム障害の通知がなされるこ
とになる。
【0030】さらに関数の実行が進行し、図4の行位置
62の「func2(p1、p2)」が実行される時、
図2の送信側パラメータ33のみならず、コンパイル時
に編集された送信側関数キー30、送信側パラメータキ
ー31、及び関数実行時に設定した送信側パラメータ設
定キー32が図5の受信側関数70に引き渡される。関
数コールが実行されると、処理実行はコールした送信関
数50からコールされた受信側関数70に移行する。
【0031】関数コールされた受信側関数70では、自
関数内の処理を開始する前に、自関数内に持つキーチエ
ックルーチンを用いて、引き渡されたキー情報と自関数
内に持つキー情報とを比較チェックする。比較して一致
すれば、引き続いて関数処理を実行するが、不一致であ
れば、割り込みを用いて、その場でプログラムの障害情
報を端末に出力し、試験者に通知した後に、関数処理を
続行することになる。関数コールされた受信側関数70
では、自関数内の処理を開始する前に、関数キーチェッ
クルーチン43を用いて、引き渡された送信側関数キー
30のキー情報値「478」と自関数内に持つ受信側関
数キー40のキー情報値「478」とを比較する。この
例では同一値のため、比較した結果は一致し、チェック
正常として障害の通知はなしに次の処理に進む。
【0032】同様にして、受信側関数70では、引き続
きパラメータキーチェックルーチン44を用いて、引き
渡された送信側パラメータキー31の「p1d+in
t」の「592」、「p2d+*」の「304」、「P
3d+char」の「677」、「p4d+char」
の「678」と自関数内に持つ受信側パラメータキー4
1の「p1d+int」の「592」、「p2d+*」
の「304」、「P3d+char」の「677」、
「p4d+char」の「678」とをそれぞれ比較す
る。この例では全て同一値のため、比較結果は一致し、
チェック正常として障害の通知はなしに次の処理に進
む。
【0033】さらに、受信側関数70では、引き続きパ
ラメータ設定キーチェックルーチン45を用いて、引き
渡された送信側パラメータ設定キー32の「p1」の
「son」、「p2」の「son」、「p3」の「so
n」と自関数内に持つ受信側パラメータ設定キー42の
「p1」の「son」、「p2」の「son」、「p
3」の「son」とをそれぞれ比較する。この例では全
て同一植のため、比較結果は一致し、チェック正常とし
て障害の通知はなしに次の処理に進む。
【0034】ここで、送信側関数50が受信側関数70
に引き渡す30、31のキー情報値は送信側関数50で
定義した関数名、パラメータ名より生成したものであ
り、一方、受信側関数で保持する40、41のキー情報
値は、受信側関数で定義した関数名、パラメータ名より
生成したものである。従って、もし送信側関数50での
関数名、パラメータ名の定義を誤って、受信側関数70
で定義した関数名、パラメータ名とは異なる定義を行っ
てしまった場合、それによって生成されるキー情報値は
送信側と受信側で異なってくる。このため、このような
場合には関数コール時に、キー情報をチェックすると不
一致となり、この不一致の情報から関数名、パラメータ
名の設定誤りを検出することができることになる。
【0035】図2〜図5の例では関数名、パラメータ名
に誤りのない場合の例であるため、図2の送信側キー情
報値と図3の受信側キー情報値は全て一致している。し
かし、例えば送信側関数50の行位置53でパラメータ
定義名を「p1d」から「pxd」に誤ったとすれば、
図2の送信側パラメータキー31の第1パラメータキー
は、「p1d+int」ではなく「pxd+int」と
なり、キー情報値は「592」ではなく、「639」と
なる。これによって、関数コール実行時、キー情報のチ
ェックを行うと、送信側のキー情報値と受信側のキー情
報値は異なるため、キー情報値の比較不一致でキー情報
チェック異常となり、これから第1パラメータ「px
d」の誤りを検出できる。
【0036】通常、定義名の不一致は定義名を単純に間
違ったというよりは、機能的に定義名を取り違えている
場合が多い。このため、単純な定義名のチェックだとし
ても、それを実行すれば、機能的誤りを検出する契機と
することができる。したがって、単純な定義名のチェッ
クを実行することによって機能的誤りの検出を期待でき
る。
【0037】パラメータ設定キーは、パラメータの受信
側で、パラメータが設定されるべきか否かのフラグを持
ち、パラメータの送信側で実際にパラメータが設定され
た時に設定フラグがオンとなるようにし、この双方の設
定フラグを関数コール実行時に一致しているか否かをチ
ェックすることによって、送信パラメータの設定漏れを
検出しようとする。このパラメータ設定漏れの検出はコ
ンパイラ、リンカーによるスタティックなプログラムの
論理チェックで行おうとすると、チェックが複雑とな
り、その実現は難しい。しかし、本例のようにパラメー
タ設定忘れの検出をダイナミックにプログラムの実行時
に行うようにすれば、その検出チェックは容易となる。
【0038】図5において、受信側関数70では、関数
がコールされた時のキー情報のチェック処理実行が終了
すると、自関数内の処理の実行を開始する。処理実行が
進行し、受信側関数70の行位置78の「p2−>p4
d=40」のステートメントが実行されると、その直後
に埋め込まれた設定ルーチンにより、図3の受信側パラ
メータ設定キー42の「p4」に「ron」が設定され
る。ここで、「ron」は第4パラメータにデータが設
定されたことを意味する。
【0039】さらに受信側関数70内の実行が進行し、
関数コールされた受信側関数70の処理が終了する時、
関数コールした送信側関数50へのパラメータ返信情報
がある場合は、パラメータ返信情報以外に、パラメータ
返信情報に対応したパラメータ設定キー情報が返送され
る。ここでは、図3の受信側パラメータ設定キー42の
「p4」の「ron」が送信側関数50に返送される。
【0040】受信側関数70の処理が終了し、関数コー
ルを行った送信側関数50に処理実行が帰還すると、送
信側関数50では、コール先の受信側関数70からの返
信パラメータ情報がある場合、自関数処理を再開する前
に、返信パラメータ情報に対応するパラメータ設定キー
情報をチェックする。送信側関数50では、パラメータ
設定キーチェックルーチン35を用いて、受信側関数7
0から返信された受信側パラメータ設定キー42の「p
4」の「ron」と送信側パラメータ設定キー32の
「p4」の「ron」とを比較チェックする。
【0041】比較して一致すれば、正常として処理を続
行し、不一致であれば異常として、誤りを検出するため
のプログラムの障害情報を、割り込みを用いてその場で
端末装置に出力する。本例の場合は同一値のため、比較
結果は一致し、チェック正常として障害の通知はなしに
次の処理に進む。
【0042】もしここで、受信側関数70の行位置78
での第4パラメータの設定が漏れていれば、それに対応
する設定ルーチンは生成されないため、受信側パラメー
タ設定キー42の「p4」には「ron」が設定されな
くなり、帰還した場合の設定キー情報チェックで設定キ
一情報不一致となり、第4パラメータの設定漏れが検出
できる。
【0043】このように本発明は、関数をコールする側
の関数と関数をコールされる側の関数で、各々使用する
関数名、パラメータ名及びパラメータ設定有無情報に対
してキー情報を作成し、関数コール実行時に双方で作成
したキー情報を照合させることによって、関数インター
フェース情報である関数名、パラメータ名、パラメータ
設定有無の誤りを検出するものである。即ち、関数コー
ルを行う送信側関数では、コール対象の関数名からその
コール対象の関数名に対応した関数キー情報をコンパイ
ル時に生成し、この関数キー情報は関数名に一意的に対
応する。一方、コールされる側の受信側関数では、受信
側関数名より、その受信側関数名に対応した関数キー情
報と、関数コール時に受信する関数キー情報をチェック
するための関数キー情報チェックルーチンがコンパイル
時に生成される。そして、関数コール実行時、コールす
る側の送信側関数では、コール対象の関数名から生成し
た関数キー情報をコールされる側の受信側関数にパラメ
ータ情報と共に引き渡す。受信側関数では、受信側関数
名より生成した関数キー情報と、引き波された関数キー
情報とを関数キー情報チェックルーチンを用いて比較
し、一致すれば、関数コール正常として処理を続行し、
不一致であれば、関数コール誤りとして、誤りを検出す
るためのプログラム障害情報を図示しない端末装置に出
力する。
【0044】同様にして、パラメータキー情報の場合
は、コールする側の送信側関数では、コール対象の関数
のパラメータの定義名から、パラメータキー情報がコン
パイル時に生成される。コールされる側の受信側関数で
は、受信側関数のパラメ∵タ定義名に対応したパラメー
タキー情報と、関数コール時に受信するパラメータキー
情報をチェックするためのパラメータキー情報チェック
ルーチンがコンパイル時に生成される。そして、関数コ
ール実行時、コールする側の送信側関数では、そのコー
ル対象の関数のパラメータの定義名より生成したパラメ
ータキー情報をコールされる側の受信側関数にパラメー
タ情報と共に引き渡す。受信側関数では、受信側関数の
パラメータ定義名より生成した関数パラメータキー情報
と、引き渡された関数パラメータキー情報とをパラメー
タキー情報チェックルーチンを用いて比較し、一致すれ
ば関数コール正常として処理を続行し、不一致であれば
関数コール誤りとして、誤りを検出するためのプログラ
ムの障害情報を端末装置に出力する。
【0045】また、パラメータ設定キー情報の場合は、
コールする側の送信側関数では、変数ではなくイミディ
エイトのデータが対応するパラメータに設定された時に
設定フラグをオンとするパラメータ設定キー情報設定ル
ーチンと、そのコール対象の関数のパラメータ定義に基
づいたパラメータ設定キー情報と、パラメータ設定キー
情報をチェックするためのパラメータ設定キー情報チェ
ックルーチンとがコンパイル時に生成される。そして、
コールされる側の受信側関数では、受信側関数のパラメ
ータ定義に基づいたパラメータ設定キー情報と、パラメ
ータ設定キー情報をチェックするためのパラメータ設定
キー情報チェックルーチンと、対応する返信パラメータ
に、変数ではなくイミディエイトのデータが設定された
時に設定フラグをオンとするパラメータ設定キー情報設
定ルーチンとが、コンパイル時に生成される。
【0046】ここで、関数コール実行時、コールする側
の送信側関数では、関数パラメータ情報と共に、パラメ
ータ設定キー情報を引き渡す。コールされる側の受信側
関数では、受信したパラメータ設定キー情報と受信側関
数のパラメータ定義より生成したパラメータ設定キー情
報とをパラメータ設定キー情報チェックルーチンを用い
て比較し、一致すれば、関数コール正常として処理を続
行し、一致しなければ、関数コール誤りとして誤りを検
出するためのプログラムの障害情報を端末装置に出力す
る。そして、関数コール終了時、コールされる側の受信
側関数では、返信パラメータと共に、パラメータ設定キ
ー情報をコールした送信側関数に引き渡す。送信側関数
では、返信されたパラメータ設定キー情報と、そのコー
ル対象の関数のパラメータ定義より生成したパラメータ
設定キー情報とをパラメータ設定キー情報チェックルー
チンにより比較し、一致すれば、関数コール正常として
処理を続行し、一致しなければ、関数コール誤りとして
誤りを検出するためのプログラムの障害情報を端末装置
に出力する。
【0047】
【発明の効果】以上説明したように本発明によれば、関
数コール時に受信側関数で受信した関数キー情報により
関数名インタフェースの正常性をその場で自動的にチェ
ックし、関数名インタフェースが誤っていた場合、誤り
の事象がその時点で試験者に通知されるため、誤りを容
易に検出できる。また、関数コール時に受信側関数で受
信したパラメータキー情報により関数パラメータ名イン
タフェースの正常性をその場で自動的にチェックし、関
数パラメータ名インタフェースが誤っていた場合、誤り
の事象がその時点で試験者に通知されるため、同様に誤
りを容易に検出できる。また、関数コール時に受信側関
数で受信したパラメータ設定キー情報により関数パラメ
ータ設定インタフェースの正常性をその場で自動的にチ
ェックし、関数パラメータ設定インタフェースが誤って
いた場合、誤りの事象がその時点で試験者に通知される
ため、同様に誤りを容易に検出できる。また、関数コー
ル終了時に受信側関数から返信されたパラメータ設定キ
ー情報に基づき送信側関数で関数パラメータ設定インタ
フェースの正常性をその場で自動的にチェックし、関数
パラメータ設定インタフェースが誤っていた場合、誤り
の事象がその時点で試験者に通知されるため、同様に誤
りを容易に検出できる。
【図面の簡単な説明】
【図1】 本発明の要部構成を示す機能ブロック図であ
る。
【図2】 送信側関数の機能を説明する図である。
【図3】 受信側関数の機能を説明する図である。
【図4】 送信側関数の機能動作のコーディング例を示
す図である。
【図5】 受信側関数の機能動作のコーディング例を示
す図である。
【図6】 従来の構成を示す機能ブロック図である。
【符号の説明】
10,20…部分ロードモジュール、11…送信側関
数、12…送信側キー情報、13…送信側パラメータ情
報、14,24…キー情報設定ルーチン、15,23…
キー情報チェックルーチン、21…受信側関数、22…
受信側キー情報、30…送信側関数キー、31…送信側
パラメータキー、32…送信側パラメータ設定キー、3
3…送信側パラメータ、34,46…パラメータ設定キ
ー設定ルーチン、35,45…パラメータ設定キーチェ
ックルーチン、40…受信側関数キー、41…受信側パ
ラメータキー、42…受信側パラメータ設定キー、43
…関数キーチェックルーチン、44…パラメータキーチ
ェックルーチン。

Claims (4)

    【特許請求の範囲】
  1. 【請求項1】 それぞれが関数部を有する複数のプログ
    ラムモジュールを備え、各プログラムモジュールの関数
    部間のインタフェースをチェックする方法であって、 送信側モジュールの関数部では、関数コール時にコール
    する関数名から生成した関数キー情報をコールされる受
    信側モジュールの関数部に送信し、受信側モジュールの
    関数部では、受信した関数キー情報と受信側関数名から
    生成した関数キー情報とを関数キー情報チェックルーチ
    ンにより比較し、不一致が検出されるとプログラムの障
    害通知を行うことを特徴とする関数インタフェースのチ
    ェック方法。
  2. 【請求項2】 それぞれが関数部を有する複数のプログ
    ラムモジュールを備え、各プログラムモジュールの関数
    部間のインタフェースをチェックする方法であって、 送信側モジュールの関数部では、関数コール時にコール
    する関数のパラメータ名より生成したパラメータキー情
    報をコールされる受信側モジュールの関数部に送信し、
    受信側モジュールの関数部では、受信したパラメータキ
    ー情報と受信側関数のパラメータ名から生成したパラメ
    ータキー情報とをパラメータキー情報チェックルーチン
    により比較し、不一致が検出されるとプログラムの障害
    通知を行うことを特徴とする関数インタフェースのチェ
    ック方法。
  3. 【請求項3】 それぞれが関数部を有する複数のプログ
    ラムモジュールを備え、各プログラムモジュールの関数
    部間のインタフェースをチェックする方法であって、 送信側モジュールの関数部では、関数コール時にパラメ
    ータが設定された時フラグがオンとなるパラメータ設定
    キー情報をコールされる受信側モジュールの関数部に送
    信し、受信側モジュールの関数部では、受信したパラメ
    ータ設定キー情報と受信側関数のパラメータ定義より生
    成したパラメータ設定キー情報とをパラメータ設定キー
    情報チェックルーチンにより比較し、不一致が検出され
    るとプログラムの障害通知を行うことを特徴とする関数
    インタフェースのチェック方法。
  4. 【請求項4】 それぞれが関数部を有する複数のプログ
    ラムモジュールを備え、各プログラムモジュールの関数
    部間のインタフェースをチェックする方法であって、 送信側モジュールの関数部から関数コールされると受信
    側モジュールの関数部は、関数コールの終了時に、送信
    側モジュール宛に返信パラメータが設定されたときフラ
    グがオンとなるパラメータ設定キー情報を送信側モジュ
    ールの関数部に返信し、送信側モジュールの関数部で
    は、返信されたパラメータ設定キー情報とコール対象関
    数のパラメータ定義より生成したパラメータ設定キー情
    報とをパラメータ設定キー情報チェックルーチンにより
    比較し、不一致が検出されるとプログラムの障害通知を
    行うことを特徴とする関数インタフェースのチェック方
    法。
JP09167089A 1997-06-24 1997-06-24 関数インタフェースのチェック方法 Expired - Fee Related JP3141817B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP09167089A JP3141817B2 (ja) 1997-06-24 1997-06-24 関数インタフェースのチェック方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP09167089A JP3141817B2 (ja) 1997-06-24 1997-06-24 関数インタフェースのチェック方法

Publications (2)

Publication Number Publication Date
JPH1115694A true JPH1115694A (ja) 1999-01-22
JP3141817B2 JP3141817B2 (ja) 2001-03-07

Family

ID=15843223

Family Applications (1)

Application Number Title Priority Date Filing Date
JP09167089A Expired - Fee Related JP3141817B2 (ja) 1997-06-24 1997-06-24 関数インタフェースのチェック方法

Country Status (1)

Country Link
JP (1) JP3141817B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010072670A (ja) * 2008-09-16 2010-04-02 Amano Corp 駐車場管理システム
JP2012185732A (ja) * 2011-03-07 2012-09-27 Nec Corp 情報処理装置、プログラム不正検知方法、およびプログラム不正検知プログラム
JP2016177537A (ja) * 2015-03-20 2016-10-06 富士通株式会社 コンパイラ、コンパイル装置、および、コンパイル方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010072670A (ja) * 2008-09-16 2010-04-02 Amano Corp 駐車場管理システム
JP2012185732A (ja) * 2011-03-07 2012-09-27 Nec Corp 情報処理装置、プログラム不正検知方法、およびプログラム不正検知プログラム
JP2016177537A (ja) * 2015-03-20 2016-10-06 富士通株式会社 コンパイラ、コンパイル装置、および、コンパイル方法

Also Published As

Publication number Publication date
JP3141817B2 (ja) 2001-03-07

Similar Documents

Publication Publication Date Title
US7469362B2 (en) Using a call stack hash to record the state of a process
JP3631647B2 (ja) ソフトウェアテスト方法
US20070271617A1 (en) Vulnerability check program, vulnerability check apparatus, and vulnerability check method
CN110109818A (zh) 后端接口数据的监测方法、装置、终端及可读存储介质
CN101404696A (zh) 可视化业务流程跟踪方法和系统、业务流程处理系统
US20140130016A1 (en) Offline type checking in programming languages
KR101579493B1 (ko) 소스코드 이관제어 방법 및 이를 위한 컴퓨터 프로그램, 그 기록매체
CN108628739A (zh) 一种对Lua脚本进行调试的方法、客户端、服务器及调试器
CN112230903B (zh) 一种基于iOS应用的轻量级解耦式埋点方法及装置
JP3141817B2 (ja) 関数インタフェースのチェック方法
US7137041B2 (en) Methods, systems and computer program products for resolving problems in an application program utilizing a situational representation of component status
US7500144B2 (en) Resolving problems in a business process utilizing a situational representation of component status
US20200042296A1 (en) Code lineage tool
Savor et al. Toward automatic detection of software failures
Lee et al. Development of verification and conformance testing tools for a railway signaling communication protocol
US20090287950A1 (en) Error management framework
Chung et al. Testing of concurrent programs after specification changes
Affeldt et al. Formalization and verification of a mail server in Coq
US5721753A (en) Recording verification system
US10802805B2 (en) Code lineage tool
CN109039813A (zh) 一种检测因特网接入的方法、系统及设备
CN118035087A (zh) 一种故障注入的优化方法及终端
CN109918270B (zh) 多服务器系统、侦错方法、系统及电子设备和存储介质
US20220027261A1 (en) Method and device for operating fuzz testing of a program code
CN115118387A (zh) Irig-b码的解码方法、解码器、设备及存储介质

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20071222

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20081222

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091222

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091222

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101222

Year of fee payment: 10

LAPS Cancellation because of no payment of annual fees