COBOL2002 ユーザーズガイド
条件翻訳を使用すると,翻訳変数を用いた条件式の真偽に従って,ソースコードの有効/無効を制御できます。翻訳変数は,原始プログラム中にDEFINEを書いて定義する方法と,コンパイル時に-Defineオプションを指定して定義する方法があります。
翻訳指令の詳細な構文規則および一般規則については,マニュアル「COBOL2002 言語 標準仕様編 3. 翻訳指令機能」を参照してください。
条件翻訳の使用例を,次に示します。
000100*>IFとDEFINED条件の例 000200 IDENTIFICATION DIVISION. 000300 PROGRAM-ID. IF-SYNTAX. 000400 DATA DIVISION. 000500 >>DEFINE CHR01 AS 'ABCD' 000600 WORKING-STORAGE SECTION. 000700 PROCEDURE DIVISION. 000800 >>IF CHR01 IS DEFINED 000810 *> 翻訳変数CHR01は定義されているのでこちらが有効になる 000900 DISPLAY '--- CHR01 IS DEFINED ---'. 001000 >>ELSE 001100 *> こちらの行はコンパイルの結果無効となる 001100 DISPLAY '--- CHR01 IS NOT DEFINED ---'. 001200 >>END-IF
000100 IDENTIFICATION DIVISION. 000200 PROGRAM-ID. TEST001. 000300 PROCEDURE DIVISION. 000400 000500 >>IF DEBUG IS DEFINED 000600 DISPLAY 'this is debug message'. 000700 >>END-IF
000100 IDENTIFICATION DIVISION. 000200 PROGRAM-ID. TEST001. 000300 DATA DIVISION. 000400 WORKING-STORAGE SECTION. 000500 PROCEDURE DIVISION. 000600 >>DEFINE EXD01 AS 10 000700 000800 >>EVALUATE EXD01 *> 翻訳変数 EXD01の値を評価する 000900 >>WHEN 3 001000 DISPLAY '--- 3 ---'. 001100 >>WHEN 15 001200 DISPLAY '--- 15 ---'. 001300 >>WHEN 9 THRU 11 *> 9から11の間にある場合 001400 DISPLAY '--- 9 THRU 11 ---'. *> ここが有効となる 001500 >>WHEN OTHER 001600 DISPLAY '--- WHEN OTHER ---'. 001700 >>END-EVALUATE
000100 IDENTIFICATION DIVISION. 000200 PROGRAM-ID. DEFINE01. 000300 DATA DIVISION. 000400 WORKING-STORAGE SECTION. 000500 >>DEFINE LEVEL AS 2 000600 PROCEDURE DIVISION. 000700 >>EVALUATE TRUE 000800 >>WHEN LEVEL < 3 *> ここが真 000900 DISPLAY 'lower'. 001000 >>WHEN LEVEL > 5 001100 DISPLAY 'higher'. 001200 >>WHEN OTHER 001300 DISPLAY 'other'. 001400 >>END-EVALUATE
000100 IDENTIFICATION DIVISION. 000200 PROGRAM-ID. DEFINE01. 000300 DATA DIVISION. 000400 WORKING-STORAGE SECTION. 000500 >>DEFINE LEVEL AS 2 000600 PROCEDURE DIVISION. 000700 >>EVALUATE TRUE 000800 >>WHEN LEVEL < 3 *> ここが真 000900 DISPLAY 'lower'. 001000 >>WHEN LEVEL > 5 001100 DISPLAY 'higher'. 001200 >>WHEN LEVEL < 5 *>ここも真だが,すでに真となるWHENが存在する。 001300 DISPLAY 'lower 2'. *> よってここは実行されない。 001400 >>WHEN OTHER 001500 DISPLAY 'other'. 001600 >>END-EVALUATE
ソースファイル名称:SAMPLE1.cbl 000100 IDENTIFICATION DIVISION. 000200 PROGRAM-ID. DEFINEOPTION. 000300 DATA DIVISION. 000400 WORKING-STORAGE SECTION. 000500 PROCEDURE DIVISION. 000600 >>IF CHR01 = 'ABCD' 000700 *> 翻訳変数CHR01は-DefineオプションでABCDと定義。 000750 *> よってこちらが真。 000800 DISPLAY '--- CHR01 IS "ABCD" ---'. 000900 >>ELSE 001000 *> こちらの行は偽 001100 DISPLAY '--- CHR01 IS NOT "ABCD" ---'. 001200 >>END-IF
All Rights Reserved. Copyright (C) 2013, 2016, Hitachi, Ltd.
All Rights Reserved. Copyright (C) 2002, 2011, Microsoft Corporation.