COBOL2002 使用の手引 操作編


6.2.1 カバレージ情報

カバレージ機能が表示するカバレージ情報は,次のとおりです。どれも,翻訳単位ごとに割合を求め,小数点第2位以下を切り捨てた値を表示します。

C0メジャー

実行した文の割合を表す情報です。

C0メジャー=(実行が済んだ実行文の数)/(実行文の数)×100(%)

C1メジャー

処理が分岐する個所で,実行した分岐先の数の割合を表す情報です。

C1メジャー=(実行が済んだ分岐先の数)/(実行できる分岐先の数)×100(%)

S1メジャー

実行した呼び出し文の数の割合を表す情報です。

S1メジャー=(実行が済んだ呼び出し文の数)/(実行できる呼び出し文の数)×100(%)

なお,プログラムを修正したあと,修正個所に着目してカバレージ情報を蓄積することもできます。

差分C0メジャー

修正個所中の,実行した文の割合を表す情報です。

差分C0メジャー=(実行が済んだ実行文の数)/(実行文の数)×100(%)

差分C1メジャー

修正個所中の,処理が分岐する個所で実行した分岐先の数の割合を表す情報です。

差分C1メジャー=(実行が済んだ分岐先の数)/(実行できる分岐先の数)×100(%)

差分S1メジャー

修正個所中の,実行した呼び出し文の数の割合を表す情報です。

差分S1メジャー=(実行が済んだ呼び出し文の数)/(実行できる呼び出し文の数)×100(%)

注意事項
  • カバレージ情報は,ブロックごとに蓄積します。カバレージのブロックは,順次実行される無条件文の集まりで,条件文の条件句の直前までが原則として一つのブロックとなります。ブロックの先頭の文を実行したときにブロック全体が実行されたと判断します。ブロック中の文で実行時エラーが発生した場合も,そのブロックは実行されたと判断します。

ブロックを分ける一般規則と例
  • それ自身でブロックとなる文または句

    (1)制御を2方向以上に分岐させる文

    ・IF文・条件指定のある文

    ・PERFORM文(TIMES指定,UNTIL指定(VARYING指定のUNTILを含む)のPERFORM文)

    ・EVALUATE文

    ・SEARCH文

    ・GO TO文(DEPENDING ON指定付きの文,DEPENDING ON指定はこのブロックに含まれる)

  • 直前でブロックを区切る文または句

    (1)2方向以上に分岐

    ・THEN

    ・ELSE

    ・条件指定

    ・手続き名〔THRU 手続き名〕 TIMES指定,UNTIL指定(VARYING指定のUNTILを含む)のPERFORM文

    ・WHEN

    ・WHEN OTHER

    ・AT END(SEARCH文)

    ・手続き名(DEPENDING ON指定付きのGO TO文)

    (2)単独の制御の開始

    ・手続き部分の最初の文

    ・宣言部分の節名

    ・手続き部分の節名

    ・段落名

    ・ENTRY文

    (3)制御の合流の直前

    ・範囲句(END−動詞)

  • 直後でブロックを区切る文または句

    (1)制御を1方向に分岐させる文

    ・CALL文(条件指定がない文)

    ・PERFORM文(TIMES指定,UNTIL指定(VARYING指定のUNTILを含む)がない文)

    ・SORT文(INPUT PROCEDUREまたはOUTPUT PROCEDUREがある文)

    ・MERGE文(OUTPUT PROCEDUREがある文)

    ・INVOKE文(条件指定がない文)

    ・INITIALIZE文(関数一意名指定あり)

    ・INSPECT文(同上)

    ・MOVE文(同上)

    ・COMPUTE文(同上)

    ・STRING文(同上)

    ・UNSTRING文(同上)

    (2)制御の終わり

    ・STOP文

    ・EXIT PROGRAM文

    ・GOBACK文

    ・EXIT METHOD文

    ・EXIT FUNCTION文

    ・EXIT文

    ・GO TO文(DEPENDING ON指定なし)

    ・EXIT PERFORM文

    ・EXIT USE文

    ・IF文,SERCH文のNEXT SENTENCE

    ・RESUME文

    (3)制御の終わりになる可能性のある文

    ・OPEN文

    ・CLOSE文

    ・READ文(条件指定なし)

    ・DELETE文(条件指定なし)

    ・WRITE文(条件指定なし)

    ・REWRITE文(条件指定なし)

    ・START文(条件指定なし)

    ・SORT文(USINGまたはGIVING指定がある文)

    ・MERGE文(GIVING指定がある文)

    ・RAISE文

  • C0メジャーは,次の文を除く文を対象とします。

    ・原始文操作

     COPY文

     REPLACE文

     INCLUDE文

    ・宣言文

     USE文

    ・覚え書きの文(ENTER文,うちPERFORM文の外にあるEXIT PERFORM文)

  • C0メジャーは,次の文を対象とします。

    ・上記以外の文(データベースアクセス機能で用いる文,データコミュニケーション機能で用いる文,EXEC SQL文も含む)

    ・NEXT SENTENCE指定(IF文,SEARCH文)

  • C1メジャーの対象となる文は,次のとおりです。絶対に制御が渡らない分岐も対象にします。

    分岐方向

    備考

    IF文

    2

    ・THEN

    ・ELSE

    EVALUATE文

    WHENの数

    ・WHENへの分岐

    ・WHEN OTHER

    GO TO文(DEPENDING ON指定つき)

    手続き名の数+1

    ・手続き名への分岐

    ・手続き名への分岐なし

    PERFORM文(TIMES指定,UNTIL(VARYING指定のUNTILを含む)指定)

    2

    ・ループする

    ・ループしない

    SEARCH文

    WHENの数+1

    ・WHENへの分岐

    ・AT ENDへの分岐

    条件指定のある文

    2

    ・条件〜への分岐

    ・NOT条件〜への分岐

注※

条件指定のある文を次に示します。

条件指定

AT END ,NOT 〜

READ,RETURN

ON SIZE ERROR,NOT 〜

ADD,COMPUTE,DIVIDE,MULTIPLY,SUBTRACT

ON OVERFLOW ,NOT 〜

STRING,UNSTRING

ON EXCEPTION ,NOT 〜

CALL,ACCEPT

AT EOP ,NOT 〜

WRITE

INVALID KEY ,NOT 〜

DELETE,READ,REWRITE,START,WRITE

ON OVERFLOW

CALL

  • S1メジャーの対象となる呼び出し文は,次のとおりです。

    ・CALL文

    ・ファクトリおよびインスタンスオブジェクトのメソッド呼び起こしで指定したINVOKE文

    GO TO文の直後などのように制御が渡らない文も対象にします。CALL文の条件指定の有無,呼び出し先プログラムの実行可,不可には依存しません。