図面 (/)

技術 プログラムのデータ構造を表示する方法、データ構造表示装置及びデータ構造表示プログラムを格納する媒体

出願人 インターナショナル・ビジネス・マシーンズ・コーポレーション
発明者 四野見秀明藤井邦和
出願日 1996年4月12日 (24年7ヶ月経過) 出願番号 1996-090744
公開日 1997年10月31日 (23年0ヶ月経過) 公開番号 1997-282150
状態 特許登録済
技術分野 ストアードプログラム制御 ストアードプログラム ストアードプログラム
主要キーワード 桁ずれ 方向レベル マグネットテープ Y座標 X座標 物理的領域 数字項目 境界合わせ
関連する未来課題
重要な関連分野

この項目の情報は公開日時点(1997年10月31日)のものです。
また、この項目は機械的に抽出しているため、正しく解析できていない場合があります

図面 (20)

課題

プログラムにおけるデータ構造記憶域上での配置を視覚的かつ、直感的に理解することを支援するシステム及び方法を提供する。

解決手段

ユーザは、マウスポインタによりプログラム中のデータ項目クリックすることにより、データ項目の指定を行う。システムは、プログラムで定義されているデータ項目の各々について、オフセット情報を算出する。再定義が存在する場合、被再定義データ項目のオフセット加算され、オフセットが計算される。各データ項目はデータ項目の階層に従った順序付けで、同一オフセットのデータ項目が1行として表示される。その行には、オフセットの数字が付加され、行は点線によって区分けされる。

概要

背景

他人が書いた既存のプログラム保守しなければならない状況は、ソフトウェアライフサイクルにおいては、非常に頻繁に発生し、ライフサイクル全体のコストの80%は保守に費やされているという報告もある。既存のプログラムの保守においては、使用されているデータの構造を正確に把握することが重要である。データの構造の不正確な把握によって保守作業が行われた場合は、既に作成されているデータ領域へ意図しない新たなデータを上書きしまうことや、意図しないデータ領域に書き込みを行ったために、後に書き込みを行ったデータにより消滅することもある。また、金額等の領域においては、データを誤って認識し(例えば、1桁ずれた領域で再定義を行った場合、1,000,000円を10,000,000円と認識)、取り返しの付かない重大なシステム障害や、運用上の障害発展する可能性がある。

このため、プログラムの保守を行うに際しては、入念なテストが必要であり、テスト、コーディングミス発見、コーディングの修正コンパイル再テストという工程を正常稼働に至まで反復する必要がある。この一方、新規に作成するプログラムにおいてもデータ領域を正しく定義する必要があり、これに失敗した場合は、上記問題を生ずるため、既存のプログラムの保守のみならず、新規にプログラムを開発する過程においても、データの構造の正確な把握とデータ領域の正しい定義は重要である。

また、PL/I、COBOL、 C、 Fortran、アセンブラ、Pascal等の多くのプログラム言語において、一旦定義したデータ領域を再定義するコーディング方法が採用されている。このデータ領域を再定義するコーディング方法は、共通の物理的領域レコード長レコード属性等の異なる複数の異なるデータ項目で定義するため、データの構造を正確に把握することの難易度が増大する傾向にある。また、データ領域を定義したコーディングと、再定義したコーディングは、物理的に離れた位置に表示されることが多く、データ領域を定義するデータ項目の数が増大するにつれ、離れた位置に存在することとなり、プログラムのコーディングを見るだけでデータの構造を正確に把握することの難易度が増大する傾向はさらに強くなる。

このため、プログラム開発プログラム解析を迅速かつ正確に行うための、プログラムにおけるデータ構造記憶域上での配置を視覚的かつ、直感的に理解することを支援するシステム及び方法の出現が望まれてきた。

かかる従来の問題に関連して、M. A.Jacksonは、Data-Structure Diagram (以下「Jacson Diagram」という)を用いた方式を提案している(J.Martin, C. McClure, "Structutre Techniquies: The Basis for CASE",PRENTICEHALL, Englewood Cliffs, N.J. 07632. Page 209.)。このJacson Diagramは、図 に示すように、データ領域のデータ構造を、各データ項目の階層関係を示すhierarchy chartを用いて視覚的に表現している。しかし、Jacson Diagramは、プログラムの設計時に使用されるものであり、既存もしくはコーディング途中のプログラムのデータ構造を理解しやすい形式で表現するためのものではない。また、Jacson Diagramはデータ構造の階層関係を表現するのみであり、各データ項目が記憶域上でどのような領域を占め、どのように重なり合っているのかを表現することはできない。

また、IBM Technical Disclosure Bulletin、JA892-1240MT, K. Fujii and H. Shinomiは、再定義したデータ構造のコーディングを、一旦定義したデータ構造のコーディングの先頭位置と一致させ、その傍らに表示させるという方式を提案している。この方式は、定義したデータ構造のコーディングと再定義したデータ構造のコーディングを同時に認識することが可能となるが、各データ項目の記憶域上の重なり合いを直感的に表現することはできない。また、アライメントによる境界合わせも表現できない。

特開平7−230379はソースプログラムのデータ構造をレコード階層構造に従った構造図で表示する方式を提案している。この構造図により表示する方式は、各データ項目が記憶域上でどのような領域を占め、どのように重なり合っているのかを表現することはできるが、定義領域と再定義領域の対応関係を明確に表現することはできない。また、この方式は、メモリサイズを箱の横方向の長さで表現しようとしているが、ユーザが開発・使用している一般的なプログラムでは、そのサイズがあまりにも大き過ぎて直感的に表現できるように表示することは困難である。また、その表示の方式もコーディングと近い表現ではなく、プログラマにとってプログラムを変更するための資料としては抽象的である。また、この方式は、図形的な表現を行っているため、GUIグラフカル・ユーザ・インターフェス)を必要としている。

概要

プログラムにおけるデータ構造と記憶域上での配置を視覚的かつ、直感的に理解することを支援するシステム及び方法を提供する。

ユーザは、マウスポインタによりプログラム中のデータ項目をクリックすることにより、データ項目の指定を行う。システムは、プログラムで定義されているデータ項目の各々について、オフセット情報を算出する。再定義が存在する場合、被再定義データ項目のオフセット加算され、オフセットが計算される。各データ項目はデータ項目の階層に従った順序付けで、同一オフセットのデータ項目が1行として表示される。その行には、オフセットの数字が付加され、行は点線によって区分けされる。

目的

この発明の目的は、プログラム中で使用されているデータの構造の階層関係、記憶域上での配置と占める範囲を視覚的に表示することにより、プログラマがデータの構成を正確かつ効果的に理解することを可能にするシステムを提供することにある。

この発明の他の目的は、プログラムにおけるデータ構造と記憶域上での配置を視覚的かつ、直感的に理解することを可能にするシステムを提供することにある。

この発明のさらに他の目的は、大きなデータ構造に対しても、レベル毎に詳細の表示を省略することにより、データのアライメントやデータ領域の重なり等を一目で把握することができることを可能にするシステムを提供することにある。

この発明のさらに他の目的は、プログラム言語に依存せずあらゆる言語に対応することのできる表示方式を提供することにある。

効果

実績

技術文献被引用数
1件
牽制数
2件

この技術が所属する分野

ライセンス契約や譲渡などの可能性がある特許掲載中! 開放特許随時追加・更新中 詳しくはこちら

請求項1

コンピュータに記憶されたプログラムが使用するデータのデータ構造データ項目名、データ項目階層情報データ項目属性情報、データ項目長情報を含む複数のデータ項目によって定義する複数のデータ領域定義ブロックを含み、少なくとも第1のデータ領域定義ブロックに含まれる被再定義データ項目をデータ項目再定義情報により再定義する第2のデータ領域定義ブロックが存在するデータ領域定義部分のデータ構造を表示するためのコンピュータにおいて実行される方法であって、(a) 前記第1のデータ領域定義ブロックのデータ項目階層情報を解析し、前記第1データ領域定義ブロック中の階層関係関係付けを行い、前記第2のデータ領域定義ブロックのデータ項目階層情報を解析し、前記第2データ領域定義ブロック中の階層関係の関係付けを行うことによって、複数のデータ項目エントリを含むデータ構造情報を作成する段階と、(b) 前記第2のデータ領域定義ブロックのデータ項目再定義情報を解析し、前記第1データ領域定義ブロック中の被再定義データ項目と、前記第2のデータ領域定義ブロックの再定義関係の関係付けを行い、前記被再定義データ項目と、前記再定義データ項目に対応するデータ項目エントリを更新する段階と、(c) 前記データ項目長情報に基づいて、前記第1のデータ領域定義ブロックに含まれるデータ項目の各々についてデータ項目オフセット情報導出し、前記データ項目エントリに付加する段階と、(d) 前記データ項目長情報と前記データ項目再定義情報と前記被再定義データ項目のオフセット情報に基づいて、前記第2のデータ領域定義ブロックに含まれるデータ項目の各々についてデータ項目オフセット情報を導出し、前記データ項目エントリに付加する段階と、(e) 前記データ項目階層情報に従った順序付けで、前記第1のデータ領域定義ブロックと、前記第2のデータ領域定義ブロックに含まれるデータ項目を同一オフセットのデータ項目オフセット情報を有しているデータ項目のデータ項目名から1行として表示されるべき行データを作成する段階と、(f) 前記行データに含まれるデータ項目名の各々に各データ項目名が表示される場所を示す位置情報を関連付ける段階と、(g) 前記行データに含まれるデータ項目名を前記位置情報によって指定された位置に表示する段階と、を含む方法。

請求項2

コンピュータに記憶されたプログラムが使用するデータのデータ構造をデータ項目名、データ項目階層情報、データ項目長情報を含む複数のデータ項目によって定義する複数のデータ領域定義ブロックを含み、少なくとも第1のデータ領域定義ブロックに含まれる被再定義データ項目を再定義する第2のデータ領域定義ブロックが存在するデータ領域定義部分のデータ構造を表示するためのコンピュータにおいて実行される方法であって、(a) 前記データ項目長情報に基づいて、前記第1のデータ領域定義ブロックに含まれるデータ項目の各々についてデータ項目オフセット情報を導出する段階と、(b) 前記データ項目長情報と前記被再定義データ項目のオフセット情報に基づいて、前記第2のデータ領域定義ブロックに含まれるデータ項目の各々についてデータ項目オフセット情報を導出する段階と、(c) 前記データ項目階層情報に従った順序付けで、前記第1のデータ領域定義ブロックと、前記第2のデータ領域定義ブロックに含まれるデータ項目を同一オフセットのオフセット情報を有しているデータ項目のデータ項目名を1行として出力する段階と、を含む方法。

