Hitachi

COBOL2002:翻訳指令の使用例(条件翻訳)

翻訳指令とは、COBOLコンパイラがCOBOLソースプログラムを翻訳するときに、「»」で始まる行をコンパイラに対する指令として処理する機能です。コンパイラは、本来のCOBOLプログラムの翻訳より前に、翻訳指令行の指示に基づいてソースプログラムを処理します。

翻訳指令の主な機能としては、条件翻訳があります。条件翻訳を使用すると、記述されたCOBOL原始プログラムの一部を有効、または無効にできます。このため、「プラットフォームごとの固有な処理」や「ユーザごとにカスタマイズしたい処理」などを一つのCOBOL原始プログラム中にまとめて記述できるようになり、保守性を向上させることができます。

<条件翻訳の使用例>

条件翻訳機能の一つであるIF指令(»IF)を使用した例で説明します。

(IF指令の使用例)
» IF 翻訳変数名 IS DEFINED
(COBOLソース行A)
»ELSE
(COBOLソース行B)
»END-IF

ここで記述した「翻訳変数」とは、本来のCOBOL原始プログラム中で使用する変数ではなく、翻訳指令だけに有効となる変数です。 翻訳変数には、既定義/未定義の状態があり、DEFINE指令(»DEFINE)、-Defineコンパイラオプションのどちらかで定義します。

(DEFINE指令による翻訳変数の定義)
» DEFINE 翻訳変数名
(-Defineコンパイラオプションによる翻訳変数の定義)
-Define 翻訳変数名

上記の例では、IF指令(»IF)によって、「翻訳変数名」が既定義かどうかをDEFINED条件で確かめています。その結果、次のように翻訳対象となるCOBOLソース行が選択されます。

翻訳変数の既定義/未定義 COBOLソース行A COBOLソース行B
既定義 翻訳対象 翻訳対象外
未定義 翻訳対象外 翻訳対象

条件翻訳には、IF指令のほかに、多分岐を扱えるEVALUATE指令(»EVALUATE)もあります。