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#DAE1E5The 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