Hitachi

COBOL2002 Professional Tool Kit データ影響波及分析ガイド


12.3.2 暗黙的影響2項関係

実行文の影響2項関係のうち,暗黙的な作用対象に対する影響2項関係である暗黙的影響2項関係の説明です。

別名の暗黙的影響2項関係

日立のCOBOL言語仕様で,記憶領域が同じで名前が異なるデータ項目(別名のデータ項目)には,次のものがあります。

[別名1]被再定義項目と再定義項目(REDEFINES句)※1

[別名2]被再命名項目と再命名項目(RENAMES句)※2

[別名3]集団項目と従属項目

[別名4]反復データ項目

[別名5]プログラム間で使用される外部データ項目(EXTERNAL句)

[別名6]ADDRESSED句指定のデータ項目とアドレス名にアドレスが格納されたデータ項目

注※1

被再定義項目が集団項目の場合,その従属項目も再定義項目とは別名関係です。さらに,再定義項目が集団項目なら領域を共有するその従属項目(集団項目または基本項目)とも別名関係です。

また,再定義項目が集団項目の場合,その従属項目も被再定義項目とは別名関係です。さらに,被再定義項目が集団項目なら領域を共有するその従属項目(集団項目または基本項目)とも別名関係です。

例)
01 A.
    02 B.
       03 C.
          04 D PIC X.
       03 E PIC X(2).
    02 F REDEFINES B.
       03 G PIC X(2).
       03 H PIC X.

被再定義項目(B)と再定義項目(F)の関係に加えて,次の関係も別名関係です。

 CとF CとG DとF DとG EとF EとG EとH

再定義項目(F)と被再定義項目(B)の関係に加えて,次の関係も別名関係です。

 GとB(GとC)(GとD)(GとE)HとB(HとE)

()の部分は上記と重複を示します。

注※2

被再命名項目の上位集団項目も,再命名項目と別名関係です。また,被再命名項目が集団項目の場合,その従属項目も再命名項目と別名関係です。

これらのデータ項目の場合,一方のデータ項目が影響を受けると,そのデータ項目の別名のデータ項目も同じ影響を受けます。

被再定義項目と再定義項目の暗黙的影響2項関係の例を次の図に示します。この図では,次に示すソースプログラムの影響波及の連鎖(影響2項関係の連鎖)を説明しています。

     01 A PIC X(3) VALUE 'ABC'. …[1]
     01 B PIC X(3).
     01 C REDEFINES B PIC X(3).
     01 D PIC X(3).
     01 E PIC X(3).
 
     MOVE A  TO  B.  …[2]
     MOVE B  TO  D.  …[3]
     MOVE C  TO  E.  …[4]

[図データ]

実行文[2]で被再定義項目Bがデータ項目Aから影響を受けた場合,同じ影響を再定義項目Cも受けます。そのため,明示的影響2項関係[2]だけでなく,点線矢印のような暗黙的影響2項関係(再定義項目Cは実行文[2]には記述されていません)も解析されないと,正しい影響範囲解析の結果となりません。

影響範囲を漏れなく解析するには,[別名1]〜[別名3]の暗黙的影響2項関係も必要です。データ影響波及分析では,別名に対する暗黙的影響2項関係も解析します。ソースファイルをわたる[別名4][別名5]については,ソースファイルの解析時に暗黙的影響2項関係を抽出できないため,特殊な実装方法となります。詳細については,「12.3.3 ソースファイルをわたった影響2項関係」を参照してください。

ただし,明示的影響2項関係,または暗黙転記の暗黙的影響2項関係で作用対象でない別名の暗黙的影響2項関係は,影響範囲を漏れなく解析するのに必要でないため,そのデータ項目は抽出対象となりません。この別名を未使用の影響波及データ項目といいます。

未使用の影響波及データ項目の例を次の図に示します。この図では,次に示すソースプログラムの影響波及の連鎖を説明しています。

     01 A PIC X(3) VALUE "ABC". …[1]
     01 B PIC X(3).
     01 C REDEFINES B PIC X(3).
     01 D PIC X(3).
     01 E PIC X(3).
     01 F REDEFINES B PIC X(3).
 
     MOVE A  TO  B. …[2]
     MOVE B  TO  D. …[3]
     MOVE C  TO  E. …[4]

[図データ]

データ項目Fは,データ項目Cと同様にデータ項目Bと別名関係にありますが,明示的な作用対象となる実行文や,暗黙転記の作用対象となる実行文がありません。このため,データ項目Aからの暗黙的影響2項関係は抽出されないで,未使用の影響波及データ項目となります。

なお,未使用の影響波及データ項目は,影響範囲解析の結果として影響波及データ項目一覧だけに表示されます。

暗黙転記の暗黙的影響2項関係

次の表に示す実行文では,環境部やデータ部で指定したデータ項目や特殊レジスタとの間の暗黙的な転記(実行文に明示的に指定された作用対象間の転記ではない転記)を実行するものがあります。

