Using Regular Expressions to replace text in your program
Estimated Reading Time: 2 MinutesRegular expressions can be used to replace text in your programs without changing your code. You do this by setting iscobol.compiler.regexp and compiling your code. The format is:
iscobol.compiler.regexp=<existing-value> <new-value> <existing-value> <new-value> ...Some common regular expression characters we use are:
+------+-------------------------------------------+------------------------------------------------+ | (?i) | Makes the following text case insensitive | (?i)STOP will catch "Stop", "STOP", and "stop" | +------+-------------------------------------------+------------------------------------------------+ | \\s+ | Space or spaces | Indicates one or more spaces in the text | +------+-------------------------------------------+------------------------------------------------+ | . | Period | Replaces one character | +------+-------------------------------------------+------------------------------------------------+
Examples: Comment out a line
iscobol.compiler.regexp=" RECORD" " * RECORD" iscobol.compiler.regexp="RECORDING MODE" "*> RECORDING MODE"Replace all 'STOP RUN's with 'GOBACK', ignoring letter case and spacing
iscobol.compiler.regexp="(?i)(STOP)\\s+(RUN)" "GOBACK"Change the name of copybooks
iscobol.compiler.regexp="acugui.def" "isgui.def" "acucobol.def" "iscobol.def"Another way to do this and make it more readable is to use the line extension backslash:
iscobol.compiler.regexp="acugui.def" "isgui.def" \ "acucobol.def" "iscobol.def" \ "crtvars.def" "iscrt.def"Replace text with spaces
A program that uses the special names "call-convention" would need to remove this line, since isCOBOL uses a configuration variable instead. So this regular expression replaces "call-convention is dynmaicStdCall" and "call-convention is WINAPI" with spaces.iscobol.compiler.regexp="(?i)(dynamicStdCall)" " " \ "(?i)(call-convention)\\s+(66)\\s+(is)" " " \ "(?i)(WINAPI)" " " \ "(?i)(call-convention)\\s+(74)\\s+(is)" " "Notes: - You can only specify this configuration variable one time, passing it a string of all of the regular expressions you need. If you set it twice, the second one will overwrite the first one. This can get a bit long but remember that you can use the line continuation backslash "\" at the end of a line. - This is a compiler configuration - it requires you to compile or recompile with it set.