In version 2019 R1 we introduced new compiler configuration variable to inject COBOL code in all controls of a specific type at compile time.
iscobol.compiler.gui.where.defaults=...
01 s1.
03 ef1 entry-field
line 2 col 2 size 10.
03 ef2 entry-field
line 2 col 14 size 10.
03 ef3 entry-field
line 2 col 26 size 10.
03 pb1 push-button
line 5 col 10 size 10
title "Save" exception-value 1.
with the following compiler configuration:
iscobol.compiler.gui.push_button.defaults=flat, background-color -14675438
iscobol.compiler.gui.entry_field.defaults=border-color rgb x#dae1e5, \
border-width (0 0 2 0 )
the compiler will treat the source code as if it were written as:
01 s1.
03 ef1 entry-field
border-color rgb x#dae1e5,
border-width (0 0 2 0)
line 2 col 2 size 10.
03 ef2 entry-field
border-color rgb x#dae1e5,
border-width (0 0 2 0)
line 2 col 2 size 10.
03 ef3 entry-field
border-color rgb x#dae1e5,
border-width (0 0 2 0)
line 2 col 2 size 10.
03 pb1 push-button
flat, background-color -14675438
line 5 col 10 size 10
title "Save" exception-value 1.
Code injection also affects controls created with single display statement, so that:
display push-button
line 5 col 25 size 10
title "End" exception-value 27
handle in h-pb.
becomes:
display push-button flat, background-color -14675438
line 5 col 25 size 10
title "End" exception-value 27
handle in h-pb.
With code injection, an entire application can be recompiled without code changes.

By compiling with the following compiler configuration:
# Compiler.regexp to remove the 3D and "ERASE" styles when displaying the window
iscobol.compiler.regexp="(?i)( 3-D,)" "" \
"(?i)( 3-D)" "" \
"(?i)( ERASE,)" "" \
"(?i)( ERASE)" ""
#### code injection for controls ####
# add the gradient color on all windows
iscobol.compiler.gui.window.defaults= \
gradient-color-1 rgb x#FFFFFF \
gradient-color-2 rgb x#F2F5F9 \
gradient-orientation gradient-northeast-to-southwest
# add the transparent style to all labels, check-boxes and radio-buttons
iscobol.compiler.gui.label.defaults= transparent
iscobol.compiler.gui.check_box.defaults= transparent
iscobol.compiler.gui.radio_button.defaults= transparent
iscobol.compiler.gui.frame.defaults= transparent
# set the white color for all toolbars
iscobol.compiler.gui.tool_bar.defaults= background-Color rgb x#FFFFFF \
foreground-Color rgb x#000000
# add the flat style to all push buttons
iscobol.compiler.gui.push_button.defaults=flat
# add the underline style to all entry-fields
iscobol.compiler.gui.entry_field.defaults = border-width (0, 0, 2, 0) \
border-color rgb x#DAE1E5
The screen is transformed to this more modern looking screen.

Article ID: 322
Created: November 4, 2021
Last Updated: November 4, 2021
Author: Support KB Author
Online URL: https://support.veryant.com/phpkb/article.php?id=322