暗黙転記を実行文で展開する機能

暗黙転記を内部的に展開する実行文

画面機能(SCREEN SECTION)

ACCEPT,DISPLAY

画面機能(WINDOW SECTION)

ACCEPT,DISPLAY,ERASE,REPLY,SET

画面機能(通信節)

SEND,RECEIVE,TRANSCEIVE,DISABLE

データコミュニケーション機能

SEND,RECEIVE,ENABLE,DISABLE

データベースアクセス機能

埋め込みSQL文(EXEC SQL文,END-EXEC)

報告書作成機能

INITIATE,GENERATE,SUPPRESS,TERMINATE

入出力機能

OPEN,START,READ,WRITE,REWRITE,DELETE,CLOSE,UNLOCK

整列併合機能

SORT,MERGE,RETURN,RELEASE

上記の表の暗黙転記も,暗黙的影響2項関係を含んでいます。データ影響波及分析で暗黙的影響2項関係の抽出対象とする暗黙転記を次の表に示します。

表12‒9 暗黙転記の暗黙的影響2項関係

項番

実行文

影響2項関係

影響を与える作用対象

影響を受ける作用対象

1

PROCEDURE DIVISION

データ記述項のVALUE句の定数

データ記述項のデータ項目

2

入出力文※1

ファイル名

ファイル記述項のFILE STATUS句のデータ項目

3

RETURNING指定のないCALL文

返却項目(RETURNING指定がない場合はRETURN-CODE特殊レジスタ)

CALL文を含むプログラムのRETURN-CODE特殊レジスタ

4

READ文

RETURN文

ファイル名

ファイル名に関連するレコード※2

ファイル名に関連するレコード※2

INTO指定に指定されたデータ項目

5

集団項目指定のINITIALIZE文

(REPLACING ALPHABETIC無)

SPACES

(REPLACING ALPHABETIC有)

定数/データ項目

英字の基本従属項目

(REPLACING ALPHANUMERIC無)

SPACES

(REPLACING ALPHANUMERIC有)

定数/データ項目

英数字の基本従属項目

(REPLACING ALPHANUMERIC-EDITED無)

SPACES

(REPLACING ALPHANUMERIC-EDITED有)

定数/データ項目

英数字編集の基本従属項目

(REPLACING BOOLEAN無)

ZEROS

(REPLACING BOOLEAN有)

定数/データ項目

ブールの基本従属項目

(REPLACING NATIONAL無)

SPACES

(REPLACING NATIONAL有)

定数/データ項目

日本語の基本従属項目

(REPLACING NATIONAL-EDITED無)

SPACES

(REPLACING NATIONAL-EDITED有)

定数/データ項目

日本語編集の基本従属項目

(REPLACING NUMERIC無)

ZEROS

(REPLACING NUMERIC有)

定数/データ項目

数字の基本従属項目

外部浮動小数点の基本従属項目

(REPLACING NUMERIC-EDITED無)

ZEROS

(REPLACING NUMERIC-EDITED有)

定数/データ項目

数字編集の基本従属項目

(REPLACING OBJECT-REFERENCE無)

NULL

(REPLACING OBJECT-REFERENCE有)

定数/データ項目

オブジェクト参照の基本従属項目

6

CORRESPONDING指定のMOVE文,

ADD文,SUBTRACT文

送り出し集団項目の基本従属項目※3

受け取り集団項目の基本従属項目※3

7

条件名の構文のSET文

条件名

条件名の属す条件変数

注※1

CLOSE文,DELETE文,OPEN文,READ文,REWRITE文,START文,WRITE文を示します。

注※2

ファイルが複数のレコードを持つ場合は,レコードの数だけ影響2項関係を抽出します。

注※3

対応する基本従属項目の数分の影響2項関係を抽出します。

文で使用されている暗黙的影響2項関係の抽出の対象になった暗黙的なデータ項目の参照に対しては,そのデータ項目が影響波及元データ項目や影響波及先データ項目になった場合は,そのデータ項目の暗黙参照によって文が影響波及元コードや影響波及先コードとして扱われます。

(例)READ文のファイルのレコードは,影響2項関係の抽出の対象なので,そのレコードが影響波及元データ項目になった場合,READ文は影響波及元コードとして扱われます。

文で使用されている暗黙的影響2項関係の抽出の対象にならない暗黙的なデータ項目の参照に対しては,そのデータ項目が影響波及元データ項目や影響波及先データ項目になったとしても,そのデータ項目の暗黙参照によって文が影響波及元コードや影響波及先コードとして扱われることはありません。ただし,条件で現れた条件名による条件変数の暗黙参照は除きます。

(例)ファイル記述項のLINAGE句に書かれたデータ項目は,WRITE文で暗黙的に参照されますが,影響2項関係の抽出の対象になっていないため,そのデータ項目が影響波及先データ項目になったとしても,それによってWRITE文が影響波及先コードとして扱われることはありません。