請求項3

コンピュータに記憶されたプログラムが使用するデータのデータ構造をデータ項目名、データ項目階層情報、データ項目属性情報、データ項目長情報を含む複数のデータ項目によって定義する複数のデータ領域定義ブロックを含み、少なくとも第1のデータ領域定義ブロックに含まれる被再定義データ項目をデータ項目再定義情報により再定義する第2のデータ領域定義ブロックが存在するデータ領域定義部分のデータ構造を表示するためのコンピュータにおいて実行される方法であって、(a) 前記第1のデータ領域定義ブロックのデータ項目階層情報を解析し、前記第1データ領域定義ブロック中の階層関係の関係付けを行う段階と、(b) 前記第2のデータ領域定義ブロックのデータ項目階層情報を解析し、前記第2データ領域定義ブロック中の階層関係の関係付けを行う段階と、(c) 前記第2のデータ領域定義ブロックのデータ項目再定義情報を解析し、前記第1データ領域定義ブロック中の被再定義データ項目と、前記第2のデータ領域定義ブロックの再定義関係の関係付けを行う段階と、(d) 前記データ項目長情報に基づいて、前記第1のデータ領域定義ブロックに含まれるデータ項目の各々についてデータ項目オフセット情報を導出する段階と、(e) 前記データ項目長情報と前記データ項目再定義情報と前記被再定義データ項目のオフセット情報に基づいて、前記第2のデータ領域定義ブロックに含まれるデータ項目の各々についてデータ項目オフセット情報を導出する段階と、(f) 前記データ項目階層情報に従った順序付けで、前記第1のデータ領域定義ブロックと、前記第2のデータ領域定義ブロックに含まれるデータ項目を同一オフセットのデータ項目オフセット情報を有しているデータ項目のデータ項目名を1行として表示する段階と、(g) 前記同一オフセットのオフセット情報を有しているデータ項目のデータ項目オフセット情報を前記データ項目名が表示された行に関連付けて表示する段階と、を含む方法。

請求項4

コンピュータに記憶されたプログラムが使用するデータのデータ構造をデータ項目名、データ項目階層情報、データ項目属性情報、データ項目長情報を含む複数のデータ項目によって定義する複数のデータ領域定義ブロックを含み、少なくとも第1のデータ領域定義ブロックに含まれる被再定義データ項目をデータ項目再定義情報により再定義する第2のデータ領域定義ブロックが存在するデータ領域定義部分のデータ構造を表示する装置であって、(a) 前記データ項目名と、前記第1のデータ領域定義ブロックと前記第2のデータ領域定義ブロックのデータ項目階層情報を解析することによって作成された階層関係情報と、前記データ項目再定義情報を解析することによって作成された再定義関係情報と、前記第1のデータ領域定義ブロックに含まれるデータ項目の場合は、前記データ長によって計算され、前記第2のデータ領域定義ブロックに含まれるデータ項目の場合は、前記データ長と前記被再定義データ項目のオフセット情報に基づいて計算されたデータ項目オフセット情報とを含む複数のデータ項目エントリを作成する手段と、(b) 前記複数のデータ項目エントリから、同一オフセットのオフセット情報を有するデータ項目エントリを特定する手段と、(c) 前記特定されたデータ項目エントリのデータ項目名を前記階層関係情報に従った順序付けで連結することによって、行データを作成する手段と、(d) 前記行データに含まれるデータ項目名の各々に各データ項目名が表示される場所を示す位置情報を関連付ける手段と、(e) 前記行データに含まれるデータ項目名を前記位置情報によって指定された位置に表示する手段と、を含む装置。

請求項5

コンピュータに記憶されたプログラムが使用するデータのデータ構造をデータ項目名、データ項目階層情報、データ項目長情報を含む複数のデータ項目によって定義する複数のデータ領域定義ブロックを含み、少なくとも第1のデータ領域定義ブロックに含まれる被再定義データ項目を再定義する第2のデータ領域定義ブロックが存在するデータ領域定義部分のデータ構造を表示する装置であって、(a) 前記データ項目長情報に基づいて、前記第1のデータ領域定義ブロックに含まれるデータ項目の各々についてデータ項目オフセット情報を導出する手段と、(b) 前記データ項目長情報と前記被再定義データ項目のオフセット情報に基づいて、前記第2のデータ領域定義ブロックに含まれるデータ項目の各々についてデータ項目オフセット情報を導出する手段と、(c) 前記データ項目階層情報に従った順序付けで、前記第1のデータ領域定義ブロックと、前記第2のデータ領域定義ブロックに含まれるデータ項目を同一オフセットのオフセット情報を有しているデータ項目のデータ項目名を1行として出力する手段と、を含む装置。

請求項6

表示装置と、入力装置を有しており、コンピュータに記憶されたプログラムが使用するデータのデータ構造をデータ項目名、データ項目階層情報、データ項目属性情報、データ項目長情報を含む複数のデータ項目によって定義する複数のデータ領域定義ブロックを含み、少なくとも第1のデータ領域定義ブロックに含まれる被再定義データ項目をデータ項目再定義情報により再定義する第2のデータ領域定義ブロックが存在するデータ領域定義部分のデータ構造を表示する装置であって、表示装置と、入力装置を有しており、コンピュータに記憶されたプログラムが使用するデータのデータ構造をデータ項目名、データ項目階層情報、データ項目属性情報、データ項目長情報を含む複数のデータ項目によって定義する複数のデータ領域定義ブロックを含み、少なくとも第1のデータ領域定義ブロックに含まれる被再定義データ項目をデータ項目再定義情報により再定義する第2のデータ領域定義ブロックが存在するデータ領域定義部分のデータ構造を表示する装置であって、(a) 前記表示装置に前記プログラムを表示する手段と、(b) 前記プログラム中のデータ項目がユーザによって特定されたことを検出する手段と、(c) 前記特定されたデータ項目のデータ構造を表示することのユーザからの指示を検出する段階と、(d) 前記ユーザからの指示に応答して、前記データ項目名と、前記第1のデータ領域定義ブロックと前記第2のデータ領域定義ブロックのデータ項目階層情報を解析することによって作成された階層関係情報と、前記データ項目再定義情報を解析することによって作成された再定義関係情報と、前記第1のデータ領域定義ブロックに含まれるデータ項目の場合は、前記データ長によって計算され、前記第2のデータ領域定義ブロックに含まれるデータ項目の場合は、前記データ長と前記被再定義データ項目のオフセット情報に基づいて計算されたデータ項目オフセット情報とを含む複数のデータ項目エントリを作成する手段と、(e) 前記複数のデータ項目エントリから、同一オフセットのオフセット情報を有するデータ項目エントリのデータ項目名を前記階層関係情報に従った順序付けで連結することによって、オフセット情報を有する行データを作成する手段と、(f) 前記行データに含まれるデータ項目名の各々に前記表示装置において各データ項目名が表示される場所を示す位置情報を関連付ける手段と、(g) 前記行データに含まれるデータ項目名を前記表示装置の指定された位置に表示する手段と、(h) 前記行データのオフセット情報を前記指定された位置に関連付けて前記表示装置に表示する手段と、を含む装置。

請求項7

コンピュータに記憶されたプログラムが使用するデータのデータ構造をデータ項目名、データ項目階層情報、データ項目長情報を含む複数のデータ項目によって定義する複数のデータ領域定義ブロックを含み、少なくとも第1のデータ領域定義ブロックに含まれる被再定義データ項目を再定義する第2のデータ領域定義ブロックが存在するデータ領域定義部分のデータ構造を表示するためのプログラムを格納するコンピュータによって読み取り可能な記憶媒体であって、(a) 前記データ項目長情報に基づいて、前記第1のデータ領域定義ブロックに含まれるデータ項目の各々についてデータ項目オフセット情報を導出することを前記コンピュータに指示するプログラムコード手段と、(b) 前記データ項目長情報と前記被再定義データ項目のオフセット情報に基づいて、前記第2のデータ領域定義ブロックに含まれるデータ項目の各々についてデータ項目オフセット情報を導出することを前記コンピュータに指示するプログラムコード手段と、(c) 前記データ項目階層情報に従った順序付けで、前記第1のデータ領域定義ブロックと、前記第2のデータ領域定義ブロックに含まれるデータ項目を同一オフセットのオフセット情報を有しているデータ項目のデータ項目名を1行として表示することを前記コンピュータに指示するプログラムコード手段と、を含む記憶媒体。

技術分野

0001

この発明は、例えば、プログラムにおけるデータ構造記憶域上での配置を視覚的かつ、直感的に理解することを支援するシステム及び方法に関するものである。

背景技術

0002

他人が書いた既存のプログラムを保守しなければならない状況は、ソフトウェアライフサイクルにおいては、非常に頻繁に発生し、ライフサイクル全体のコストの80%は保守に費やされているという報告もある。既存のプログラムの保守においては、使用されているデータの構造を正確に把握することが重要である。データの構造の不正確な把握によって保守作業が行われた場合は、既に作成されているデータ領域へ意図しない新たなデータを上書きしまうことや、意図しないデータ領域に書き込みを行ったために、後に書き込みを行ったデータにより消滅することもある。また、金額等の領域においては、データを誤って認識し(例えば、1桁ずれた領域で再定義を行った場合、1,000,000円を10,000,000円と認識)、取り返しの付かない重大なシステム障害や、運用上の障害発展する可能性がある。

0003

