COBOL2002 ユーザーズガイド
条件翻訳の結果,コンパイル対象とならなかった行を,無効行と呼びます。
COBOL2002では,コンパイルリスト上で,原始プログラム中の無効行となった部分を確認できます。また,コンパイルリストに無効行を出力しない機能もあります。
条件翻訳の結果無効行となった行は,コンパイルリストに'X'が出力されます。
また,コンパイルリストに無効行を出力したくない場合は,-SrcListオプションにNoFalsePathサブオプションを付けて指定します。
コンパイルリストに関係するその他のオプションについては,「付録D.1 リストの出力」を参照してください。
-SrcList,CopyAllオプションを指定した場合
D CP N ----+----1----+----2----+----3----+----4----+----5----+----6----+ 000100 IDENTIFICATION DIVISION. 000200 >>DEFINE CMPVAR1 AS -123456 000500 PROGRAM-ID. AAA. 000900 PROCEDURE DIVISION. 001000 >>IF CMPVAR1 IS DEFINED 001100 DISPLAY '--- test (1) ---'. 001200 DISPLAY '--- test (2) ---'. 001300 >>ELSE X 001400 DISPLAY '--- test (3) ---'. X 001500 DISPLAY '--- test (4) ---'. 001600 >>END-IF
-SrcList,CopyAll,NoFalsePathオプションを指定した場合
D CP N ----+----1----+----2----+----3----+----4----+----5----+----6----+ 000100 IDENTIFICATION DIVISION. 000200 >>DEFINE CMPVAR1 AS -123456 000500 PROGRAM-ID. AAA. 000900 PROCEDURE DIVISION. 001000 >>IF CMPVAR1 IS DEFINED 001100 DISPLAY '--- test (1) ---'. 001200 DISPLAY '--- test (2) ---'. 001300 >>ELSE 001600 >>END-IF
無効行の定義を,次に示します。
次に,各定義の例を示します。なお,例中の「X」は,その行が無効行となることを示します。
>>IFの>>ELSE側が無効な場合,>>IFや>>ELSEなどは無効行となりません。
>>DEFINE ABC 123 >>IF ABC = 123 DISPLAY 'OK'. >>ELSE X DISPLAY 'NG'. >>END-IF
>>IFの>>ELSE側が有効な場合の例です。
>>DEFINE ABC 123 >>IF ABC = 12345 X DISPLAY 'NG'. >>ELSE DISPLAY 'OK'. >>END-IF
>>EVALUATEの例です。
>>DEFINE CHAR01 AS 'ABCD' >>EVALUATE TRUE >>WHEN CHAR01 = 'ABCD' DISPLAY '0001'. DISPLAY '0002'. >>WHEN CHAR01 = 'XYZ' X DISPLAY '0003'. X DISPLAY '0004'. >>WHEN OTHER X DISPLAY 'OTHER'. >>END-EVALUATE
無効な領域にある場合は,>>IFなどの翻訳指令行自身も無効行となります。
>>DEFINE ABC 123 >>IF ABC = 123 DISPLAY 'OK'. >>ELSE X DISPLAY 'NG'. X >>IF ABC = 456 X DISPLAY 'OK'. X >>ELSE X DISPLAY 'NG'. X >>END-IF >>END-IF
無効な領域にある場合でも,>>SOURCE FORMAT指令は,無効行になりません(>>SOURCE FORMAT指令は,どこに指定されても有効となります)。
>>DEFINE ABC 123 >>IF ABC = 123 DISPLAY 'OK'. >>ELSE X DISPLAY 'NG1'. X DISPLAY 'NG2'. >>SOURCE FORMAT IS FREE X DISPLAY 'NG3'. X DISPLAY 'NG4'. >>END-IF
All Rights Reserved. Copyright (C) 2013, 2016, Hitachi, Ltd.
All Rights Reserved. Copyright (C) 2002, 2011, Microsoft Corporation.