Question:
How do I use compiler directives to conditionally include or exclude sections of code?
Answer:
Here are some examples of conditional compilation:
EVALUATE and WHEN in a bug test program:
id division. program-id. chinese. data division. working-storage section. >> EVALUATE CASE >> WHEN "TEST-1" 77 chinese-item pic n(2) value nx"4EAC". >> WHEN "TEST-2" 77 chinese-item pic n(1) value nx"4EAC". >> WHEN "TEST-3" 77 chinese-item pic n(1) usage national. >> END-EVALUATE procedure division. main-logic. display standard graphical window. display chinese-item. accept omitted.Then you can specify which variable to use by setting iscobol.compiler.const. You can set it in a compiler properties file:
iscobol.compiler.const.CASE=TEST-1or from the command line.
iscc -Discobol.compiler.const.CASE=TEST-1 chinese.cblto include the TEST-1 case.
>> DEFINE CASE AS "TEST-3"and write the program as:
id division. program-id. chinese. data division. working-storage section. >> IF CASE IS = "TEST-1" 77 chinese-item pic n(2) value nx"4EAC". >> ELSE >> IF CASE IS = "TEST-2" 77 chinese-item pic n(1) value nx"4EAC". >> ELSE >> IF CASE IS = "TEST-3" 77 chinese-item pic n(1) usage national. >> END-IF >> END-IF >> END-IF procedure division. main-logic. display standard graphical window. display chinese-item. accept omitted.In the above, CASE is a preprocessor constant set to either "TEST-1", "TEST-2" or "TEST-3".
id division. program-id. chinese. data division. working-storage section. >> IF TEST-1 IS DEFINED 77 chinese-item pic n(2) value nx"4EAC". >> ELSE >> IF TEST-2 IS DEFINED 77 chinese-item pic n(1) value nx"4EAC". >> ELSE >> IF TEST-3 IS DEFINED 77 chinese-item pic n(1) usage national. >> END-IF >> END-IF >> END-IF procedure division. main-logic. display standard graphical window. display chinese-item. accept omitted.and then compiled with this variable set in your compiler properties file:
iscobol.compiler.const.TEST-1=onor on your command line:
iscc -Discobol.compiler.const.TEST-1=1 chinese.cblYou can read more about the DEFINE, EVALUATE, and IF compiler directives in the isCOBOL SDK documentation, under the "Compiler and Runtime / Compiler / Compiler Directives" section
Article ID: 27
Created: August 28, 2009
Last Updated: August 4, 2022
Author: Support KB Author
Online URL: https://support.veryant.com/phpkb/article.php?id=27