JPS61134843A - プログラム構造処理システム - Google Patents

プログラム構造処理システム

Info

Publication number
JPS61134843A
JPS61134843A JP59256768A JP25676884A JPS61134843A JP S61134843 A JPS61134843 A JP S61134843A JP 59256768 A JP59256768 A JP 59256768A JP 25676884 A JP25676884 A JP 25676884A JP S61134843 A JPS61134843 A JP S61134843A
Authority
JP
Japan
Prior art keywords
routine
name
referenced
program
routine name
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
Application number
JP59256768A
Other languages
English (en)
Inventor
Yoshiaki Tsuwa
津和 義昭
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 JP59256768A priority Critical patent/JPS61134843A/ja
Publication of JPS61134843A publication Critical patent/JPS61134843A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 技術分野 本発明はプログラム構造処理システムに関し、特に対象
プログラム内のルーチン群の参照被参照関係が明確化す
るためのプログラム構造の処理システムに関する。
従来技術 一般に、プログラムにおいて、「どのルーチンがどのル
ーチンを参照しているか」という情報と「どのルーチン
がどのルーチンから参照されているか」という情報は、
そのプログラムの規模、特にルーチン数の規模が大きく
なればなるほど重要である。前者は通常コンパイラによ
って出力されるが後者は出力されない。後者はプログラ
ムの改造時やバグ対処時には重要な役割シを果すもので
ある。そこで、後者の情報を得るだめに構造明示プログ
ラムが必要となる。従来この構造明示プログラムは以下
のように処理されている。
対象プログラムのソーステキストを1行づつ読込み、そ
の1行の文字列を1文字1文字訓べてコンパイル単位の
先頭(例えば、そのプログラムがFORTRANで書か
れていれば、5UBROUTINE文やFUNCTIO
N文など)を識別する。そして、そのルーチン名(例え
ば、5UBROUTINE  5UB4ならばSUB 
I )を取出し、そのルーチン名を第1図に示す計算機
のメモリ内の参照ルーチン名の所に書き込む。その後再
びソーステキストを1行づつ読込み、その1行の文字列
を1文字1文字訓べて次のコンパイル単位の先頭を識別
するまで、他ルーチンの参照文(例えば、そのプログラ
ムがFORTRANで書かれていればCALL文など)
を識別する。そしてその参照されているルーチン名を第
1図に示す計算機のメモリ内の被参照ルーチン名の所に
書き込む。その後、上記の操作と同一の操作をくり返す
。この操作を対象プログラムの全ソーステキストに対し
て行う。
以上により、第1図に示した形の参照・被参照テーブル
ができあがる。このテーブルをその形のままで印字する
と「どのルーチンがどのルーチンを参照しているか」の
情報が印字されたことになる。
次に、第1図の1番目の参照ルーチン名を印字し、その
ルーチン名が第1図の被参照ルーチン名の部分にあるか
どうかを調べ、もしあれば、その行の参照ルーチン名を
印字する。この操作を第1明 図の全被参照ルーチン名の部分に対して行う。更に、第
1図の2番目の参照ルーチンに対して同様の操作を行う
。この操作を第1図のすべての参照ルーチンに対して行
うと「どのルーチンがどのルーチンから参照されている
か」が印字されたことに々る。
従って、この手段を用いる七、 (1)対象プログラムのソーステキストの全行の文字列
の識別に、極めて多大な時間がかかるとと; (2)第1図に示した被参照ルーチン名を書き込んでお
く計算機のメモリ容量が多量に必要となる(例えば、対
象プログラムが1000個のルーチンから構成されてお
り、各ルーチンは他ルーチンを最大30ルーチン参照し
たとし、ルーチン名称を平均6文字と仮定すると、通常
1文字あたシ8ビットが必要となるので、1000ルー
チン×30ルーチン/1ルーチン×6文字/1ルーチン
×Bビット/1文字=1440000ビット必要となる
)とと; (3)「どのルーチンがどのルーチンから参照されてい
るか」という情報を得るために、第1図の被参照ルーチ
ン名の全部分を対象プログラムの全ルーチン数に等しい
回数だけ識別する必要があるので時間がかかること; 等の欠点がある。
発明の目的 本発明の目的は、上述の欠点を除去し、構造明示プログ
ラムの処理速度を上げること更には使用メモリ容量をへ
らすことが可能なプログラム構造処理システムを提供す
ることである。
発明の構成 本発明によるプログラム構造処理システムは、ルーチン
群の参照・被参照関係が明確化されるべき対象プログラ
ムをコンパイルするコンパイラ力ら出力されるリファレ
ンスリストを用いてとの対象プログラムのプログラム構
造を調べるプログラム構造処理システムを対象としてお
シ、その特徴とするところは、当該リファレンスリスト
の各レコードを順次導出して各レコードに含まれるルー
チン名を見出しこのルーチン名を順次並べたルーチン名
テーブルを作成する手段と、このルーチン名テーブルを
記憶する記憶手段と、このルーチン名の数N(Nは正の
整数)に対応したN×Nビットのマトリックステーブル
を格納する格納手段と、リファレンスリストの各コンパ
イル単位がルーチン名テーブルのi番目(iけ0<i≦
Nなる整数)のルーチンであることを判定する手段と、
このi番目のルーチンであるコンパイル単位が参照して
いるルーチン名がルーチン名テーブルのj番目(jはo
<j≦Nなる整数)のルーチンであることを判定する手
段と、これ等判定結果によりマトリックステーブルのi
行j列のビットをオンとする手段とを含み、このマトリ
ックステーブルのビットのオンオフに応じて当該対象プ
ログラム内のルーチン群の参照・被参照関係を得るよう
にしたことにある。
実施例 以下、本発明の一実施例について図面を参照して詳細に
説明する。
一般に、コンパイラの出力するリファレンスリストはコ
ンパイラによって異なるが、いずれもコンパイラごとに
確定した形式になっておシ、第2図に例示するように、
必ず「コンパイル単位に付与されたルーチン名」、「そ
のルーチンから参照している他ルーチンのルーチン名」
を含んでいる。
以下、当実施例では、第2図の形のリファレンスリスト
を出力するコンパイラを想定して記述するが、実質的に
は出力形式の異なるコンパイラに対しても同等のことが
実施できることは明白である。
本発明では、構造明示プログラムの入力を、対象プログ
ラムをコンパイルした時に出力されるリファレンスリス
トのイメージを磁気記憶媒体に格納したもの(以下、リ
ファレンスイメージファイルと記す)とする。よって、
コンパイラの出力をリストへの出力ではなく、磁気記憶
媒体への出力とする。か\る点を考慮して第3図に示す
本発明の実施例の機能ブロックが得られる。
第3図において、11はコンパイラの出力である岨 リファレンスリストを格納する格納部であってリファレ
ンスイメージファイルである。15は、このリファレン
スイメージファイル11内のリファレンスリストを用い
てルーチン群のルーチン名を検索し、ルーチン名テーブ
ルを作成するルーチン名作成部であシ、このルーチン名
テーブルは磁気記憶媒体からなるルーチン名格納部12
へ格納される。
16は、リファレンスリストと当該ルーチン名テーブル
とを用いてN×Nビットマトリックス形式の参照・被参
照テーブルを作成するN×Nビットマトリックス作成部
であり、このマトリックステーブルは磁気記憶媒体から
なるN×Nビットマトリックス格納部13へ格納される
17は、とのN×Nビットマトリックスの行及び列方向
の検索を行ってi行j列のビットのオンオフ状態を検出
するだめの検索部でアシ、この検索結果はプリンタ14
により可視表示されるようになっている。尚、18は制
御部であり、上記各構成部11〜17を制御する機能を
有する。
第4図はこの第3図のブロックの動作の大要を示すフロ
ーチャートであり、リファレンスイメージファイル11
を入力して、「どのルーチンがどのルーチンを参照して
いるか」という情報と、「どのルーチンがどのルーチン
から参照されているか」という情報を得て、これを可視
表示するまでのフローである。
一〇−/II%1 第4図の処理1では、第5図に示す形式のルーチン名テ
ーブルを作成している。この処理1の詳細は第6図に示
されている。第6図の処理1−1は対象プログラムのル
ーチン数カウンタの初期値設定である。処理1−2では
、リファレンスイメージファイル11のルコードを読込
んでいる。処理1−3では処理1−2で読込んだ情報が
リファレンスイメージファイルの最後のレコードの情報
に等しいかどうかを判定している。これは、処理の繰り
返しがリファレンスイメージファイルの最後のレコード
が読み込まれた時に終了するようにしたもので、計算機
に処理を行わせる場合の通常手段である。
処理1−4は、処理1−2で読込んだ情報が目的として
いるルーチン名を含んだレコードであるかどうかを判定
している。処理1−5では、ルーチン名を含んだレコー
ドが見つかったので、ルーチン数カウンタを1だけ増加
させている。処理1−6では処理1−4で見つけたレコ
ード内のルーチン名をルーチン名テーブルに登録しこれ
をルーチン名テーブル格納部12へ格納する。
第4図の処理2では、第7図に示す形の参照・被参照テ
ーブルを磁気記憶媒体13上に作成している。この処理
2の詳細は第8図に示されており、第8図の処理2−1
は、ルーチン名テーブルの何番目のルーチンについて、
参照・被参照テーブルを作成するかを示す添字を初期化
している。処理2−2では、参照・被参照テーブルの確
保と初期化をしている。処理2−3では、リファレンス
イメージファイルのルコードを読込んでいる。処理2−
4では、処理2−3で読込んだ情報がリファレンスイメ
ージファイルの最後のレコードの情報に等しいかどうか
を判定しており、第6図の処理1−3と同一の意味を持
つ。
処理2−5及び処理2−6では、処理2−3で読込んだ
情報が、リファレンスイメージファイルノコンパイル単
位の先頭であるかどうかを判定しておシ、コンパイル単
位の先頭である場合に、そのコンパイル単位がルーチン
名テーブルの何番目のルーチンであるかを示す添字の値
を設定している。処理2−7では、処理2−3で読込ん
だ情報が、該コンパイル単位が参照しているルーチン名
を含んでいる情報に等しいかどうか判定している。
処理2−8では、該コンパイル単位が参照しているルー
チンが、ルーチン名テーブルの何番目にあるかを調べて
いる。処理2−9では、参照・被参照テーブルに、ルー
チン名テーブルのi番目のルーチンが、ルーチン名テー
ブルのj番目のルーチンを参照していることを登録して
いる。
第4図の処理3では、「どのルーチンがとのルーチンを
参照しているか」という情報を印字している。この処理
の詳細は第9図に示されている。
第9図の処理3−1では、ルーチン名テーブルの何番目
の′−チアが他の′−チ′を参照するのか     I
を示すための添字の初期化を行っている。処理3−2で
は、参照する側のルーチン名を印字している。処理3−
3では、参照されるルーチンをさがしてそれらを印字し
ている。処理3−4では、参照する側の全ルーチンにつ
いて処理を完了したか判定している。処理3−5では、
次の参照する側のルーチンとして、ルーチン名テーブル
の次のルーチン名を指すように添字を1だけ増加させて
いる。
第4図の処理4では、「どのルーチンがどのルーチンか
ら参照されているか」という情報を印字している。この
処理の詳細は第1O図に示されている。第10図の処理
4−1では、ルーチン名テーブルの何番目のルーチンが
、他のルーチンから参照されているのかを示すだめの添
字の初期化を行っている。処理4−2では、参照される
側のルーチン名を印字している。処理4−3では、参照
するルーチンをさがしてそれらを印字している。処理4
−4では、参照される側の全ルーチンについて処理を完
了したか判定している。処理4−5では、次の参照され
る側のルーチンとして、ルーチン名テーブルの次のルー
チン名を指すように添字を1だけ増加させている。
以上のようにして、所期の目的である「どのルーチンが
どのルーチンを参照しているか」という情報と[どのル
ーチンがどのルーチンから参照されている」という情報
とを得ることができるのである。
本発明によれば、対象プログラムに対してコンパイラの
出力するリファレンスイメージファイルを、本発明によ
るプログラム構造明示プログラムの入力とすることで、
従来のプログラム構造明示プログラムの行っていた、対
象プログラムの全ソーステキストの文字列検索による、
コンパイル単位の先頭および他ルーチンの参照をさがす
操作を極めて容易にし、処理時間を短縮するという効果
がある。更には、磁気記憶媒体のビットのオン。
オフを、プログラム構造明示プログラム内の参照・被参
照テーブルにとシ入れたことで、プログラム構造明示プ
ログラムの必要メモリ容量が少なくなシ、処理時間も短
縮されるという効果がある。
【図面の簡単な説明】
第1図は従来のプログラム構造明示用プログラムにおけ
る参照・被参照テーブルを示す図、第2図はコンパイラ
により出力されたリファレンスリストを示す図、第3図
は本発明の実施例の概略ブロック図、第4図は第3図の
ブロックの動作の大要を示すフローチャート、第5図は
ルーチン名テーブルを示す図、第6図は第4図のフロー
における処理1の詳細フローチャート、第7図は参照・
被参照テーブルを示す図、第8〜第10図は第4図のフ
ローにおける処理2〜4の夫々の詳細を示すフローチャ
ートである。 主要部分の符号の説明

Claims (1)

    【特許請求の範囲】
  1. ルーチン群の参照・被参照関係が明確化されるべき対象
    プログラムをコンパイルするコイパラから出力されるリ
    フアレンスリストを用いて前記対象プログラムのプログ
    ラム構造を調べるプログラム構造処理システムであつて
    、前記リフアレンスリストの各レコードを順次導出して
    各レコードに含まれるルーチン名を見出しこのルーチン
    名を順次並べたルーチン名テーブルを作成する手段と、
    このルーチン名テーブルを記憶する記憶手段と、前記ル
    ーチン名の数N(Nは正の整数)に対応したN×Nビッ
    トのマトリツクステーブルを格納する格納手段と、前記
    リフアレンスリストの各コンパイル単位が前記ルーチン
    名テーブルのi番目(iは0<i≦Nなる整数)のルー
    チンであることを判定する手段と、このi番目のルーチ
    ンであるコンパイル単位が参照しているルーチン名が前
    記ルーチン名テーブルのj番目(jは0<j≦Nなる整
    数)のルーチンであることを判定する手段と、これ等判
    定結果により前記マトリツクステーブルのi行j列のビ
    ットをオンとする手段とを含み、このマトリツクステー
    ブルのビットのオンオフに応じて前記対象プログラム内
    のルーチン群の参照・被参照の関係を得るようにしたこ
    とを特徴とするプログラム構造処理システム。
JP59256768A 1984-12-05 1984-12-05 プログラム構造処理システム Pending JPS61134843A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP59256768A JPS61134843A (ja) 1984-12-05 1984-12-05 プログラム構造処理システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP59256768A JPS61134843A (ja) 1984-12-05 1984-12-05 プログラム構造処理システム

Publications (1)

Publication Number Publication Date
JPS61134843A true JPS61134843A (ja) 1986-06-21

Family

ID=17297174

Family Applications (1)

Application Number Title Priority Date Filing Date
JP59256768A Pending JPS61134843A (ja) 1984-12-05 1984-12-05 プログラム構造処理システム

Country Status (1)

Country Link
JP (1) JPS61134843A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6385825A (ja) * 1986-09-29 1988-04-16 Hitachi Ltd ソフトウエア・モジユ−ル間関係認識方式
JPH0497426A (ja) * 1990-08-15 1992-03-30 Nec Corp 言語処理プログラムのリスト出力方式

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6385825A (ja) * 1986-09-29 1988-04-16 Hitachi Ltd ソフトウエア・モジユ−ル間関係認識方式
JPH0497426A (ja) * 1990-08-15 1992-03-30 Nec Corp 言語処理プログラムのリスト出力方式

Similar Documents

Publication Publication Date Title
EP0370777B1 (en) Method for processing digital text data
US4650349A (en) Speed typing apparatus and method
JPS61134843A (ja) プログラム構造処理システム
JPH03233670A (ja) テキストデータ変換方式
JPS5819934A (ja) 情報作成装置
JP2907840B2 (ja) 翻訳方法及び装置
JPH0752450B2 (ja) 辞書デ−タ検索装置
JP2982180B2 (ja) 文章作成装置
JPH0484261A (ja) 誤り表記検索方式
Knee An evaluation of the UNIVAC 1100/82 text editor as an alternative word processor for generating a newspaper index
JPH05134853A (ja) プログラムソース言語変換装置
KR900013804A (ko) 교환기 프로세서의 프리타임 분석방법
EHRMAN et al. FORMAT, a text processing program
JPH0332109B2 (ja)
JPH01304574A (ja) 目次索引作成装置
Barnes R68-26 Some Techniques for Accuracy Improvement in Analog Computation
Roistacher On-line computer text processing: A tutorial
JPH096783A (ja) 索引作成装置
JPS583083A (ja) 印刷編集方式
JPS63214794A (ja) 文字フオントデ−タの管理方式
Freedman R68-25 An On-Line Editor
Pylyshyn Findsit: A computer program for language research
Anderson The design and implementation of a display-oriented editor writing system
JPH031271A (ja) インデント文字の自動設定方法
JPH0816594A (ja) 文書自動マーク付け装置