このため、プログラムの保守を行うに際しては、入念なテストが必要であり、テスト、コーディングミス発見、コーディングの修正コンパイル再テストという工程を正常稼働に至まで反復する必要がある。この一方、新規に作成するプログラムにおいてもデータ領域を正しく定義する必要があり、これに失敗した場合は、上記問題を生ずるため、既存のプログラムの保守のみならず、新規にプログラムを開発する過程においても、データの構造の正確な把握とデータ領域の正しい定義は重要である。

0004

また、PL/I、COBOL、 C、 Fortran、アセンブラ、Pascal等の多くのプログラム言語において、一旦定義したデータ領域を再定義するコーディング方法が採用されている。このデータ領域を再定義するコーディング方法は、共通の物理的領域レコード長レコード属性等の異なる複数の異なるデータ項目で定義するため、データの構造を正確に把握することの難易度が増大する傾向にある。また、データ領域を定義したコーディングと、再定義したコーディングは、物理的に離れた位置に表示されることが多く、データ領域を定義するデータ項目の数が増大するにつれ、離れた位置に存在することとなり、プログラムのコーディングを見るだけでデータの構造を正確に把握することの難易度が増大する傾向はさらに強くなる。

0005

このため、プログラム開発プログラム解析を迅速かつ正確に行うための、プログラムにおけるデータ構造と記憶域上での配置を視覚的かつ、直感的に理解することを支援するシステム及び方法の出現が望まれてきた。

0006

かかる従来の問題に関連して、M. A.Jacksonは、Data-Structure Diagram (以下「Jacson Diagram」という)を用いた方式を提案している(J.Martin, C. McClure, "Structutre Techniquies: The Basis for CASE",PRENTICEHALL, Englewood Cliffs, N.J. 07632. Page 209.)。このJacson Diagramは、図 に示すように、データ領域のデータ構造を、各データ項目の階層関係を示すhierarchy chartを用いて視覚的に表現している。しかし、Jacson Diagramは、プログラムの設計時に使用されるものであり、既存もしくはコーディング途中のプログラムのデータ構造を理解しやすい形式で表現するためのものではない。また、Jacson Diagramはデータ構造の階層関係を表現するのみであり、各データ項目が記憶域上でどのような領域を占め、どのように重なり合っているのかを表現することはできない。

0007

また、IBM Technical Disclosure Bulletin、JA892-1240MT, K. Fujii and H. Shinomiは、再定義したデータ構造のコーディングを、一旦定義したデータ構造のコーディングの先頭位置と一致させ、その傍らに表示させるという方式を提案している。この方式は、定義したデータ構造のコーディングと再定義したデータ構造のコーディングを同時に認識することが可能となるが、各データ項目の記憶域上の重なり合いを直感的に表現することはできない。また、アライメントによる境界合わせも表現できない。

0008

特開平7−230379はソースプログラムのデータ構造をレコード階層構造に従った構造図で表示する方式を提案している。この構造図により表示する方式は、各データ項目が記憶域上でどのような領域を占め、どのように重なり合っているのかを表現することはできるが、定義領域と再定義領域の対応関係を明確に表現することはできない。また、この方式は、メモリサイズを箱の横方向の長さで表現しようとしているが、ユーザが開発・使用している一般的なプログラムでは、そのサイズがあまりにも大き過ぎて直感的に表現できるように表示することは困難である。また、その表示の方式もコーディングと近い表現ではなく、プログラマにとってプログラムを変更するための資料としては抽象的である。また、この方式は、図形的な表現を行っているため、GUIグラフカル・ユーザ・インターフェス)を必要としている。

発明が解決しようとする課題

0009

この発明の目的は、プログラム中で使用されているデータの構造の階層関係、記憶域上での配置と占める範囲を視覚的に表示することにより、プログラマがデータの構成を正確かつ効果的に理解することを可能にするシステムを提供することにある。

0010

この発明の他の目的は、プログラムにおけるデータ構造と記憶域上での配置を視覚的かつ、直感的に理解することを可能にするシステムを提供することにある。

0011

この発明のさらに他の目的は、大きなデータ構造に対しても、レベル毎に詳細の表示を省略することにより、データのアライメントやデータ領域の重なり等を一目で把握することができることを可能にするシステムを提供することにある。

0012

この発明のさらに他の目的は、プログラム言語に依存せずあらゆる言語に対応することのできる表示方式を提供することにある。

課題を解決するための手段

0013

本発明によれば、プログラムを入力とし、その中で使用されているデータの構造の階層関係、記憶域上での配置と占める範囲を視覚的に表示することにより、プログラマがデータの構造を正確かつ効果的に理解することを可能にするシステム及び方法が提供される。

0014

本発明の1の態様においては、第1、第2のデータ領域定義ブロックのデータ項目階層情報解析し、第1、第2データ領域定義ブロック中の階層関係の関係付けを行うことによって、複数のデータ項目エントリを含むデータ構造情報を作成する段階と、第2のデータ領域定義ブロックのデータ項目再定義情報を解析し、第1データ領域定義ブロック中の被再定義データ項目と、第2のデータ領域定義ブロックの再定義関係の関係付けを行い、被再定義データ項目と、再定義データ項目に対応するデータ項目エントリを更新する段階と、データ項目長情報に基づいて、第1のデータ領域定義ブロックに含まれるデータ項目の各々についてデータ項目オフセット情報導出し、データ項目エントリに付加する段階と、データ項目長情報とデータ項目再定義情報と被再定義データ項目のオフセット情報に基づいて、第2のデータ領域定義ブロックに含まれるデータ項目の各々についてデータ項目オフセット情報を導出し、データ項目エントリに付加する段階と、データ項目階層情報に従った順序付けで、第1のデータ領域定義ブロックと、第2のデータ領域定義ブロックに含まれるデータ項目を同一オフセットのデータ項目オフセット情報を有しているデータ項目のデータ項目名から1行として表示されるべき行データを作成する段階と、行データに含まれるデータ項目名の各々に各データ項目名が表示される場所を示す位置情報を関連付ける段階と、行データに含まれるデータ項目名を位置情報によって指定された位置に表示する段階とを含むコンピュータに記憶されたプログラムが使用するデータのデータ構造をデータ項目名、データ項目階層情報、データ項目属性情報、データ項目長情報を含む複数のデータ項目によって定義する複数のデータ領域定義ブロックを含み、少なくとも第1のデータ領域定義ブロックに含まれる被再定義データ項目をデータ項目再定義情報により再定義する第2のデータ領域定義ブロックが存在するデータ領域定義部分のデータ構造を表示するためのコンピュータにおいて実行される方法が提供される。この「データ項目エントリ」は、本発明の好適な実施例において後述する、図5の各データ項目に相当する構造300に対応する概念であるが、このエントリにおいて管理しているオフセット情報等が各データ項目固有に関連付けられていれば、どのようなデータの持ち方を行ってもよい。

0015

本発明の他の1態様においては、データ項目長情報に基づいて、第1のデータ領域定義ブロックに含まれるデータ項目の各々についてデータ項目オフセット情報を導出する段階と、データ項目長情報と被再定義データ項目のオフセット情報に基づいて、第2のデータ領域定義ブロックに含まれるデータ項目の各々についてデータ項目オフセット情報を導出する段階と、データ項目階層情報に従った順序付けで、第1のデータ領域定義ブロックと、第2のデータ領域定義ブロックに含まれるデータ項目を同一オフセットのオフセット情報を有しているデータ項目のデータ項目名を1行として出力する段階とを含むコンピュータに記憶されたプログラムが使用するデータのデータ構造をデータ項目名、データ項目階層情報、データ項目長情報を含む複数のデータ項目によって定義する複数のデータ領域定義ブロックを含み、少なくとも第1のデータ領域定義ブロックに含まれる被再定義データ項目を再定義する第2のデータ領域定義ブロックが存在するデータ領域定義部分のデータ構造を表示するためのコンピュータにおいて実行される方法が提供される。なお、ここでいう「出力」とは、LCD、CRT等の表示画面に表示させることや、プリンタによって、用紙、帳票等の媒体印刷すること、記憶装置にデータを書き出すこと、シリアルポートモデム通信回線等を介して、データを送信すること等を含む概念である。

0016

本発明の他の1態様においては、第1のデータ領域定義ブロックのデータ項目階層情報を解析し、第1データ領域定義ブロック中の階層関係の関係付けを行う段階と、第2のデータ領域定義ブロックのデータ項目階層情報を解析し、第2データ領域定義ブロック中の階層関係の関係付けを行う段階と、第2のデータ領域定義ブロックのデータ項目再定義情報を解析し、第1データ領域定義ブロック中の被再定義データ項目と、第2のデータ領域定義ブロックの再定義関係の関係付けを行う段階と、データ項目長情報に基づいて、第1のデータ領域定義ブロックに含まれるデータ項目の各々についてデータ項目オフセット情報を導出する段階と、データ項目長情報とデータ項目再定義情報と被再定義データ項目のオフセット情報に基づいて、第2のデータ領域定義ブロックに含まれるデータ項目の各々についてデータ項目オフセット情報を導出する段階と、データ項目階層情報に従った順序付けで、第1のデータ領域定義ブロックと、第2のデータ領域定義ブロックに含まれるデータ項目を同一オフセットのデータ項目オフセット情報を有しているデータ項目のデータ項目名を1行として表示する段階と、同一オフセットのオフセット情報を有しているデータ項目のデータ項目オフセット情報をデータ項目名が表示された行に関連付けて表示する段階と、を含むコンピュータに記憶されたプログラムが使用するデータのデータ構造をデータ項目名、データ項目階層情報、データ項目属性情報、データ項目長情報を含む複数のデータ項目によって定義する複数のデータ領域定義ブロックを含み、少なくとも第1のデータ領域定義ブロックに含まれる被再定義データ項目をデータ項目再定義情報により再定義する第2のデータ領域定義ブロックが存在するデータ領域定義部分のデータ構造を表示するためのコンピュータにおいて実行される方法が提供される。

0017

