Framework improvements
Performance of CALL statements has been greatly improved, with up to 55% better performance compared to the previous version. New configuration properties and new library routines have been introduced.
Performance of CALL statements
Performance of CALL statements have been improved across the board, especially when using CALL/CANCEL statements under code_prefix, the feature that allows hot updates of running programs. Code prefix proves especially useful in server environments, for example when running under isCOBOL Server.
Refining class loading, and allowing developers to control it programmatically has achieved these improvements. When using code_prefix in previous versions, the first call and each subsequent call to the program after a cancel would run a check on the file system to see if the file had been updated since the last call. If so, the runtime unloaded the old version of the program and loaded the new. The check can be time consuming if executed frequently. Developers can now use the new iscobol.code_prefix.reload=false property to disable automatic reloading and leverage the new library routine C$UNLOAD to unload the program manually and allow updating.
Another improvement concerns remote calls configured using the remote.code_prefix property, which leverages more optimized runtime TCP communications, and does not need source code modification to enable performance gains in calls using code_prefix or the classpath.
A table of performance gains is shown in the picture below and shows a performance comparison between isCOBOL 2018R2 and isCOBOL 2019R1. The tests were run in Windows 10 64-bit on an Intel Core i5 Processor 4440+ clocked at 3.10 GHz with 8GB of RAM, using Oracle JDK1.8.0_192. All times are in seconds.
The called program contains a linkage group data item with 50 child items. The number of CALL/CANCEL iterations is 10,000.
The code_prefix tests under 2019R1 are in conjunction with code_prefix.reload=false
New configuration properties
New configuration properties have been introduced in the Framework:
iscobol.code_prefix.reload=false |
to disable the automatic class reload, as discussed in the performance improvement section of this document.
New configuration properties are used for starting up programs with .istc configuration files:
• iscobol.default_program=PGM to specify the main program to execute when it's not passed
• iscobol.default_options=options to specify the options for isCOBOL execution (standalone or thin client)
Additional configuration properties:
• iscobol.call_run.sync=true to execute the CALL RUN synchronously instead of asynchronously
• iscobol.esql.indicator_trunc_on_call=false to set the indicator variable to 0 when the stored procedure’s output parameter value doesn’t fit the host variable
• iscobol.file.indd=myindd to associate custom file handlers to the files specified by INDD directive
• iscobol.file.outdd=myoutdd to associate custom file handlers to the files specified by OUTDD directive
• iscobol.gui.entryfield.notify_change_delay=n to affect all entry-fields
• iscobol.key.default_shortcuts_enabled=true to intercept shortcuts like Ctrl+C
• iscobol.upper_lower_method=n default value 1, where n can be:
o 1, to use the method of String.toUpperCase / toLowerCase
o 2, to use the method of Character.toUpperCase / toLowerCase
Enhanced push button title position
Push buttons have been enhanced to allow finer control of title placement when a large bitmap is assigned to the button. A title can now be positioned relative to the button bitmap when a bitmap fully covers the button surface.
The picture below shows the result of the following code snippet which applies the new position to the third button:
modify pb-3 title-position TITLE_OVERLAPPED_BITMAP_BOTTOM_RIGHT |
New library routines
The new C$UNLOAD routine can be used to unload programs loaded in memory without restarting the application. In order to take advantage of this new feature, you need to configure the application to be executed with “code_prefix” class loader as well as set the following configuration property:
iscobol.code_prefix.reload=false |
Two new library routines have been implemented to delete or rename C-TREE files on the
server side.:
• C$FSDELETE to delete indexed files using the File Manager’s internal API
• C$FSRENAME to rename indexed files using the File Manager’s internal API
Miscellaneous routines added in the newest release of isCOBOL 2019 R1 include the following:
• CBL_EXEC_RUN_UNIT can be used to run a unit that inherits the environment variables of the calling program
• C$ENCRYPT and C$DECRYPT can encrypt and decrypt a file using several cryptographic algorithms, as configured in the iscobol.crypt.algorithm property, such as:
AES | Advanced Encryption Standard as specified by NIST in FIPS 197 |
AESWrap | The AES key wrapping algorithm as described in RFC 3394 |
ARCFOUR | A stream cipher believed to be fully interoperable with the RC4 cipher |
Blowfish | The Blowfish block cipher designed by Bruce Schneier |
CCM | Counter/CBC Mode, as defined in NIST Special Publication SP 800-38C |
DES | The Digital Encryption Standard as described in FIPS PUB 46-3 |
DESede | Triple DES Encryption (also known as DES-EDE, 3DES, or Triple-DES) |
ECIES | Elliptic Curve Integrated Encryption Scheme |
GCM | Galois/Counter Mode, as defined in NIST Special Publication |
RC2 | Variable-key-size encryption algorithms developed by Ron Rivest |
RC4 | Variable-key-size encryption algorithms developed by Ron Rivest |
RC5 | Variable-key-size encryption algorithms developed by Ron Rivest |
RSA | Encryption algorithm as defined in PKCS #1 |
• The library routine C$FORNAME can be used to check if a class is available on the system.