JP5073767B2 - Cobolソースコードチェックプログラム、cobolソースコードチェックシステム - Google Patents
Cobolソースコードチェックプログラム、cobolソースコードチェックシステム Download PDFInfo
- Publication number
- JP5073767B2 JP5073767B2 JP2010027222A JP2010027222A JP5073767B2 JP 5073767 B2 JP5073767 B2 JP 5073767B2 JP 2010027222 A JP2010027222 A JP 2010027222A JP 2010027222 A JP2010027222 A JP 2010027222A JP 5073767 B2 JP5073767 B2 JP 5073767B2
- Authority
- JP
- Japan
- Prior art keywords
- source code
- cobol source
- cobol
- statement
- code check
- 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 - Fee Related
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Description
図1は、本実施の形態1に係るCOBOLソースコードチェックプログラム110を実行するコンピュータ100および関連するデータの入出力を示す図である。コンピュータ100は、COBOLプログラムのチェック作業を行うために用いるコンピュータである。
COBOL言語では、複数のデータを配列状に格納する変数の一種として、テーブルと呼ばれるものが用いられる。このテーブルは、はじめに最大サイズを指定しておき、その最大サイズ内でデータを保持する変数である。最大サイズを超えてテーブルにアクセスすることは、不正な処理として禁止される。
COBOL言語では、IFステートメントに対応するEND−IFステートメントを記述しなくても、ピリオドによりIFステートメントの終端を記述することができる。しかし、ピリオドは見落としやすいため、ソースコードのメンテナンス担当者がソースコードを誤読したり、誤修正したりする要因となる。そこで本発明に係るCOBOLソースコードチェックプログラム110は、IFステートメントに対応するEND−IFステートメントが存在しているか否かをチェックすることとした。
COBOLソースコードチェックプログラム110は、COBOLソースコード200の構文を解析し、木構造のデータ(構文木)に変換して、メモリまたはHDDなどの記憶装置上に記憶する。1つのCOBOLソースコード200に対して1つの構文木が生成される。構文木の各構成要素には、COBOLソースコード200を構成する構文要素が格納される。
COBOLソースコードチェックプログラム110は、ステップ1で生成した構文木の構成要素が保持しているCOBOLソースコード200の構文要素を走査する。COBOLソースコードチェックプログラム110は、チェック規則データ300が定義しているチェック規則とCOBOLソースコード200の構文要素を照らし合わせながら、COBOLソースコード200の記述エラーをチェックする。
本ステップでは、構文木の個々の構成要素に対してエラーチェックを行うのみならず、複数の構成要素の組み合わせが適切であるか否かなど、複数の構成要素に対してエラーチェックを行う場合もある。
COBOLソースコードチェックプログラム110は、ステップ2の結果を、例えばCSV(Comma Separated Value)などの形式で出力する。
図3は、図2に示すCOBOLソースコード200の構文木を示す図である。ここでは記載の都合上、「PROCEDURE」DIVISIONの構文木のみを示した。COBOLソースコードチェックプログラム110は、COBOLソースコード200の構文要素と階層構造を解析し、図3に示すような構文木を生成する。構文木はメモリなどの一時記憶装置内にプログラム処理上のオブジェクトとして記憶してもよいし、構文木の内容を記述した構文木データをHDDに格納してもよい。
COBOLソースコードチェックプログラム110は、COBOLソースコード200の構文要素をソースコードのまま構文木に格納するのではなく、必要に応じて構文要素をカテゴリ分けする。例えば、IFステートメント、EVALUATEステートメントなどの、条件文を持つステートメントに、「CONDITION」という構成要素を付与し、その配下に実際の条件文を格納する。ここでいう条件文とは、例えば不等式や等式が成立するか否かを判定する際の条件式に相当する。
図4は、複数項目を有するデータ変数を探索する様子を示す図である。COBOLソースコードチェックプログラム110は、構文木を走査し、複数項目を有するデータ変数を探索する。具体的には、括弧()を添えているデータ項目を探索する。また、()内の添字もデータ項目とセットにして記録しておく。なお、データ項目を部分参照する構文要素は、本ステップの対象外とする。図4に示す例では、データ項目「DATA01」とその添字「COUNTER」が本ステップの探索対称となる。
本ステップは、サイズ制限のあるデータ項目を探索し、サイズ超過アクセスの問題を引き起こす可能性のあるソースコードを探し出す起点とする意義がある。
COBOLソースコードチェックプログラム110は、COBOLソースコード200の「DATA」DIVISIONの構文木(図示せず)を走査し、ステップ2で探索したデータ項目(ここではDATA01)の定義を探索する。
COBOLソースコードチェックプログラム110は、ステップ3で探索したデータ項目自身の定義、またはデータ項目が属する集団項目に、「OCCURS」ステートメントが宣言されているか否かをチェックする。「OCCURS」ステートメントが宣言されている場合は、その数値とデータ項目名を記録する。図2に示したCOBOLソースコード200の例では、「DATA01」が所属する集団項目「TABLE01」に「OCCURS」ステートメントが宣言されているので、その数値「100」と「DATA01」をセットにして記憶する。
図5は、条件文を探索する様子を示す図である。COBOLソースコードチェックプログラム110は、COBOLソースコード200の「PROCEDURE」DIVISIONの構文木を、ステップ2で探索したデータ項目(ここではDATA01)から遡って走査し、条件文を探索する。ステップ1で説明した通り、条件文を持つ構成要素は必ず「CONDITION」構成要素を持つので、「CONDITION」を親ノードから順に探索すればよい。
本ステップは、データ項目の最大サイズを超えてそのデータ項目にアクセスする処理を引き起こす可能性のある条件文を洗い出す意義がある。
図6は、テーブル定義に合致する条件文を探索する様子を示す図である。COBOLソースコードチェックプログラム110は、ステップ5で探索した条件文の構文木のうち、ステップ2で記録した()内の添字に合致するものを探索する。図6に示した例では、ステップ2で記録した添字「COUNTER」が、「CONDITION」配下の「COUNTER>200」として見つかる。
COBOLソースコードチェックプログラム110は、ステップ4で取得したテーブルサイズと、ステップ5で取得した条件文とを比較し、テーブルサイズを超過するアクセスが生じるか否かを検証する。ここでは、ステップ4で取得した「OCCURS」ステートメントが指定するテーブルサイズが「100」であるのに対し、ステップ5で取得した条件文は「200」を指定している。したがって、COBOLソースコードチェックプログラム110は、「COUNTER>200」が記述エラーであるものとみなす。
図7は、本発明の実施の形態2に係るCOBOLソースコードチェックシステム1000の構成図である。COBOLソースコードチェックシステム1000は、実施の形態1で説明したコンピュータ100、ホスト400、共有サーバ500を有する。
Claims (3)
- COBOLソースコードのエラーをチェックする処理をコンピュータに実行させるプログラムであって、前記コンピュータに、
COBOLソースコードを読み込むステップと、
前記COBOLソースコードの構文を解析し、前記COBOLソースコードの構文要素を構成要素として保持する構文木を生成するステップと、
前記構文木の構成要素が保持している前記COBOLソースコードの構文要素をチェックするチェックステップと、
を実行させ、
前記チェックステップでは、前記コンピュータに、
COBOL言語のテーブルを参照し、またはデータを書き込むテーブルアクセス処理が前記構文木内に存在するか否かをチェックするステップと、
前記テーブルアクセス処理が存在する場合には、前記テーブルのサイズを超えて前記テーブルにアクセスするステートメントが存在するか否かをチェックするステップと、
前記テーブルのサイズを超えて前記テーブルにアクセスするステートメントが存在する場合は前記COBOLソースコードにエラーがあると判定するステップと、
を実行させることを特徴とするCOBOLソースコードチェックプログラム。 - 前記チェックステップでは、前記コンピュータに、
PERFORMステートメント内にある括弧が付与されたデータ項目を探索するステップと、
前記構文木内から前記データ項目に対応するOCCURSステートメントとそのOCCURSステートメントが宣言する前記テーブルのサイズを探索するステップと、
前記構文木内の前記データ項目から遡って、前記テーブルに前記データ項目をセットするステートメントの繰返し条件を探索するステップと、
前記繰返し条件が前記テーブルのサイズを超過しているか否かをチェックするステップと、
前記テーブルのサイズを超過している場合は前記COBOLソースコードにエラーがあると判定するステップと、
を実行させることを特徴とする請求項1記載のCOBOLソースコードチェックプログラム。 - 請求項1または請求項2記載のCOBOLソースコードチェックプログラムを実行するコンピュータと、
前記COBOLソースコードが参照している他のCOBOLソースコードを、前記COBOLソースコードまたは前記他のCOBOLソースコードが配置されているホストから定期的に取得するサーバと、
を有することを特徴とするCOBOLソースコードチェックシステム。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2010027222A JP5073767B2 (ja) | 2010-02-10 | 2010-02-10 | Cobolソースコードチェックプログラム、cobolソースコードチェックシステム |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2010027222A JP5073767B2 (ja) | 2010-02-10 | 2010-02-10 | Cobolソースコードチェックプログラム、cobolソースコードチェックシステム |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2011164954A JP2011164954A (ja) | 2011-08-25 |
| JP5073767B2 true JP5073767B2 (ja) | 2012-11-14 |
Family
ID=44595561
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2010027222A Expired - Fee Related JP5073767B2 (ja) | 2010-02-10 | 2010-02-10 | Cobolソースコードチェックプログラム、cobolソースコードチェックシステム |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP5073767B2 (ja) |
Family Cites Families (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP3029368B2 (ja) * | 1993-11-30 | 2000-04-04 | 株式会社東芝 | プログラム誤り検出方法および誤り検出装置 |
| JPH1173328A (ja) * | 1997-08-29 | 1999-03-16 | Nec Corp | コーディング規約チェックシステム |
| JP3414319B2 (ja) * | 1999-04-28 | 2003-06-09 | 日本電気株式会社 | データ検索装置、方法及び記録媒体 |
| JP2005190330A (ja) * | 2003-12-26 | 2005-07-14 | Matsushita Electric Ind Co Ltd | ソースプログラムのレビュー支援システム |
| JP4818652B2 (ja) * | 2005-07-22 | 2011-11-16 | 株式会社沖データ | 端末管理システム |
| JP4914609B2 (ja) * | 2005-12-28 | 2012-04-11 | 富士通株式会社 | ソースコード問題予測プログラム |
-
2010
- 2010-02-10 JP JP2010027222A patent/JP5073767B2/ja not_active Expired - Fee Related
Also Published As
| Publication number | Publication date |
|---|---|
| JP2011164954A (ja) | 2011-08-25 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| Zhong et al. | Squirrel: Testing database management systems with language validity and coverage feedback | |
| US12093389B2 (en) | Data traffic characterization prioritization | |
| CN109992970B (zh) | Java反序列化漏洞检测系统和方法 | |
| Ocariza et al. | An empirical study of client-side JavaScript bugs | |
| EP2420931B1 (en) | Solving hybrid constraints to generate test cases for validating a software module | |
| He et al. | Sofi: Reflection-augmented fuzzing for javascript engines | |
| US9529662B1 (en) | Dynamic rule-based automatic crash dump analyzer | |
| EP2407887B1 (en) | Solving hybrid constraints to validate specification requirements of a software module | |
| US20120072988A1 (en) | Detection of global metamorphic malware variants using control and data flow analysis | |
| US9256519B2 (en) | Using linked data to determine package quality | |
| US20250013753A1 (en) | Systems and methods for reverse engineering-based detection of vulnerabilities | |
| JP6817469B2 (ja) | コンピュータシステムの脅威検出を改善するためのアプリケーション間依存性分析 | |
| US9087137B2 (en) | Detection of custom parameters in a request URL | |
| Jaeger et al. | Normalizing security events with a hierarchical knowledge base | |
| Mrad et al. | Babeltrace: A collection of transducers for trace validation | |
| JP5073767B2 (ja) | Cobolソースコードチェックプログラム、cobolソースコードチェックシステム | |
| Manthey et al. | Spybug: Automated bug detection in the configuration space of SAT solvers | |
| Mariano et al. | Analyzing graph-based algorithms employed to generate test cases from finite state machines | |
| Borzykh et al. | Detecting Code Security Breaches by Means of Dataflow Analysis | |
| Tsfaty et al. | Malicious source code detection using a translation model | |
| CN119249436A (zh) | 大型项目代码库代码审计方法及工具 | |
| US10157049B2 (en) | Static analysis with input reduction | |
| Kuliamin | A survey of software dynamic analysis methods | |
| CN119848841A (zh) | 一种代码分析方法及相关设备 | |
| CN102053909A (zh) | 测试程序生成装置 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20120528 |
|
| TRDD | Decision of grant or rejection written | ||
| A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20120814 |
|
| A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20120822 |
|
| R150 | Certificate of patent or registration of utility model |
Ref document number: 5073767 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20150831 Year of fee payment: 3 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
| R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| LAPS | Cancellation because of no payment of annual fees |