本発明の他の1態様においては、データ項目名と、第1のデータ領域定義ブロックと第2のデータ領域定義ブロックのデータ項目階層情報を解析することによって作成された階層関係情報と、データ項目再定義情報を解析することによって作成された再定義関係情報と、第1のデータ領域定義ブロックに含まれるデータ項目の場合は、データ長によって計算され、第2のデータ領域定義ブロックに含まれるデータ項目の場合は、データ長と被再定義データ項目のオフセット情報に基づいて計算されたデータ項目オフセット情報とを含む複数のデータ項目エントリを作成する手段と、複数のデータ項目エントリから、同一オフセットのオフセット情報を有するデータ項目エントリを特定する手段と、特定されたデータ項目エントリのデータ項目名を階層関係情報に従った順序付けで連結することによって、行データを作成する手段と、行データに含まれるデータ項目名の各々に各データ項目名が表示される場所を示す位置情報を関連付ける手段と、行データに含まれるデータ項目名を位置情報によって指定された位置に表示する手段とを含むコンピュータに記憶されたプログラムが使用するデータのデータ構造をデータ項目名、データ項目階層情報、データ項目属性情報、データ項目長情報を含む複数のデータ項目によって定義する複数のデータ領域定義ブロックを含み、少なくとも第1のデータ領域定義ブロックに含まれる被再定義データ項目をデータ項目再定義情報により再定義する第2のデータ領域定義ブロックが存在するデータ領域定義部分のデータ構造を表示する装置が提供される。

0018

本発明の他の1態様においては、データ項目長情報に基づいて、第1のデータ領域定義ブロックに含まれるデータ項目の各々についてデータ項目オフセット情報を導出する手段と、データ項目長情報と被再定義データ項目のオフセット情報に基づいて、第2のデータ領域定義ブロックに含まれるデータ項目の各々についてデータ項目オフセット情報を導出する手段と、データ項目階層情報に従った順序付けで、第1のデータ領域定義ブロックと、第2のデータ領域定義ブロックに含まれるデータ項目を同一オフセットのオフセット情報を有しているデータ項目のデータ項目名を1行として出力する手段とを含むコンピュータに記憶されたプログラムが使用するデータのデータ構造をデータ項目名、データ項目階層情報、データ項目長情報を含む複数のデータ項目によって定義する複数のデータ領域定義ブロックを含み、少なくとも第1のデータ領域定義ブロックに含まれる被再定義データ項目を再定義する第2のデータ領域定義ブロックが存在するデータ領域定義部分のデータ構造を表示する装置が提供される。

0019

本発明の他の1態様においては、表示装置にプログラムを表示する手段と、プログラム中のデータ項目がユーザによって特定されたことを検出する手段と、特定されたデータ項目のデータ構造を表示することのユーザからの指示を検出する段階と、ユーザからの指示に応答して、データ項目名と、第1のデータ領域定義ブロックと第2のデータ領域定義ブロックのデータ項目階層情報を解析することによって作成された階層関係情報と、データ項目再定義情報を解析することによって作成された再定義関係情報と、第1のデータ領域定義ブロックに含まれるデータ項目の場合は、データ長によって計算され、第2のデータ領域定義ブロックに含まれるデータ項目の場合は、データ長と被再定義データ項目のオフセット情報に基づいて計算されたデータ項目オフセット情報とを含む複数のデータ項目エントリを作成する手段と、複数のデータ項目エントリから、同一オフセットのオフセット情報を有するデータ項目エントリのデータ項目名を階層関係情報に従った順序付けで連結することによって、オフセット情報を有する行データを作成する手段と、行データに含まれるデータ項目名の各々に表示装置において各データ項目名が表示される場所を示す位置情報を関連付ける手段と、行データに含まれるデータ項目名を表示装置の指定された位置に表示する手段と、行データのオフセット情報を指定された位置に関連付けて表示装置に表示する手段と、含むコンピュータに記憶されたプログラムが使用するデータのデータ構造をデータ項目名、データ項目階層情報、データ項目属性情報、データ項目長情報を含む複数のデータ項目によって定義する複数のデータ領域定義ブロックを含み、少なくとも第1のデータ領域定義ブロックに含まれる被再定義データ項目をデータ項目再定義情報により再定義する第2のデータ領域定義ブロックが存在するデータ領域定義部分のデータ構造を表示する装置が提供される。

0020

本発明の他の1態様においては、データ項目長情報に基づいて、第1のデータ領域定義ブロックに含まれるデータ項目の各々についてデータ項目オフセット情報を導出することをコンピュータに指示するプログラムコード手段と、データ項目長情報と被再定義データ項目のオフセット情報に基づいて、第2のデータ領域定義ブロックに含まれるデータ項目の各々についてデータ項目オフセット情報を導出することをコンピュータに指示するプログラムコード手段と、データ項目階層情報に従った順序付けで、第1のデータ領域定義ブロックと、第2のデータ領域定義ブロックに含まれるデータ項目を同一オフセットのオフセット情報を有しているデータ項目のデータ項目名を1行として表示することをコンピュータに指示するプログラムコード手段とを含むコンピュータに記憶されたプログラムが使用するデータのデータ構造をデータ項目名、データ項目階層情報、データ項目長情報を含む複数のデータ項目によって定義する複数のデータ領域定義ブロックを含み、少なくとも第1のデータ領域定義ブロックに含まれる被再定義データ項目を再定義する第2のデータ領域定義ブロックが存在するデータ領域定義部分のデータ構造を表示するためのプログラムを格納するコンピュータによって読み取り可能な記憶媒体が提供される。この記憶媒体には、CD−ROM等の持ち運び可能な記憶媒体や、ハードディスク等のコンピュータに接続された記憶媒体、また、ネットワークを介してアクセス可能な記憶装置等を含む概念である。

0021

以下、図面を参照して本発明の実施例を説明する。図1を参照すると、本発明を実施するためのハードウェア構成概観図が示されている。システム100は、中央処理装置(CPU)1とメモリ4とを含んでいる。CPU1とメモリ4は、バス2を介して、補助記憶装置としてのハードディスク装置13とを接続してある。フロッピーディスク装置(またはMO、CD−ROM等の駆動装置)20はフロッピーディスクコントローラ19を介してバス2へ接続されている。

0022

フロッピーディスク装置(またはMO、CD−ROM等の駆動装置)20には、フロッピーディスク(またはMO、CD−ROM等の媒体)が挿入され、このフロッピーディスク等やハードディスク装置13、ROM14には、オペレーティングシステム協働してCPU等に命令を与え、本発明を実施するためのコンピュータ・プログラムのコードを記録することができ、メモリ4にロードされることによって実行される。このコンピュータ・プログラムのコードは圧縮し、または、複数に分割して、複数の媒体に記録することもできる。

0023

システム100は更に、ユーザ・インターフェースハードウェアを備えたシステムとすることができ、ユーザ・インターフェース・ハードウェアとしては、例えば、入力をするためのポインティングデバイスマウスジョイスティック等)7またはキーボード6や、視覚データをユーザに提示するためのディスプレイ12がある。また、パラレルポート16を介してプリンタを接続することや、シリアルポート15を介してモデムを接続することが可能であり、シリアルポート15およびモデムまたは通信アダプタ18を介して他のコンピュータと通信を行うことが可能である。

0024

従って、本発明は、通常のパーソナルコンピュータ(PC)、やワークステーションやこれらの組合せによって実施可能であることを容易に理解できるであろう。ただし、これらの構成要素は例示であり、その全ての構成成要素が本発明の必須の構成要素となるわけではない。例えば、図1は、スタンドアロン環境のシステムを示しているが、クライアントサーバ・システムとして本発明を実現し、サーバ・マシンに本発明のシステム100を配置し、クライアント・マシンは、サーバ・マシンに対して、イーサネットトークンリングなどでLAN接続し、クライアント・マシン側には、プログラムの入力のための入力装置と、結果を見るための表示装置を配置してもよい。

0025

オペレーティング・システムとしては、Windows(マイクロソフト商標)、OS/2(IBMの商標)、AIX(IBMの商標)上のX−WINDOWシステム(MITの商標)などの、標準でGUIマルチウインドウ環境をサポートするものが望ましいが、本発明は、PC−DOS(IBMの商標)、MS−DOS(マイクロソフトの登録商標)などのキャラクタベース環境でも実現可能であり、特定のオペレーティング・システム環境に限定されるものではない。

0026

次に、本発明を読者が理解できるように、本発明で入力されるプログラムの実施例と、本発明でシュルチョクされるデータ構造の実施例を説明する。図3は、入力されるプログラムのデータ宣言部の1実施例であり、このプログラムで使用するデータのデータ領域を定義している(データ領域定義部分)。ここでは、PL/Iを例としてコーディングされている。このデータ宣言部は、本実施例においてはソースプログラム内に存在しているが、ソースプログラムと異なる場所にその一部または全部を格納し、コンパイル時にリンクするようにしてもよい。

0027

図3に示すコーディングのデータ構造において、DCL(デクレア文)125単位に区分けを行い、各デクレアー文をブロックとして認識することとする。そして、ブロック131、133、135は夫々、データ領域定義ブロックと呼ぶ。また、このデータ領域定義ブロックは、共通のデータ領域を含む定義をしている。データ領域定義ブロック131は、データ項目名129"TOP_REC"のデータ項目130を定義しており、このデータ項目130は、その直ぐ下位の構造として"F1"、"F2"、"F3"のデータ項目を持つ階層構造を持つことがデータ項目階層情報127(「01」,「02」等の情報)によって定義されている。"F1"は、さらに"F11","F12","F13"の3個のデータ項目130から構成され、"F1"自体は10バイトを占める。"F3(5)"は、5個の要素から構成される配列を示している。"F3"の一つの要素は"F31"の1バイト、"F32"の5バイトの合計6バイトからなり、5個の配列要素により"F3(5)"自体は30バイトを占める。本願明細書において、このようにデータ項目のデータ長を決定するための情報をデータ項目長情報137と呼ぶこととし、"F2"で定義されている"CHAR(10)"の"10"のようなバイト数のデータだけではなく、"F3(5)"のような配列情報や、"FIXED BIN"のようなデータ項目の属性情報をも包含する概念である。

0028

