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.