COBCH1668 PERFORM 範囲の段落 "段落名 1" の "GO TO 段落名 2" は重複の原因になる

前述の COBCH1664 で示される PERFORM 範囲の重複は、“段落名 1” 段落内の 1 つ以上の GO TO 文によって発生します。
注:このエラー メッセージはマネージ COBOL にのみ該当し、ILSHOWPERFORMOVERLAP 指令を使用してコンパイルした場合に表示されます。

節内で段落ヘッダーの前に文があり、その文 (名前のない段落を構成) に PERFORM 範囲が重複している GO TO 文が含まれる場合、"段落名 1" は"{implied first paragraph} of section-name"として表示されます。

次の例では、段落 x1 の GO TO でエラーが発生します。修正方法の一例としては、GO TO 文を PERFORM 文に変更して、その後に任意の PERFORM 範囲の末尾プロシージャを参照する GO TO 文を続ける方法があります。ただし、他の PERFORM 範囲の構造の問題が、PERFORM 範囲の重複を引き起こす GO TO 文の原因となっている場合があります。

$set ilshowperformoverlap
...
01 i pic 9(4) binary value 0.

perform b1 thru e1.
perform b2 thru e2.
goback.
                 *>  Errors are displayed as follows:
b1.              *>  COBCH1663E Overlapping perform range: 2 entries
if i = 0         *>  COBCH1664E    perform range: b1 thru e1
   go to x1
end-if.
go to x2.

b2.              *>  COBCH1664E    perform range: b2 thru e2
if i = 0         *>  COBCH1668E       paragraph "x1" in perform range contains a "GO TO b1", which causes overlap
   go to x2
end-if.
           
x1.
display "In x1".
go to b1.

x2.
display "In x2".

e1.
display "In e1".

e2.
display "In e2".
...