レコード"TOP_REC"は、0バイト目から50バイト目までの範囲を占めているが、全く同じ範囲をレコード"REDEF_REC"が占めているのが表現されている。これはデータの再定義もしくは別名と言われるものである。このように、"REDEF_REC"のような再定義を行うデータ項目を、再定義データ項目といい、"TOP_REC"のような再定義されるデータ項目を、被再定義データ項目と呼ぶ。この再定義の関係は、"DEF"というデータ項目再定義情報139によってシステムに認識される。データの再定義は、1レコード全体ごとだけてなく、大きな構造の一部を再定義することもある。レコード"REDEF_F"は"TOP_REC"の中の"F2"の部分のみを再定義している。再定義が明確に表現されるということは、データに関する修正の及ぶレコードの範囲が明らかになることを意味する。たとえば、この例の場合、"REDEF_F"中の"RF1"に関するデータの修正が、"REDEF_REC"中の"R3"、そして、"TOP_REC"中の"F2"へも、影響が及ぶことを明確に表現することになっている。

0029

本発明の好適な実施例においては、図3に示したデータ領域定義部は、図4のように表現され、出力される。左側にならんでいる数値151はバイト数で表現されている。この数値は、各データ項目の先頭位置(オフセット)に対応した数値である。横に引かれた点線間は等バイト間隔ではない。点線153は各データ項目の占める範囲の切れ目に引かれている。点線間を等間隔のバイト数にして、鍵括弧"["155の縦の線の長さでデータの大きさを表現することも可能であるが、通常、各データはかなりのサイズになり、表示装置に表示しきれなくなることから、本発明の好適な実施例においては点線によりデータの範囲の切れ目を明確にし、その切れ目にバイト数(オフセット)を書くこととしている。オフセットは、図13に示すように、<バイト数>.<ビット数とういう形式で表現することもできる。入力された各データ領域定義ブロック131,133,135は、その再定義の関係に基づいて、データ領域定義ブロック単位に横方向に並べられている141,143,145。この図に示すような本発明のデータ構造の表示より、各データ項目に関して、各データの記憶域上での占める範囲、データの階層関係、データの再定義やレコード間でのデータの共有、および、配列とそのサイズが明確に表現されることとなる。

0030

次に、図2のブロック図を参照して、本発明のシステム構成について説明する。本発明の好適な実施例において入力されるプログラム101は、ハードディスク、マグネットテープ(MT)、フロッピーディスク等の媒体に格納されているソースプログラムであるが、外部システムから通信回線を介して入力されとソースプログラムであってもよい。また、公知の手法により、オブジェクトモジュールをソースプログラムに変換することが可能であるため、入力されるプログラムは、ソースプログラムに限定されず、オブジェクトモジュールであってもよい。さらに、ソースプログラムまたはオブジェクトモジュール全体だけではなく、データ構造を定義している部分のみを抽出されたものを入力としてもよい。このデータ構造を定義している部分は、コンパイル時または実行時にソースプログラムにリンクされるインクルードファイル(COBOLではコピー句と呼ばれる等、種々の名称が付けられている)と呼ばれるデータ構造定義文の全体だけではなく、その一部であってもよい。

0031

本発明の好適な実施例において、入力装置111は、好適には、入力するプログラムを指定したり、データ構造を表示するデータ項目を指定するキーボード6またはマウス7等のポインティングデバイスで構成される。また、入力制御部113は、好適には、マルチウインドウ環境で構成され、プログラムまたはプログラム中のデータ定義部分が入力装置111によって指定されたことを検出し、その情報をデータ構造解析部103に伝達することができる。また、表示に関する制御情報の入力(表示を個所限定するための入力、スクロールを指示するための入力、後述する畳み込みのための入力等)を検出して、その情報を表示制御部123に伝達することができる。

0032

データ構造解析部103は、プログラム101を入力とし、プログラム101の中の変数宣言から、プログラム101に含まれるデータ項目のデータ構造を解析する。本発明の好適な実施例においては、データ構造解析部103は、プログラム101に含まれる全てのデータ領域定義ブロックを抽出し、それに含まれる各データ項目について階層関係についての情報(データ構造情報105)を抽出・保存する。

0033

本発明の好適な実施例における、データ構造情報105の概念図を図5に示す。各データ項目130について、データ項目名310、データ項目のタイプ等の属性情報320、オフセット情報330、データ項目サイズ情報(データ項目長情報)340、再定義情報350、上位へのポインタ360、下位へのポインタ370を管理するデータ項目のエントリ300が作成される。データ項目名310は、"REDEF_REC"等のデータ項目の変数名をそのまま使用することも可能であるが、"G002-001/RG001-001"等の入力されたデータ項目に夫々対応する変換された名称を使用してもよい。各エントリが、入力されたプログラムのデータ項目を特定できれば、データ項目名310は、数字記号等で表現してもよい。

0034

データ項目のタイプ等の属性情報320には、そのデータ項目が文字項目数字項目か等を判別するための情報が管理されている。図において、属性情報320は、"FIXED BIN","CHAR(6)"等の情報を管理しているが、文字項目は"C"、数字項目は"N"等属性情報を象徴したものを管理することもできる。オフセット情報330は、そのデータ項目が位置するデータ領域での開始位置を示す。各データ項目についてのオフセットの算出方法については後述する。データ項目サイズ情報340は、各データ項目が占めるデータ領域上のデータ長を示している。データ項目長情報(サイズ情報)340は、"CHAR(6)"の"(6)"等だけでなく、"FIXEDBIN","BIT"等のデータ項目長の判断に使用される全ての情報を含む概念である。図において、オフセット330、データ項目長情報(サイズ情報)340はビットを単位に表現されているが、バイト単位等の他の単位によって管理することもできる。再定義情報350は、そのデータ項目が再定義するデータ項目または、再定義されるデータ項目をポイントする情報を管理する。本発明の好適な実施例においては、再定義の関係を示す情報を各データ項目のエントリ300において管理しているが、データ構造情報105とは別に管理することも可能である。

0035

上位へのポインタ360は、そのデータ項目の上位に位置するデータ項目をポイントしている。また、下位へのポインタ370は、そのデータ項目の下位に位置するデータ項目をポイントしている。各エントリにおいて"X"は、ポイントするものが無いことを示している。下位へのポインタ370は、ポイントすべきデータ項目が複数であるため、リスト構造600を介して下位のデータ項目のうち最初に出現するデータ項目に対応するリスト構造をポイントしている。リスト構造600は、そのリスト構造に対応するデータ項目をポイントする要素へのポインタ610と、次のデータ項目に対応するリスト構造をポイントする次へのポインタ630を有している。但し、リスト構造600は、下位へのポインタ370が、下位のデータ項目をポイントするために必須のものではなく、下位へのポインタ370のエントリにおいて、ポイントすべきデータ項目を特定する複数の情報を管理することもできる。この上位へのポインタ360、下位へのポインタ370は、その一方のみで、データ構造を定義できるため、各データ項目のエントリ300にいずれかが存在すればよい。

0036

なお、この属性情報320、データ項目サイズ情報340は、各データ項目のエントリ300に必須のものではない。これは、データ項目エントリ300は、入力されたプログラム101のデータ項目を特定するデータ項目名310というデータを有しているため、入力されたプログラム101から、その属性情報を特定することが可能だからであり、図2に示す表示制御部123または、レイアウト情報生成部107に直接これらの情報を渡すことにより、図4に示すデータ構造の表示を行うことができるためである。

0037

本発明の好適な実施例においては、このデータ構造情報105は、レイアウト情報生成部107に渡され、レイアウト情報109に加工される。この手順については後に詳述する。レイアウト情報109は、その概念図(図6)に示すように共通のオフセットに対して関連付けられている。この共通のオフセットを有するデータ項目の集合を行データと呼ぶ。行データにおいては、各データ項目は、データ領域定義ブロックの順番階層上位の順番で順序付けられている。各データ項目エントリ211,213...には、データ項目名、データ項目のタイプ等の属性情報、データ項目サイズ情報(データ項目長情報)が管理されているが、データ構造情報105と同様に、この属性情報、データ項目サイズ情報は、各データ項目のエントリに必須のものではない。これは、データ項目エントリは、入力されたプログラム101のデータ項目を特定するデータ項目名を有しているため、入力されたプログラム101または、データ構造情報105から、その属性情報等を特定することが可能だからであり、図2に示す表示制御部123に直接これらの情報を渡すことにより、図4に示すデータ構造の表示を行うことができるためである。

0038

表示制御部123は、レイアウト情報109の配置に基づき、表示装置121に表示を行う。図が大きくなった時のスクロール、レベルを指定しての畳み込み等の表示の変更は、入力装置111より縦横のスクロールや表示すべきレベルなどの情報が入力され表示制御部123により処理され表示装置121に表示される。

0039

本発明の好適な実施例においては、本発明の方法は、対話式に実行されるため、入力装置111、入力制御部113、表示制御部123、表示装置121が図に示されているが、これらの要素は必須の構成要素ではない。例えば、本発明を自動サブミットによって実行されたバッチジョブによって実施した場合、入力すべきプログラム、または、データ構造部は、JCLジョブコントロールランゲージ)の指定により特定することが可能であり、出力されるべきレイアウト情報は、リモートのプリンタに出力することも、後に画面表示または、プリンタに出力するために、各種記憶媒体に格納しておくことも可能であるからである。

0040

図7から図10に、図4に対する表示上の操作を示す。現実的なプログラムにおいては、通常データ構造はかなりの大きさとなり、ディスプレイ等の表示装置上に表示しようとしても、一画面には表示しきれないことが多い。そのような場合、図に対する縦横のスクロールも有効ではあるが、スクロールを行っても一画面で見ることができる部分は図の一部分であるので、データ構造全体の把握は難しい。そこで、データの階層関係や再定義の構造を画面上に残したまま、構造の一部の表示を省略(畳み込む)方式を提案する。畳み込みの方式には、
1.表示レベルを指定しての畳み込みと、
2.指定したデータの下位構造の畳み込みの2種類が考えられる。

0041

表示レベルを指定しての畳み込みは、最上位から何レベルまでを指定し、その下位構造の表示を畳み込む表示のしかたである。図7最上位レベルのみ、つまり表示レベル1の場合の表示である。図において、表示省略された(畳み込まれた)下位構造は、図中の">>>>>"で示されている。このレベルで表示すると、再定義の関係のみが図上に表示されることになる。本発明の好適な実施例においては、この畳み込みを示す記号は">>>>>"によって表現されているが、畳み込みを行っていることを直感的に認識できればよく、種々の記号や文字によって代替可能である。

0042

図7を見ると、図4と比較し縦横何れの方向にも、図自体の大きさが縮小されているのが分かる。これにより表示装置一画面に収まりきれない図も収まるようになる。図8は、レベルとして2を与えて、上位から2レベルまでを表示した場合である。再定義された各データ構造の上位2レベルまでが表示されているのが分かる。図中"F1"の下位構造("F11","F12","F13")が畳み込まれて">>>>>"として表示されている。"TOP_RECの構造だけを見るとこの"F1"の構造に相当する"["は一行分の長さにすることが出来るように思えるが、"TOP_REC"を再定義している"REDEF_REC"の構造を見ると、"TOP_REC"の"F1"に相当する記憶域に、第2レベルとして"R1"と"R2"が存在していることから、"F1"の範囲に相当する"["は縦に2行になっている。このように、"再定義がある場合、一つのレコードのみで畳み込みを判断せず、再定義された全てのレコードの畳み込みの状況を参照しながら畳み込む必要がある"。

0043

"F1"に相当する記憶域(0バイトから10バイトの間)において、図4図8を比較すると、畳み込みによって図8では2バイト目と8バイト目を示す横方向の点線が必要無くなっていることが分かる。以下50バイト目までに、第3レベル以下の表示の省略の結果、合計4本の点線が必要なくなっている。その分、図を表示するスペースが節約されていることになる。これによって、表示装置一画面に収まりきれない図も収まるようになる。

0044

指定したデータの下位構造の畳み込みは、表示装置に表示された図上でデータ項目を選択し、その下位構造の表示を省略する方式であり、図4上で"REDEF_F"を選択し、下位構造を畳み込んだ図が図8である。"REDEF_F"の下の"RF1"、"RF2"、"RF3"の構造のみが、畳み込まれている。この畳み込みの方式の場合も、上記したように、再定義されたデータ構造をも考慮する必要がある。図9の場合は、"REDEF_F"のレコードと同じ記憶域を持つ"TOP_REC"中の"F2"と"REDDEF_REC"中の"R3"が、その下位に構造をもたないデータ項目であったから、畳み込みも単純であった。

0045

それに対して、図10は、下位構造を畳み込むために"TOP_REC"中の"F1"を選択した場合であるが、その同じ記憶域に相当する"REDEF_REC"中の部分(0バイト目から10バイト目)を見ると、"R1"と"R2"という2つのデータが存在しかつ、"R2"はまたその下位構造に"R21"、"R22"を持つことが分かる。ここでは、"REDEF_REC"側の構造は畳み込みを指定されていないことから、畳み込みは行わない。しかし、"TOP_REC"中の"F1"の下位構造が畳み込まれることから、"F11"、"F12"、"F13"も畳み込まれ、"F11"と"F12"の切れ目の2バイト目を表す点線も必要なくなり、"REDEF_REC"中でも2バイト目は、データ項目間の切れ目となっていないことから、2バイト目の点線は消去可能になる。その結果、"TOP_REC"側に対応して、"REDEF_REC"側でも、下位構造を畳み込むことは行われないが、当初2行分で表現されていた"R1"を表現する"["が1行分の長さに変更されている。上記の再定義を考慮した、畳み込みによる表示省略も本発明の独自な点である。

0046

図14は、本発明の好適な実施例において、入力されたプログラムがデータ構造表示されるまでの処理手順を示すフローチャートである。この処理手順においては、まず、データ構造解析が行われる(ステップ403)。このデータ構造解析の処理内容に関しては後に詳述する。次に、ユーザはポインティングデバイス7を使用して、データ構造を表示すべきデータ項目を特定する(ステップ405)。このデータ項目の特定は、キーボード6により、データ項目を直接入力することによって行われてもよい。但し、このデータ項目を選択するステップは、本発明の方法において必須の構成要素になるとは限らない。これは、ステップ403のデータ構造解析部において、指定されたデータ項目のみを解析し、データ構造情報105を作成することも可能であるし、入力されたプログラム101に存在する全てのデータ構造定義部分部についてデータ構造情報105を作成することも可能だからである。

0047

そして、ステップ407において、選択されたデータ項目を含む再定義を考慮したデータ構造を発見する。この、選択されたデータ項目を含む再定義を考慮したデータ構造とは、選択されたデータ項目を含む共通領域定義データブロックを意味する。例えば、図3において、指定されたデータ項目がブロック135におけるRF2であった場合、このデータ項目を含むデータ領域定義ブロック135と、データ領域定義ブロック135と共通のデータ領域を定義しているデータ領域定義ブロック131と、データ領域定義ブロック131と共通のデータ領域を定義しているデータ領域定義ブロック133のデータ構造が検出される。

0048

その後、ステップ407で検出されたデータ構造についてレイアウト情報の生成処理が行われる(ステップ409)。この処理内容に関しては後に詳述する。そして、ステップ409で作成されたレイアウト情報109、ステップ403で作成されたデータ構造情報105に基づいて、データ構造図表示処理が行われる(ステップ411)。この処理内容に関しても後に詳述する。その後、別のデータ項目を含むデータ構造を表示するか否か判断され(ステップ413)、表示することが求められている場合は、その別のデータ項目について、405,407,409,411,413の各ステップを実行する。本発明の好適な実施例においては、このステップ413の判断は、他の共通領域定義ブロックに属するデータ項目が指定されているか否かを判断している。複数の共通領域定義ブロックのデータ構造を表示必要性は必ずしもあるわけではないので、このステップも本発明の必須の構成要素ではない。

0049

図15は、本発明の好適な実施例において、入力されたプログラムがデータ構造解析されるための処理手順を示すフローチャートである。この処理手順においては、まず、対象プログラムの読み込みが行われる(ステップ423)。そして、データ領域定義ブロックごとに階層関係と各データ項目が管理している情報を解析する。具体的には、図5に示す、各データ項目のエントリ300に、データ項目名310、データ項目のタイプ等の属性情報320、データ項目サイズ情報(データ項目長情報)340、上位へのポインタ360、下位へのポインタ370が出力される。そして、各データ項目間の再定義関係を解析して、関係するものは連結する。具体的には、図5に示す、各データ項目のエントリ300の再定義情報350に連結すべきデータ項目をポイントするための情報が入力される。このステップ425とステップ427をすべてのデータ項目について実行する(ステップ429)。

0050

その後、ステップ431において、データ領域定義ブロックごとに、先頭のデータ項目のオフセットと、各データ項目のサイズから、各データ項目のオフセットを計算する。具体的には、図5に示す、各データ項目のエントリ300のオフセット情報330に各データ項目について計算されたオフセット値保管される。このオフセット値の計算は、まず各データ領域定義ブロックに於ける先頭のデータ項目のオフセット情報が、そのデータ項目が再定義しているデータ項目のオフセット値に設定される。再定義するデータ項目が無い場合は、0が設定される。このオフセット値に、そのデータ領域定義ブロックにおける階層に従って、下位のデータ項目のサイズ(データ長)が加算される。このとき、22ビットのサイズのデータ項目の場合、3バイト(8による除算の商、小数点切り上げ)とするように、アライメントを考慮したオフセット値を算出することが望ましい。

0051

図3のデータ領域定義ブロック133を用いて具体的に説明すると、まず、データ領域定義ブロック133の先頭のデータ項目であるREDEF_RECには、TOP_RECのオフセット値0がセットされる。次に、REDEF_RECのデータ長が現在のオフセット値に加算される。REDEF_RECのデータ長は、定義されていないため、0が現在のオフセット値に加算される(データ長が定義されていないデータ項目に対しては、加算を行わない方法もある)。次に、R1のオフセット値に現在のオフセット値(0)がセットされる。そして、現在のオフセット値にR1のデータ長(4)が加算される。そして、R2のオフセット値に現在のオフセット値(4)がセットされ、現在のオフセット値にR2のデータ長(0)が加算される。次にR21のオフセット値に現在のオフセット値(4)がセットされて、現在のオフセット値にR21のデータ長(4)が加算される。次にR22のオフセット値に現在のオフセット値(8)がセットされ、現在のオフセット値にR22のデータ長(2)が加算される。次にR3のオフセット値に現在のオフセット値(10)がセットされ、現在のオフセット値にR3のデータ長(10)が加算される。次にR4のオフセット値に現在のオフセット値(20)がセットされる。

0052

図16は、本発明の好適な実施例において、レイアウト情報を生成するための処理手順を示すフローチャートである。手順は、ステップ441で開始し、まず、最初のデータ領域定義ブロックの先頭に位置するデータ項目(TOP_REC)がポイントされる(ステップ444)。そして、現在のオフセット値に0がセットされる(ステップ443)。次に、現在のオフセット値を有しているデータ項目を現在のオフセット値の行データにセットする(ステップ457)。なお、このステップ457の前に、条件式445,449,453が存在するが、現在のオフセット値が0の場合は、これらの条件式はすべてNOとなるのでここでは説明しない。

0053

このステップ157におけるセットの順番は、データの階層から決定されるが、具体的には、最初のデータ領域定義ブロックの先頭に位置するデータ項目(TOP_REC)が現在のオフセット値を有しているか否か判断され、現在のオフセット値を有している場合は、行データに、そのデータ項目名等がセットされる。次に、このデータ項目(TOP_REC)の下位のF1がポイントされ、このデータ項目が現在のオフセット値を有しているか否か判断され、現在のオフセット値を有している場合は、行データに、そのデータ項目名等がセットされる。その後、このデータ項目(F1)の下位のF11がポイントされ、このデータ項目が現在のオフセット値を有しているか否か判断され、現在のオフセット値を有している場合は、行データに、そのデータ項目名等がセットされる。

0054

次に、このデータ項目(F11)の下位のデータ項目は存在しないため、リスト構造600の次へのポインタ情報630を参照し、次のデータ項目(F12)にポインタが渡される。そして次のデータ項目が現在のオフセット値を有しているか否か判断され、現在のオフセット値を有している場合は、行データに、そのデータ項目名等がセットされる。その後、次のデータ項目(F13)にポインタが渡される。そして次のデータ項目が現在のオフセット値を有しているか否か判断され、現在のオフセット値を有している場合は、行データに、そのデータ項目名等がセットされる。そして、次のデータ項目(F13)には次のデータ項目が存在していないため、上位のデータ項目(F1)の次のデータ項目(F2)にポインタが渡される。そして、同様にして、現在のオフセット値を有しているデータ項目が探索される。最初のデータ領域定義ブロックがすべて探索されると、次のデータ領域定義ブロックにおいても同様な探索が行われる。

0055

なお、次のデータ項目を探索する場合は、現在のオフセット値と、データ項目のオフセット値を比較し、データ項目のオフセット値が現在のオフセット値以上である場合、ポインタを次のデータ項目に渡さずに、上位のデータ項目にポインタを渡す方が、効率的に探索を行うことができる。これは、次のデータ項目のオフセット値は現在のデータ項目のオフセット値よりも大きな値を有しているためである。このような階層構造を有しているデータの情報に関する方法は、人工知能等の分野において種々提案されており、当業者に公知の技法が多く存在する。また、データ項目を、データ領域定義ブロック、階層情報の順番でソートしセットを行ってもよい。

0056

次に、ステップ459において、現在のオフセット値の行データにセットされたデータ項目の中で最小のデータ長を、現在のオフセット値に加算する。例えば、現在のオフセット値が4の場合、そのデータ行にセットされるデータ項目はF13,R2,R21であるが、この中で最小サイズのデータ項目は、R21であり、そのデータ長(4)が現在のオフセット値(4)に加算され、現在のオフセット値は8に更新されることとなる。

0057

この最小サイズのデータ項目が、被再定義データ項目よりも短い長さのデータ項目であるか(ステップ445)、配列の最下行のデータ項目であるか(ステップ449)、アライメントを必要とするデータ項目か(ステップ453)が判断される。

0058

図11に示すように、最小サイズのデータ項目が、被再定義データ項目よりも短い長さのデータ項目である場合、その行には、配置すべきデータ項目が存在しないと判断し、オフセットのみの行を作成する。

0059

図12に示しように、最小サイズのデータ項目が、配列の最下行のデータ項目である場合、":"をデータ項目としてセットする(ステップ451)。

0060

図13に示すように、最小サイズのデータ項目が、アライメントを必要とするデータ項目である場合、実際には表示されないダミーのデータ項目を行データに挿入する(ステップ455)。

0061

そして、現在のオフセットがデータ構造の最後の場合(ステップ461)、具体的には、現在のオフセットを有するデータ項目が存在しないと判断された場合、データ構造図の最後のオフセットの数字と、点線を描くための、データ項目の存在しない行データ303を追加する。本発明の好適な実施例においては、この最終の行データ303は最終であることを示すフラグを有している。

0062

図17は、本発明の好適な実施例において、データ構造を表示するための処理手順を示すフローチャートである。手順はステップ471で開始し、まず後述する画面上への図の描画処理が行われる(ステップ473)。次に、入力装置からの畳み込み、終了等の入力が有った場合、入力制御部は、その入力を検出し(ステップ475)、その入力が、表示レベル指定の畳み込みの入力であるか、指定データの下位の畳み込みの入力であるか、表示終了の入力であるかを判断する(ステップ477,481,485)。表示レベル指定の畳み込みの入力であった場合、全ての行データ中のデータ項目をチェックして、指定されたレベルよりも深いデータ項目に非表示フラグを立てる(ステップ479)。指定データ下位の畳み込みの入力であった場合、全ての行データ中のデータ項目をチェックして、指定されたデータ項目よりも下位のデータ項目に非表示フラグを立てる(ステップ483)。

0063

図18は、本発明の好適な実施例において、データ構造を表示するための処理手順を示すフローチャートである。手順はステップ501で開始し、まず、最初の行データがポイントされる(ステップ503)。次に、各行データごとに、含まれるデータ項目ごとに非表示フラグを調べ、非表示フラグがあるものを除外しながら各データ項目のX方向の座標を決定する(ステップ505)。行データに含まれるデータ項目の各々に、そのデータ項目が表示されるべきX方向の座標値が関連付けられる。X方向の座標値は、表示する各データ項目名の最大長を設定しておき、その長さと、各階層間に設けられる間隔が増分され、各データ項目に設定される。なお、再定義データ項目か否かの判断により、データ項目間の間隔を変化させることも可能であり、また、各階層のデータ項目名の内最大長さの項目名を検出し、その長さをその階層に於けるX座標の増分に使用することもできる。そして、行データ中に非表示フラグの立っていないデータ項目が存在する場合(ステップ507)は、行に相当するY座標を1行分増加させる(ステップ511)。

0064

上記の一連のステップが、全ての行データについて行われた場合(ステップ511)、ポインタは再び最初の行データに戻される(ステップ513)。そして、現在の行データのオフセット情報から、オフセットの数値151(図4参照)を描画し、続いて同一のオフセットであることを示す点線157を描画する(ステップ515)。次に、データ項目名、非表示の記号、または配列の記号を書き(ステップ517)、鍵括弧の縦線を描画する(ステップ519)。図18に示すように、これらの一連のステップを全ての行データについて行う(ステップ521)。

0065

図19は、本発明をマルチウインドウ環境で、対話式に実施したときの表示例を示す図である。本発明の好適な実施例においては、本発明は、図に示すような、マルチウインドウ環境において実施される。ユーザは、図に示すように、表示装置の表示画面600のウインドウ601にプログラムを呼び出し、表示させる。次にユーザは、マウスのポインタによりクリックすることにより、データ項目の指定を行い、図2に示す入力制御部113はこれを検出する。図19に示すように、入力ファイル(NURYOKU)を読み込むためのデータ項目(TOP_REC)は、プログラムの読み込み命令中で指定されている。データ項目の指定はデータ領域定義部分に存在するデータ領域を選択してもよいが、通常複数のプログラムで共通のデータ定義部分を重複して定義することを避けるべく、テータ定義部分をプログラムと別のファイルに格納している場合が多いため、プログラム中のデータ項目を指定させ、そのデータ項目にリンクしているデータ定義部分にアクセスする方が好ましい。

0066

このように、データ項目が指定された後、ユーザは、そのデータ項目のデータ構造図を表示させる命令を与える。具体的には、タイトルバープルダウンメニューから、データ構造図の作成を指示する方法や、特別のボタンアイコンをクリックする方法、キーボードからコマンドを入力する方法等がある。図2の入力制御部113は、このユーザからの命令を検出して、本発明の方法を実行する。そして、本発明の出力すべきデータが、表示制御部123に渡されると、表示制御部123は、新たなウインドウ603をオープンし、図19に示す、データ構造図を表示する。

0067

このデータ構造図は、種々の機能を有している。第1の機能としては、既に説明したように、このデータ構造図において、所望のデータ項目を畳み込む機能である。この畳み込み機能はユーザがデータ項目指定後、畳み込みを指示することにより、前述の図17で説明した一連の手続きが実行される。

0068

第2の機能としては、図20は、本発明の好適な実施例において採用される追加機能を説明する図であが、図に示すように、このデータ構造図のデータ項目をユーザがマウスポインタによってダブルクリックすると、新たなウインドウ610がオープンされる。このウインドウ610には、そのデータ項目の有している種々の情報が表示される。

0069

第3の機能としては、図20に示すウインドウ610の情報に基づいて、プログラムを更新する機能である。例えば、ユーザは、データ項目名F32をT32に修正し、更新を指示する命令を行うと、表示制御部113はこれを検出し、変更データを基にプログラム101を更新する。プログラム101を更新する。また、サイズ621の変更等は、データ構造に影響を与えるため、特別な処理が必要となる。例えば、F12のサイズ情報621が2バイトから4バイトに変更(例えば西の年の情報を2バイトから4バイトにする)する場合、変更が発生したデータ項目のオフセット情報が参照され、このデータ項目のオフセット情報以下の行データが探索される。そして、その行データに存在するデータ項目で、オフセット+サイズが、更新前のF12のオフセット+サイズ以上のものが特定され、F12のサイズの変更量に従って、更新される。ここの例ではR1のサイズが4バイトから6バイトに更新される。

0070

第4の機能としては、ウインドウ603に表示されている各データ項目は、各データ項目が有している種々の属性によって色分けすることができる機能である。色分けはデータ項目のタイプ623やレベル611等に従って行うことができる。

0071

以上本願発明の好適な実施例について説明を行ったが、本発明の技術思想はこの実施例に拘束されるものではなく、設計段階で種々の変更が可能である。例えば、本発明の好適な実施例においては、処理の効率化のため、データ構造解析部103によってデータ構造情報105を作成し、レイアウト情報生成部107によってレイアウト情報109を作成している。しかし、このように、1.プログラム101を入力し、データ構造情報105を出力、2.データ構造情報105を入力し、レイアウト情報109を出力、3.レイアウト情報109を入力し、構造図を出力といったような3段階の処理を行う必要性はない。

0072

このことは、以下に示すようなアルゴリズムによって、実現可能であることは、当業者に容易に理解できる事項であろう。

0073

1.レイアウト情報生成部メインルーチン
voidプログラムからレイアウト情報生成()
{
data =ファイルから一つ分のデータ項目宣言を返す();
while (data !=NULL) {
if (dataが再定義宣言の始まり) {
layout = 再定義の元データ構造に関するレイアウト情報の
先頭の行ヘッドを返す(data);
offset = 被再定義項目のオフセットを返す(data);
y_level = そのレイアウト構造でその時もっとも横方向に
深いレベルを返す(layout);
} else {
layout = 新たに空のレイアウト情報を作り先頭の行ヘッド
を返す(data);
offset = 0;
y_level = 0;
}
data =下位構造中のデータ項目の追加(data, offset,
y_level, layout, &size);
}
}

0074

2.指定されたデータ以下の下位構造中のデータ項目をレイアウト情報に追加
し、その構造の次のデータ項目宣言を返す(そのデータも含むサブツリー構造)
データ項目宣言 下位構造中のデータ項目の追加(data, offset,
y_level, layout, *size)
{
y_level = y_level + 1;
pdata_st = データ項目構造を作り値をセットしポインタを
返す(data, offset, y_level, &data_size);
そのオフセットの行データ項目リストの最後にデータ項目構造を
追加(pdata_st, offset, layout);
if (dataが最下位のデータ項目なら) {
if (offsetとdataのタイプを比較して境界合わせが必要) {
そのオフセットの行中のオフセット値を更新する
(offset, offset+不使用領域のサイズ,layout);
そのオフセットの行ヘッド作り行ヘッド・リスト
挿入(offset, layout);
実際には表示されないダミーのデータ項目構造をリストに
追加(offset, y_level, layout);
offset = offset + 不使用領域のサイズ;
}
if (offset+data_sizeの値を持つ行ヘッドが無い) {
そのオフセットの行ヘッド作り行ヘッド・リストに
挿入(offset+data_size, layout);
}
} else {
data_size = 0;
next_data =ファイルから一つ分のデータ項目宣言を返す();
while (next_dataの宣言レベル> dataの宣言レベル) {
next_data = 下位構造中のデータ項目の追加(next_data,
offset, y_level, layout, &one_size);
data_size = data_size + one_size;
}
} // endif
if (dataが配列) {
データ項目の横方向レベルに1を加えたレベルで':'をリストに
追加する(offset+data_size, y_level, layout);
size = data_size * dataの配列の要素数;
if (offset+sizeの行ヘッドがまだ存在していない) {
そのオフセットの行ヘッド作り行ヘッド・リストに
挿入(offset, layout);
}
} else {
size = data_size;
}
最終的なサイズをdataのデータ項目情報に設定する(pdata_st, size);
return (next_data);
}

0075

このアルゴリズムを、フローチャートを用いて説明する。図21、22は、本発明の他の実施例において、入力されたプログラムがデータ構造表示されるまでの処理手順を示すフローチャートである。図21に示す処理は、データ定義ブロックの先頭に位置するデータ項目(図3、4の例だと、TOP_REC,REDEF_REC,REDEF_Fの3つ)のオフセットとレベル(X座標または、階層情報に対応)のイニシャライズ等を行っている。手順はステップ701で開始し、まず、ファイルから1データ項目宣言が返される(ステップ703)。本発明の好適な実施例においては、図3に示すデータ宣言が各行単位に入力される。この入力された1行のデータ項目宣言がデータ定義ブロックの始まりであるか否かの判断がなされる(ブロック705)。但し、1行単位ではなく、デリミタによって区切られる文字列の単位に入力してもよい。このときコメント行等はスキップされる。本発明の好適な実施例においてはPL/Iでプログラムがコーディングされているためデクレア(DCL、DECLARE)等を含む文字列か否かによって容易に判断することができる。

0076

この入力された1行のデータ項目宣言がデータ定義ブロックの始まりであると判断された場合は、このデータ項目が他のデータ項目を再定義しているか否かが判断される(ブロック707)。本発明の好適な実施例においてはPL/Iでプログラムがコーディングされているため再定義情報(DEF,DEFINED)等を含む文字列か否かによって容易に判断することができる。

0077

データ項目が他のデータ項目を再定義していないと判断された場合は、そのデータ項目のデータ項目名は、図4のTOP_RECのようにオフセット、レベルともにもっとも小さい値にセットされるため、ここのステップではオフセット及びレベル値初期設定される(ステップ709)。データ項目が他のデータ項目を再定義していると判断された場合は、そのデータ項目のデータ項目名は、図4のREDEF_FのようにREDEF_Fが再定義を行っているF2と同一のオフセットに表示し、先行するデータ領域定義ブロック133よりも大きなレベル値で表示する必要があるため、オフセットに、被再定義データ項目のオフセット値が設定され、レベルには先行するデータ領域定義ブロックのレベル値の最大のものまたは、その最大値定数を加算した値が設定される(ステップ711)。そして、後述する下位構造中のデータ項目の追加処理が行われる(ブロック713)。

0078

図22は、この下位構造中のデータ項目の追加処理を示す図である。手順はステップ731で開始し、まず、レベルがインクリメントされる(ステップ733)。次に、メインルーチンから渡されたデータからデータ項目に相当するデータ項目構造を造りオフセットレベル等を設定する(ステップ735)。具体的には、各データ項目に図5のデータ項目に相当する構造300のエントリが作成される。次に行データのリストの最後にデータ項目情報を追加する(ステップ737)。次に、入力されたデータ項目宣言が最下位のものであるか否かが判断される(ステップ739)。入力されたデータ項目宣言が最下位のものであるか否の判断は、そのデータ項目宣言に、属性情報や、サイズ情報が含まれているか否かによって容易に行うことができる。

0079

そして、このデータ項目宣言が、最下位であった場合は、さらに、オフセットとデータサイズの関係から、境界合わせの処理が必要であるか否かが判断される(ステップ747)。すなわち、図11乃至13で説明したようにアライメントによる処理が必要であるか否かが判断される。この処理が必要であると判断された場合、そのオフセットの行のオフセット値を境界合わせを考慮したものに変更し(ステップ749)、表示されないダミーのデータ項目をリストに追加する(ステップ751)すなわち、新たなデータ項目宣言の入力を行う。そして、次の行データの開始を示す行ヘッドが存在しない場合、行ヘッドの追加を行う(ステップ753)。

0080

ステップ739において、データ項目宣言が、最下位ではないと判断された場合は、行データに、下位構造中のデータ項目の追加を再帰的に行い(ステップ741)、上位のデータ項目のサイズ情報を下位のデータ項目のサイズ情報の合算した値とするために、サイズ情報の加算処理を行う(ステップ743)。これらの処理を下位構造について繰り返す(ステップ745)。

0081

次に、データ項目が配列のデータ項目か否かの判断を行い(ステップ755)、配列であると判断された場合は、":"に相当するデータ項目情報を行データに追加し、サイズ情報を、その配列全体のサイズに設定する(ステップ757)。また、行ヘッドが無ければ、行ヘッドの追加処理を行う(ステップ759)。そして、最下位でないデータ項目のサイズ情報を下位のデータ項目のサイズ情報の合算した値とするために、サイズ情報の加算処理を行う(ステップ763)。

発明の効果

0082

以上説明したように、この発明によれば、各データ項目について、各データ項目の記憶域上での占める範囲、データ項目間の階層関係、データ項目の再定義やデータ項目間でのデータ領域の共有、配列とそのサイズを明確に表現することができる。これによりプログラマが正確なデータ構造を視覚的かつ、直感的に理解することを可能にし、プログラムのコーディングミスや、誤った保守作業の発生を軽減することが可能となる。また、本発明の1態様によれば、大きなデータ構造に対しても、レベル毎に詳細の表示を省略することにより、データのアライメントやデータ領域の重なり等を一目で把握することができるという効果が得られる。

0083

図面の簡単な説明

0084

図1ハードウェア構成の一実施例を示すブロック図である。
図2本発明のシステム構成の一実施例を示す機能ブロック図である。
図3入力されるプログラムのデータ構造定義部分を示す図である。
図4本発明の好適な実施例において出力された、データ構造の表示を示す図である。
図5本発明の好適な実施例におけるデータ構造情報の概念図である。
図6本発明の好適な実施例におけるレイアウト情報の概念図である。
図7本発明の好適な実施例において出力された、データ構造の表示を示す図である。
図8本発明の好適な実施例において出力された、データ構造の表示を示す図である。
図9本発明の好適な実施例において出力された、データ構造の表示を示す図である。
図10本発明の好適な実施例において出力された、データ構造の表示を示す図である。
図11本発明の好適な実施例において表示されるデータ構造の入力及び出力の例を示す図である。
図12本発明の好適な実施例において表示されるデータ構造の入力及び出力の例を示す図である。
図13本発明の好適な実施例において表示されるデータ構造の入力及び出力の例を示す図である。
図14本発明の好適な実施例において、入力されたプログラムがデータ構造表示されるまでの処理手順を示すフローチャートである。
図15本発明の好適な実施例において、入力されたプログラムがデータ構造解析されるための処理手順を示すフローチャートである。
図16本発明の好適な実施例において、レイアウト情報を生成するための処理手順を示すフローチャートである。
図17本発明の好適な実施例において、データ構造を表示するための処理手順を示すフローチャートである。
図18本発明の好適な実施例において、データ構造を表示するための処理手順を示すフローチャートである。
図19本発明をマルチウインドウ環境で、対話式に実施したときの表示例を示す図である。
図20本発明の好適な実施例において採用される追加機能を説明する図である。
図21本発明の他の実施例において、入力されたプログラムがデータ構造表示されるまでの処理手順を示すフローチャートである。
図22本発明の他の実施例において、入力されたプログラムがデータ構造表示されるまでの処理手順を示すフローチャートである。
0083

--

0085

101プログラム
103データ構造解析部
105データ構造情報
107レイアウト情報生成部
109 レイアウト情報
111入力装置
113入力制御部
121表示装置
123表示装置制御
125デクレア文
127データ項目階層情報
129 データ項目名
130 データ項目
139 データ項目再定義情報
300 データ項目エントリ

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

関連する挑戦したい社会課題

関連する公募課題

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

新着 最近 公開された関連が強い技術

この 技術と関連性が強い人物

関連性が強い人物一覧

この 技術と関連する社会課題

関連する挑戦したい社会課題一覧

この 技術と関連する公募課題

関連する公募課題一覧

astavision 新着記事

サイト情報について

本サービスは、国が公開している情報(公開特許公報、特許整理標準化データ等)を元に構成されています。出典元のデータには一部間違いやノイズがあり、情報の正確さについては保証致しかねます。また一時的に、各データの収録範囲や更新周期によって、一部の情報が正しく表示されないことがございます。当サイトの情報を元にした諸問題、不利益等について当方は何ら責任を負いかねることを予めご承知おきのほど宜しくお願い申し上げます。

主たる情報の出典

特許情報…特許整理標準化データ(XML編)、公開特許公報、特許公報、審決公報、Patent Map Guidance System データ